Ejemplo de síntesis de voz con Amazon Polly
En esta página se presenta un breve ejemplo de síntesis de voz realizada en la consola, la AWS CLI y con Python. En este ejemplo se realiza la síntesis de voz a partir de texto sin formato, no de SSML.
- Console
-
Síntesis de la voz en la consola
-
Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon Polly en https://console.aws.amazon.com/polly/
. -
Elija la pestaña Text-to-Speech. El campo de texto se cargará con texto de ejemplo para que pueda probar Amazon Polly rápidamente.
-
Desactive SSML.
-
Escriba o pegue el texto en el cuadro de entrada.
He was caught up in the game. In the middle of the 10/3/2014 W3C meeting he shouted, "Score!" quite loudly. -
En Motor, elija Generativo, Forma larga, Neural o Estándar.
-
Seleccione un idioma y una región AWS; a continuación, elija una voz. (Si selecciona Neural en Motor, solo estarán disponibles los idiomas y las voces compatibles con NTTS. Todas las voces de formato largo y estándar están desactivadas).
-
Si desea escuchar el fragmento hablado inmediatamente, elija Escuchar.
-
Para guardar el fragmento hablado en un archivo, realice una de las operaciones siguientes:
-
Elija Descargar.
-
Para cambiar a un formato de archivo diferente, expanda Configuración adicional, active la Configuración del formato del archivo de locución, elija el formato de archivo que desee y, a continuación, elija Descargar.
-
-
- AWS CLI
-
En este ejercicio, va a llamar a la operación
SynthesizeSpeechpara pasar el texto de entrada. Puede guardar el audio resultante como un archivo y comprobar su contenido.-
Ejecute el comando
synthesize-speechde la AWS CLI para sintetizar el texto de muestra en un archivo de audio (hello.mp3).El ejemplo de AWS CLI siguiente tiene formato para Unix, Linux y macOS. En Windows, sustituya la barra invertida (\) del carácter de continuación de Unix al final de cada línea por un signo de intercalación (^) y utilice comillas completas (") alrededor del texto introducido con comillas simples (') para las etiquetas interiores.
aws polly synthesize-speech \ --output-format mp3 \ --voice-id Joanna \ --text 'Hello, my name is Joanna. I learned about the W3C on 10/3 of last year.' \ hello.mp3En la llamada a
synthesize-speech, debe proporcionar un texto de muestra para que lo sintetice la voz que elija. Debe proporcionar un identificador de voz (que se explica en el paso siguiente) y un formato de salida. El comando guarda el audio resultante en el archivohello.mp3. Además del archivo MP3, la operación envía el el resultado siguiente a la consola.{ "ContentType": "audio/mpeg", "RequestCharacters": "71" } -
Reproduzca el archivo
hello.mp3resultante para comprobar la síntesis de voz.
-
- Python
-
Para probar el código de ejemplo de Python, necesita AWS SDK for Python (Boto). Para obtener instrucciones, consulte AWS SDK para Python (Boto3)
. En este ejemplo de código Python se realizan las siguientes acciones:
-
Invoca AWS SDK for Python (Boto) para enviar una solicitud
SynthesizeSpeecha Amazon Polly (se proporciona un texto de entrada). -
Obtiene acceso a la secuencia de audio resultante de la respuesta y la guarda en un archivo (
speech.mp3) en el disco local. -
Reproduce el archivo de audio con el reproductor predeterminado del sistema local.
Guarde el código en un archivo (example.py) y ejecútelo.
"""Getting Started Example for Python 2.7+/3.3+""" from boto3 import Session from botocore.exceptions import BotoCoreError, ClientError from contextlib import closing import os import sys import subprocess from tempfile import gettempdir # Create a client using the credentials and region defined in the [adminuser] # section of the AWS credentials file (~/.aws/credentials). session = Session(profile_name="adminuser") polly = session.client("polly") try: # Request speech synthesis response = polly.synthesize_speech(Text="Hello world!", OutputFormat="mp3", VoiceId="Joanna") except (BotoCoreError, ClientError) as error: # The service returned an error, exit gracefully print(error) sys.exit(-1) # Access the audio stream from the response if "AudioStream" in response: # Note: Closing the stream is important because the service throttles on the # number of parallel connections. Here we are using contextlib.closing to # ensure the close method of the stream object will be called automatically # at the end of the with statement's scope. with closing(response["AudioStream"]) as stream: output = os.path.join(gettempdir(), "speech.mp3") try: # Open a file for writing the output as a binary stream with open(output, "wb") as file: file.write(stream.read()) except IOError as error: # Could not write to file, exit gracefully print(error) sys.exit(-1) else: # The response didn't contain audio data, exit gracefully print("Could not stream audio") sys.exit(-1) # Play the audio using the platform's default player if sys.platform == "win32": os.startfile(output) else: # The following works on macOS and Linux. (Darwin = mac, xdg-open = linux). opener = "open" if sys.platform == "darwin" else "xdg-open" subprocess.call([opener, output]) -
Para obtener ejemplos más detallados, consulte los siguientes temas: