Ejemplos de Amazon Polly que se utilizan para SDK Python (Boto3) - AWS SDKEjemplos de código

Hay más AWS SDK ejemplos disponibles en el GitHub repositorio de AWS Doc SDK Examples.

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.

Ejemplos de Amazon Polly que se utilizan para SDK Python (Boto3)

Los siguientes ejemplos de código muestran cómo realizar acciones e implementar escenarios comunes AWS SDK for Python (Boto3) mediante Amazon Polly.

Las acciones son extractos de código de programas más grandes y deben ejecutarse en contexto. Mientras las acciones muestran cómo llamar a las funciones de servicio individuales, es posible ver las acciones en contexto en los escenarios relacionados.

Los escenarios son ejemplos de código que muestran cómo llevar a cabo una tarea específica a través de llamadas a varias funciones dentro del servicio o combinado con otros Servicios de AWS.

Cada ejemplo incluye un enlace al código fuente completo, donde puede encontrar instrucciones sobre cómo configurar y ejecutar el código en su contexto.

Acciones

En el siguiente ejemplo de código se muestra cómo usar DescribeVoices.

SDKpara Python (Boto3)
nota

Hay más información. GitHub Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de AWS.

class PollyWrapper: """Encapsulates Amazon Polly functions.""" def __init__(self, polly_client, s3_resource): """ :param polly_client: A Boto3 Amazon Polly client. :param s3_resource: A Boto3 Amazon Simple Storage Service (Amazon S3) resource. """ self.polly_client = polly_client self.s3_resource = s3_resource self.voice_metadata = None def describe_voices(self): """ Gets metadata about available voices. :return: The list of voice metadata. """ try: response = self.polly_client.describe_voices() self.voice_metadata = response["Voices"] logger.info("Got metadata about %s voices.", len(self.voice_metadata)) except ClientError: logger.exception("Couldn't get voice metadata.") raise else: return self.voice_metadata
  • Para API obtener más información, consulte DescribeVoicesla AWS SDKreferencia de Python (Boto3). API

En el siguiente ejemplo de código se muestra cómo usar GetLexicon.

SDKpara Python (Boto3)
nota

Hay más información. GitHub Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de AWS.

class PollyWrapper: """Encapsulates Amazon Polly functions.""" def __init__(self, polly_client, s3_resource): """ :param polly_client: A Boto3 Amazon Polly client. :param s3_resource: A Boto3 Amazon Simple Storage Service (Amazon S3) resource. """ self.polly_client = polly_client self.s3_resource = s3_resource self.voice_metadata = None def get_lexicon(self, name): """ Gets metadata and contents of an existing lexicon. :param name: The name of the lexicon to retrieve. :return: The retrieved lexicon. """ try: response = self.polly_client.get_lexicon(Name=name) logger.info("Got lexicon %s.", name) except ClientError: logger.exception("Couldn't get lexicon %s.", name) raise else: return response
  • Para API obtener más información, consulte GetLexiconla AWS SDKreferencia de Python (Boto3). API

En el siguiente ejemplo de código se muestra cómo usar GetSpeechSynthesisTask.

SDKpara Python (Boto3)
nota

Hay más información. GitHub Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de AWS.

class PollyWrapper: """Encapsulates Amazon Polly functions.""" def __init__(self, polly_client, s3_resource): """ :param polly_client: A Boto3 Amazon Polly client. :param s3_resource: A Boto3 Amazon Simple Storage Service (Amazon S3) resource. """ self.polly_client = polly_client self.s3_resource = s3_resource self.voice_metadata = None def get_speech_synthesis_task(self, task_id): """ Gets metadata about an asynchronous speech synthesis task, such as its status. :param task_id: The ID of the task to retrieve. :return: Metadata about the task. """ try: response = self.polly_client.get_speech_synthesis_task(TaskId=task_id) task = response["SynthesisTask"] logger.info("Got synthesis task. Status is %s.", task["TaskStatus"]) except ClientError: logger.exception("Couldn't get synthesis task %s.", task_id) raise else: return task
  • Para API obtener más información, consulte GetSpeechSynthesisTaskla AWS SDKreferencia de Python (Boto3). API

