У меня есть задание, взять текст который пользователь вводит на сайте, отправить этот текст к исполняемому файлу который синтезирует речь (этот файл пример из туториала по синтезу речи от тинькоф апи) и вывести получившееся аудио обратно к пользователю
у меня есть файл urls.py, который находится по пути /mainst4o.beget.tech/Synthesize/main/urls.py
вот содержимое
from django.urls import path
from . import views
urlpatterns = [
path('', views.index),
path('process_text/', views.process_text, name='process_text'),
]
и есть файл views.py который находится по пути /mainst4o.beget.tech/Synthesize/main/views.py
содержимое файла
from voicekit_examples.python.snippets.tts_synthesize_linear16_to_wav import build_request
from django.http import HttpResponse
from django.shortcuts import render
import subprocess
import requests
def process_text(request):
if request.method == 'POST':
user_text = request.POST.get('user_text')
# build_request(user_text)
tts_synthesize_linear16_to_wav.build_request(user_text)
return HttpResponse(user_text)
def index(request):
return render(request, 'maintemplate/index.html')
так же есть файл tts_synthesize_linear16_to_wav.py который находится по пути /mainst4o.beget.tech/Synthesize/main/voicekit_examples/python/snippets/tts_synthesize_linear16_to_wav.py
содержимое файла
#!/usr/bin/env python3
import sys
sys.path.append("..")
from tinkoff.cloud.tts.v1 import tts_pb2_grpc, tts_pb2
from auth import authorization_metadata
import grpc
import os
import wave
endpoint = "api.tinkoff.ai:443"
api_key = "my_key"
secret_key = "my_secret_key"
sample_rate = 16000
def build_request(text):
return tts_pb2.SynthesizeSpeechRequest(
input=tts_pb2.SynthesisInput(
text=text
),
audio_config=tts_pb2.AudioConfig(
audio_encoding=tts_pb2.LINEAR16,
sample_rate_hertz=sample_rate,
),
voice=tts_pb2.VoiceSelectionParams(
name="dorofeev:comedy",
),
)
stub = tts_pb2_grpc.TextToSpeechStub(grpc.secure_channel(endpoint, grpc.ssl_channel_credentials()))
request = build_request()
metadata = authorization_metadata(api_key, secret_key, "tinkoff.cloud.tts")
response = stub.Synthesize(request, metadata=metadata)
with wave.open("synthesized.wav", "wb") as f:
f.setframerate(sample_rate)
f.setnchannels(1)
f.setsampwidth(2)
f.writeframes(response.audio_content)
когда я запускаю этот код мой сайт выдает 500 ошибку ,а когда удаляю 1 строку из файла views.py, то сайт грузится, но мне нужно импортнуть этот код чтобы синтез работал.
вопрос, как мне сделать так, чтобы текст который будет в переменной user_text из файла views.py передавался в файл tts_synthesize_linear16_to_wav.py, как то надо присвоить переменной text мою переменную user_text, чтобы при переходе на process_text/ как описано в файле urls.py вызывался функция process_text из файла views.py и эта функция чтобы вызывала файл tts_synthesize_linear16_to_wav.py и туда передал мою переменную User_text, шоб все выполнил с этим текстом и по сценарию файла этого записывал готовый аудио в файл synthesized.wav если я вызываю этот файл отдельно, просто вот так python tts_synthesize_linear16_to_wav.py, то все обрабатывается и работает нормально, как нужно, теперь мне нужно передать туда переменную user_text и выполнить этот файл как обычно