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

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

Войти через центр авторизации
Похожие вопросы