En el siguiente ejemplo de código se muestra cómo usar ListLexicons.

SDKpara Python (Boto3)
nota

Hay más información. GitHub Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de AWS.

class PollyWrapper: """Encapsulates Amazon Polly functions.""" def __init__(self, polly_client, s3_resource): """ :param polly_client: A Boto3 Amazon Polly client. :param s3_resource: A Boto3 Amazon Simple Storage Service (Amazon S3) resource. """ self.polly_client = polly_client self.s3_resource = s3_resource self.voice_metadata = None def list_lexicons(self): """ Lists lexicons in the current account. :return: The list of lexicons. """ try: response = self.polly_client.list_lexicons() lexicons = response["Lexicons"] logger.info("Got %s lexicons.", len(lexicons)) except ClientError: logger.exception( "Couldn't get %s.", ) raise else: return lexicons
  • Para API obtener más información, consulte ListLexiconsla AWS SDKreferencia de Python (Boto3). API

En el siguiente ejemplo de código se muestra cómo usar PutLexicon.

SDKpara Python (Boto3)
nota

Hay más información. GitHub Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de AWS.

class PollyWrapper: """Encapsulates Amazon Polly functions.""" def __init__(self, polly_client, s3_resource): """ :param polly_client: A Boto3 Amazon Polly client. :param s3_resource: A Boto3 Amazon Simple Storage Service (Amazon S3) resource. """ self.polly_client = polly_client self.s3_resource = s3_resource self.voice_metadata = None def create_lexicon(self, name, content): """ Creates a lexicon with the specified content. A lexicon contains custom pronunciations. :param name: The name of the lexicon. :param content: The content of the lexicon. """ try: self.polly_client.put_lexicon(Name=name, Content=content) logger.info("Created lexicon %s.", name) except ClientError: logger.exception("Couldn't create lexicon %s.") raise
  • Para API obtener más información, consulte PutLexiconla AWS SDKreferencia de Python (Boto3). API

En el siguiente ejemplo de código se muestra cómo usar StartSpeechSynthesisTask.

SDKpara Python (Boto3)
nota

Hay más información. GitHub Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de AWS.

class PollyWrapper: """Encapsulates Amazon Polly functions.""" def __init__(self, polly_client, s3_resource): """ :param polly_client: A Boto3 Amazon Polly client. :param s3_resource: A Boto3 Amazon Simple Storage Service (Amazon S3) resource. """ self.polly_client = polly_client self.s3_resource = s3_resource self.voice_metadata = None def do_synthesis_task( self, text, engine, voice, audio_format, s3_bucket, lang_code=None, include_visemes=False, wait_callback=None, ): """ Start an asynchronous task to synthesize speech or speech marks, wait for the task to complete, retrieve the output from Amazon S3, and return the data. An asynchronous task is required when the text is too long for near-real time synthesis. :param text: The text to synthesize. :param engine: The kind of engine used. Can be standard or neural. :param voice: The ID of the voice to use. :param audio_format: The audio format to return for synthesized speech. When speech marks are synthesized, the output format is JSON. :param s3_bucket: The name of an existing Amazon S3 bucket that you have write access to. Synthesis output is written to this bucket. :param lang_code: The language code of the voice to use. This has an effect only when a bilingual voice is selected. :param include_visemes: When True, a second request is made to Amazon Polly to synthesize a list of visemes, using the specified text and voice. A viseme represents the visual position of the face and mouth when saying part of a word. :param wait_callback: A callback function that is called periodically during task processing, to give the caller an opportunity to take action, such as to display status. :return: The audio stream that contains the synthesized speech and a list of visemes that are associated with the speech audio. """ try: kwargs = { "Engine": engine, "OutputFormat": audio_format, "OutputS3BucketName": s3_bucket, "Text": text, "VoiceId": voice, } if lang_code is not None: kwargs["LanguageCode"] = lang_code response = self.polly_client.start_speech_synthesis_task(**kwargs) speech_task = response["SynthesisTask"] logger.info("Started speech synthesis task %s.", speech_task["TaskId"]) viseme_task = None if include_visemes: kwargs["OutputFormat"] = "json" kwargs["SpeechMarkTypes"] = ["viseme"] response = self.polly_client.start_speech_synthesis_task(**kwargs) viseme_task = response["SynthesisTask"] logger.info("Started viseme synthesis task %s.", viseme_task["TaskId"]) except ClientError: logger.exception("Couldn't start synthesis task.") raise else: bucket = self.s3_resource.Bucket(s3_bucket) audio_stream = self._wait_for_task( 10, speech_task["TaskId"], "speech", wait_callback, bucket ) visemes = None if include_visemes: viseme_data = self._wait_for_task( 10, viseme_task["TaskId"], "viseme", wait_callback, bucket ) visemes = [ json.loads(v) for v in viseme_data.read().decode().split() if v ] return audio_stream, visemes

