@wendy01darlin

Как указать относительный путь к исполняемому файлу в джанго?

У меня есть задание, взять текст который пользователь вводит на сайте, отправить этот текст к исполняемому файлу который синтезирует речь (этот файл пример из туториала по синтезу речи от тинькоф апи) и вывести получившееся аудио обратно к пользователю

у меня есть файл 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 и выполнить этот файл как обычно
  • Вопрос задан
  • 268 просмотров
Пригласить эксперта
Ответы на вопрос 1
nnnLik
@nnnLik
Capybara god
внутри приложения джанго создай файл сервисов и скопируй код туда. Удали шебанг. путь будет идти от src или от название апы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы