Добавьте кнопку для транскрипции в форму Django
Я создаю сайт и имею представление о формах Django. Я хочу добавить кнопку транскрипции к каждому полю в Django-форме
class PostForm(StylishForm):
class Meta:
model = Post
fields = ["title", "body", "upload"]
widgets = {
"owner": forms.HiddenInput(),
}
и предоставить пользователю возможность либо заполнить форму, набрав текст, либо нажать кнопку для транскрипции, а затем заполнить поле.
# add new
def add(request):
if request.method == "POST":
form = PostForm(request.POST, request.FILES)
if form.is_valid():
post = form.save(commit=False)
post.owner = request.user
post.save()
return HttpResponseRedirect(reverse("view_posts"))
else:
form = PostForm()
return render(
request,
"posts/index.html",
{
"form": form,
},
)
Я подготовил функцию для использования whisper api для транскрипции.
def record_audio(request):
RATE = 16000
CHUNK = 1024
recordings = os.path.join(settings.MEDIA_ROOT, 'recordings')
# Ensure the folder exists
if not os.path.exists(recordings):
os.makedirs('recordings')
# Define the path to save the audio file
file_path = os.path.join(recordings, 'output.wav')
# def callback(data_input, frame_count, time_info, status):
# wav_file.writeframes(data_input)
# return None, pyaudio.paContinue
with wave.open(file_path, "wb") as wav_file:
wav_file.setnchannels(1) # Mono channel
wav_file.setsampwidth(2) # 16-bit samples
wav_file.setframerate(16000) # 16kHz sample rate
audio = pyaudio.PyAudio()
stream = audio.open(
format=pyaudio.paInt16,
channels=1,
rate=RATE,
input=True,
frames_per_buffer=CHUNK,
)
for _ in range(0, RATE // CHUNK):
wav_file.writeframes(stream.read(CHUNK))
stream.stop_stream()
stream.close()
audio.terminate()
audio_file= open(file_path, "rb")
transcription = client.audio.transcriptions.create(
model="whisper-1",
file=audio_file
)
print(transcription.text)
return HttpResponseRedirect(reverse("view_posts"))
Но я не могу понять, как отправить текст в поле формы.
Мой html-шаблон выглядит следующим образом:
<div class="tab-pane fade show active" id="post-tab-pane" role="tabpanel" aria-labelledby="post-tab"
tabindex="0">
<form enctype="multipart/form-data" action="{% url 'add' %}" method="POST">
{% csrf_token %}
{% for field in post_form %}
<div class="form-group">
<div class="form-labels">{{ field.label }}</div>
{{ form.media }}
<div class="form-fields">{{ field }}</div>
</div>
{% endfor %}
<button class="btn btn-primary" type="submit">Save</button>
</form>
</div>
Моя проблема Я не могу придумать, как использовать текст из транскрипции и заполнять поля формы выборочно, чтобы переключаться между обоими методами. Я пытался найти какие-либо примеры в Интернете, но не смог найти ни одного ресурса.