Ejemplo de síntesis de voz con Amazon Polly - Amazon Polly

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

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
  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon Polly en https://console.aws.amazon.com/polly/.

  2. 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.

  3. Desactive SSML.

  4. 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.
  5. En Motor, elija Generativo, Forma larga, Neural o Estándar.

  6. 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).

  7. Si desea escuchar el fragmento hablado inmediatamente, elija Escuchar.

  8. Para guardar el fragmento hablado en un archivo, realice una de las operaciones siguientes:

    1. Elija Descargar.

    2. 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 SynthesizeSpeech para pasar el texto de entrada. Puede guardar el audio resultante como un archivo y comprobar su contenido.

  1. Ejecute el comando AWS CLI de la synthesize-speech 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.mp3

    En 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 archivo hello.mp3. Además del archivo MP3, la operación envía el el resultado siguiente a la consola.

    { "ContentType": "audio/mpeg", "RequestCharacters": "71" }
  2. Reproduzca el archivo hello.mp3 resultante 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 for Python (Boto3).

En este ejemplo de código Python se realizan las siguientes acciones:

  • Invoca AWS SDK for Python (Boto) para enviar una solicitud SynthesizeSpeech a 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: