| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- import gradio as gr
- import speech_recognition as sr
- input_hijack = {
- 'state': False,
- 'value': ["", ""]
- }
- def do_stt(audio, text_state=""):
- transcription = ""
- r = sr.Recognizer()
- # Convert to AudioData
- audio_data = sr.AudioData(sample_rate=audio[0], frame_data=audio[1], sample_width=4)
- try:
- transcription = r.recognize_whisper(audio_data, language="english", model="base.en")
- except sr.UnknownValueError:
- print("Whisper could not understand audio")
- except sr.RequestError as e:
- print("Could not request results from Whisper", e)
- input_hijack.update({"state": True, "value": [transcription, transcription]})
- text_state += transcription + " "
- return text_state, text_state
- def update_hijack(val):
- input_hijack.update({"state": True, "value": [val, val]})
- return val
- def ui():
- tr_state = gr.State(value="")
- output_transcription = gr.Textbox(label="STT-Input",
- placeholder="Speech Preview. Click \"Generate\" to send",
- interactive=True)
- output_transcription.change(fn=update_hijack, inputs=[output_transcription], outputs=[tr_state])
- with gr.Row():
- audio = gr.Audio(source="microphone")
- transcribe_button = gr.Button(value="Transcribe")
- transcribe_button.click(do_stt, inputs=[audio, tr_state], outputs=[output_transcription, tr_state])
|