Estoy trabajando en una aplicación de dispositivos de tablero donde dos usuarios pueden conectarse para ver la misma página, donde uno de ellos presionará un botón para grabar un discurso para que el otro pueda ver la transcripción. Necesito ejecutar esta aplicación desde un servidor remoto, así que tendré que poder usar el micrófono en la máquina del usuario para obtener la transcripción. Los ejemplos en el sitio de Dash para las devoluciones de llamadas del lado del cliente describen un poco cómo hacer esto, pero para mi prueba inicial he estado usando la biblioteca SpeechRecognition de Python y no estoy completamente seguro de cómo usar JavaScript para obtener la grabación y el feed. en el resto de la aplicación.
¿Existe una forma estándar/buena de grabar el discurso del usuario desde el navegador y analizar la transcripción en Python cuando se presiona este botón? El siguiente código es un ejemplo de cómo se ve mi devolución de llamada actual y la configuración de la aplicación y lo que necesito convertir en una devolución de llamada del lado del cliente.
from dash_devices.dependencies import Input, Output, State import dash_html_components as html import dash_core_components as dcc import speech_recognition as sr app = dash_devices.Dash(__name__) app.config.suppress_callback_exceptions = True r = sr.Recognizer() app.layout = html.Div([ html.Div("Transcription", id='transcription'), html.Button(id='listen-pause', children='Record Message')]) @app.callback( [Output(component_id='transcription', component_property='children'), Output(component_id='listen-pause', component_property='children')], [Input(component_id='listen-pause', component_property='n_clicks')] ) def transcribe_speech(n_clicks): if n_clicks == 0: return ["", "Record Message"] print("Recording Speech...") try: with sr.Microphone() as source: audio_text = r.listen(source, 10, 3) transcript = r.recognize_google(audio_text) return [r.recognize_google(audio_text), "Record Message"] except sr.UnknownValueError: return ["Could not parse input", "Record Message"] if __name__ == '__main__': app.run_server(debug=True, host='0.0.0.0', port=5000) ```