En el siguiente ejemplo de código se muestra cómo usar SynthesizeSpeech.

SDKpara Python (Boto3)
nota

Hay más información. GitHub Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de AWS.

class PollyWrapper: """Encapsulates Amazon Polly functions.""" def __init__(self, polly_client, s3_resource): """ :param polly_client: A Boto3 Amazon Polly client. :param s3_resource: A Boto3 Amazon Simple Storage Service (Amazon S3) resource. """ self.polly_client = polly_client self.s3_resource = s3_resource self.voice_metadata = None def synthesize( self, text, engine, voice, audio_format, lang_code=None, include_visemes=False ): """ Synthesizes speech or speech marks from text, using the specified voice. :param text: The text to synthesize. :param engine: The kind of engine used. Can be standard or neural. :param voice: The ID of the voice to use. :param audio_format: The audio format to return for synthesized speech. When speech marks are synthesized, the output format is JSON. :param lang_code: The language code of the voice to use. This has an effect only when a bilingual voice is selected. :param include_visemes: When True, a second request is made to Amazon Polly to synthesize a list of visemes, using the specified text and voice. A viseme represents the visual position of the face and mouth when saying part of a word. :return: The audio stream that contains the synthesized speech and a list of visemes that are associated with the speech audio. """ try: kwargs = { "Engine": engine, "OutputFormat": audio_format, "Text": text, "VoiceId": voice, } if lang_code is not None: kwargs["LanguageCode"] = lang_code response = self.polly_client.synthesize_speech(**kwargs) audio_stream = response["AudioStream"] logger.info("Got audio stream spoken by %s.", voice) visemes = None if include_visemes: kwargs["OutputFormat"] = "json" kwargs["SpeechMarkTypes"] = ["viseme"] response = self.polly_client.synthesize_speech(**kwargs) visemes = [ json.loads(v) for v in response["AudioStream"].read().decode().split() if v ] logger.info("Got %s visemes.", len(visemes)) except ClientError: logger.exception("Couldn't get audio stream.") raise else: return audio_stream, visemes
  • Para API obtener más información, consulte SynthesizeSpeechla AWS SDKreferencia de Python (Boto3). API

Escenarios

El siguiente ejemplo de código muestra cómo crear una aplicación de sincronización labial con Amazon Polly.

SDKpara Python (Boto3)

Muestra cómo usar Amazon Polly y Tkinter para crear una aplicación de sincronización labial que muestre un rostro animado hablando junto con el discurso sintetizado por Amazon Polly. La sincronización labial se realiza solicitando una lista de visemas de Amazon Polly que coincidan con la voz sintetizada.

  • Obtenga metadatos de voz de Amazon Polly y muéstrelos en una aplicación de Tkinter.

  • Obtenga audio de voz sintetizado y marcas de voz de visema coincidentes de Amazon Polly.

  • Reproduzca el audio con los movimientos de la boca sincronizados en una cara animada.

  • Envíe tareas de síntesis asincrónicas para textos de gran tamaño y recupere los datos de salida desde un bucket de Amazon Simple Storage Service (Amazon S3).

Para obtener el código fuente completo y las instrucciones sobre cómo configurarlo y ejecutarlo, consulte el ejemplo completo en. GitHub

Servicios utilizados en este ejemplo
  • Amazon Polly