You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/es/6-consumer/lessons/3-spoken-feedback/virtual-device-text-to-spee...

4.9 KiB

Texto a voz - Dispositivo IoT virtual

En esta parte de la lección, escribirás código para convertir texto a voz utilizando el servicio de voz.

Convertir texto a voz

El SDK de servicios de voz que utilizaste en la última lección para convertir voz a texto también puede ser usado para convertir texto a voz. Al solicitar la conversión a voz, necesitas proporcionar la voz que se utilizará, ya que la voz puede generarse utilizando una variedad de opciones diferentes.

Cada idioma admite una gama de voces distintas, y puedes obtener la lista de voces compatibles para cada idioma desde el SDK de servicios de voz.

Tarea - convertir texto a voz

  1. Abre el proyecto smart-timer en VS Code y asegúrate de que el entorno virtual esté cargado en la terminal.

  2. Importa el SpeechSynthesizer del paquete azure.cognitiveservices.speech añadiéndolo a las importaciones existentes:

    from azure.cognitiveservices.speech import SpeechConfig, SpeechRecognizer, SpeechSynthesizer
    
  3. Encima de la función say, crea una configuración de voz para usar con el sintetizador de voz:

    speech_config = SpeechConfig(subscription=speech_api_key,
                                 region=location)
    speech_config.speech_synthesis_language = language
    speech_synthesizer = SpeechSynthesizer(speech_config=speech_config)
    

    Esto utiliza la misma clave de API, ubicación e idioma que se usaron con el reconocedor.

  4. Debajo de esto, agrega el siguiente código para obtener una voz y configurarla en la configuración de voz:

    voices = speech_synthesizer.get_voices_async().get().voices
    first_voice = next(x for x in voices if x.locale.lower() == language.lower())
    speech_config.speech_synthesis_voice_name = first_voice.short_name
    

    Esto recupera una lista de todas las voces disponibles y luego encuentra la primera voz que coincide con el idioma que se está utilizando.

    💁 Puedes obtener la lista completa de voces compatibles en la documentación de soporte de idiomas y voces en Microsoft Docs. Si deseas usar una voz específica, puedes eliminar esta función y codificar directamente el nombre de la voz desde esta documentación. Por ejemplo:

    speech_config.speech_synthesis_voice_name = 'hi-IN-SwaraNeural'
    
  5. Actualiza el contenido de la función say para generar SSML para la respuesta:

    ssml =  f'<speak version=\'1.0\' xml:lang=\'{language}\'>'
    ssml += f'<voice xml:lang=\'{language}\' name=\'{first_voice.short_name}\'>'
    ssml += text
    ssml += '</voice>'
    ssml += '</speak>'
    
  6. Debajo de esto, detén el reconocimiento de voz, reproduce el SSML, y luego reinicia el reconocimiento:

    recognizer.stop_continuous_recognition()
    speech_synthesizer.speak_ssml(ssml)
    recognizer.start_continuous_recognition()
    

    El reconocimiento se detiene mientras se reproduce el texto para evitar que el anuncio de inicio del temporizador sea detectado, enviado a LUIS y posiblemente interpretado como una solicitud para configurar un nuevo temporizador.

    💁 Puedes probar esto comentando las líneas para detener y reiniciar el reconocimiento. Configura un temporizador y es posible que el anuncio configure un nuevo temporizador, lo que provoca un nuevo anuncio, que a su vez configura otro temporizador, y así sucesivamente indefinidamente.

  7. Ejecuta la aplicación y asegúrate de que la función de la aplicación también esté en ejecución. Configura algunos temporizadores y escucharás una respuesta hablada indicando que tu temporizador ha sido configurado, y luego otra respuesta hablada cuando el temporizador se complete.

💁 Puedes encontrar este código en la carpeta code-spoken-response/virtual-iot-device.

😀 ¡Tu programa de temporizador fue un éxito!


Descargo de responsabilidad:
Este documento ha sido traducido utilizando el servicio de traducción automática Co-op Translator. Aunque nos esforzamos por garantizar la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción.