Uso de la operación PutLexicon - 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.

Uso de la operación PutLexicon

Con Amazon Polly, puede utilizar PutLexicon para almacenar lexicones de pronunciación en una región de AWS específica de su cuenta. A continuación, podrá especificar uno o varios de los lexicones almacenados en la solicitud SynthesizeSpeech que desee aplicar antes de que el servicio comience a sintetizar el texto. Para obtener más información, consulte Administrar lexicones.

Esta sección contiene lexicones de ejemplo e instrucciones detalladas para guardarlos y probarlos.

nota

Los lexicones deben ajustarse a la recomendación de W3C sobre Pronunciation Lexicon Specification (PLS, Especificación de lexicones de pronunciación). Para obtener más información, consulte Pronunciation Lexicon Specification (PLS) versión 1.0 en el sitio web de W3C.

Ejemplo 1: Lexicón con un solo lexema

Supongamos que tiene el siguiente lexicón, que se ajusta a la recomendación PLS de W3C.

<?xml version="1.0" encoding="UTF-8"?> <lexicon version="1.0" xmlns="http://www.w3.org/2005/01/pronunciation-lexicon" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2005/01/pronunciation-lexicon http://www.w3.org/TR/2007/CR-pronunciation-lexicon-20071212/pls.xsd" alphabet="ipa" xml:lang="en-US"> <lexeme> <grapheme>W3C</grapheme> <alias>World Wide Web Consortium</alias> </lexeme> </lexicon>

Tenga en cuenta lo siguiente:

  • Los dos atributos especificados en el elemento <lexicon>:

    • El atributo xml:lang especifica el código de idioma, en-US, al que se va a aplicar el lexicón. Amazon Polly puede utilizar este lexicón de ejemplo si la voz que se especifica en la llamada a SynthesizeSpeech tiene el mismo código de idioma (en-US).

      nota

      Puede utilizar la operación DescribeVoices para buscar el código de idioma asociado a una voz.

       

    • El atributo alphabet está establecido en IPA, lo que significa que se va a utilizar el Alfabeto Fonético Internacional (IPA, por sus siglas en inglés) para especificar la pronunciación. IPA es uno de los alfabetos disponibles para escribir las pronunciaciones. Amazon Polly también admite el Alfabeto Fonético Extendido SAM (X-SAMPA, por sus siglas en inglés).

       

  • El elemento <lexeme> describe la correspondencia entre <grapheme> (es decir, la representación gráfica textual de la palabra) y <alias>.

Para probar este lexicón, haga lo siguiente:

  1. Guarde el lexicón como example.pls.

  2. Ejecute el comando AWS CLI de put-lexicon para guardar el lexicón (con el nombre w3c) en la región us-east-2.

    aws polly put-lexicon \ --name w3c \ --content file://example.pls
  3. Ejecute el comando synthesize-speech para sintetizar el texto de ejemplo en una secuencia de audio (speech.mp3) y especifique el parámetro opcional lexicon-name.

    aws polly synthesize-speech \ --text 'W3C is a Consortium' \ --voice-id Joanna \ --output-format mp3 \ --lexicon-names="w3c" \ speech.mp3
  4. Reproduzca el archivo speech.mp3 resultante y observe que la palabra W3C del texto se ha sustituido por World Wide Web Consortium.

En el lexicón del ejemplo anterior se utiliza un alias. El alfabeto IPA mencionado en el lexicón no se utiliza. El lexicón siguiente especifica una pronunciación fonética que utiliza el elemento <phoneme> con el alfabeto IPA.

<?xml version="1.0" encoding="UTF-8"?> <lexicon version="1.0" xmlns="http://www.w3.org/2005/01/pronunciation-lexicon" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2005/01/pronunciation-lexicon http://www.w3.org/TR/2007/CR-pronunciation-lexicon-20071212/pls.xsd" alphabet="ipa" xml:lang="en-US"> <lexeme> <grapheme>pecan</grapheme> <phoneme>pɪˈkɑːn</phoneme> </lexeme> </lexicon>

Siga los mismos pasos para probar este lexicón. No olvide especificar un texto de entrada que tenga la palabra "pecan"; por ejemplo, "Pecan pie is delicious" ("La tarta de nueces está deliciosa").

Ejemplo 2: Lexicón con varios lexemas

En este ejemplo, el lexema especificado en el lexicón se aplica exclusivamente al texto de entrada del proceso de síntesis. Pongamos como ejemplo el siguiente lexicón:

<?xml version="1.0" encoding="UTF-8"?> <lexicon version="1.0" xmlns="http://www.w3.org/2005/01/pronunciation-lexicon" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2005/01/pronunciation-lexicon http://www.w3.org/TR/2007/CR-pronunciation-lexicon-20071212/pls.xsd" alphabet="ipa" xml:lang="en-US"> <lexeme> <grapheme>W3C</grapheme> <alias>World Wide Web Consortium</alias> </lexeme> <lexeme> <grapheme>W3C</grapheme> <alias>WWW Consortium</alias> </lexeme> <lexeme> <grapheme>Consortium</grapheme> <alias>Community</alias> </lexeme> </lexicon>

El lexicón especifica tres lexemas, dos de los cuales definen un alias para el grafema W3C, tal y como se indica a continuación:

  • El primer elemento <lexeme> define un alias (World Wide Web Consortium).

  • El segundo elemento <lexeme> define un alias alternativo (WWW Consortium).

Amazon Polly utiliza la primera palabra de sustitución con cualquier grafema del lexicón.

El tercer elemento <lexeme> establece una palabra sustituta (Community) para "Consortium".

En primer lugar, vamos a probar este lexicón. Supongamos que desea sintetizar el siguiente texto de ejemplo en un archivo de audio (speech.mp3) y que especifica el lexicón en una llamada a SynthesizeSpeech.

The W3C is a Consortium

SynthesizeSpeech se aplica al lexicón de la forma siguiente:

  • De acuerdo con el primer lexema, la palabra W3C se modifica a World Wide Web Consortium. El texto revisado sería el siguiente:

    The World Wide Web Consortium is a Consortium
  • El alias definido en el tercer lexema solamente se aplica a la palabra Consortium que formaba parte del texto original, por lo que se obtiene el siguiente texto:

    The World Wide Web Consortium is a Community.

Puede comprobarlo utilizando AWS CLI del modo siguiente:

  1. Guarde el lexicón como example.pls.

  2. Ejecute el comando put-lexicon para guardar el lexicón con el nombre w3c en la región us-east-2.

    aws polly put-lexicon \ --name w3c \ --content file://example.pls
  3. Ejecute el comando list-lexicons para comprobar que el lexicón w3c está en la lista de lexicones devuelta.

    aws polly list-lexicons
  4. Ejecute el comando synthesize-speech para sintetizar el texto de ejemplo en un archivo de audio (speech.mp3) y especifique el parámetro opcional lexicon-name.

    aws polly synthesize-speech \ --text 'W3C is a Consortium' \ --voice-id Joanna \ --output-format mp3 \ --lexicon-names="w3c" \ speech.mp3

  5. Reproduzca el archivo speech.mp3 resultante para comprobar que la síntesis del fragmento hablado refleja los cambios del texto.

Ejemplo 3: Especificar varios lexicones

En una llamada a SynthesizeSpeech, puede especificar varios lexicones. En este caso, el primer lexicón especificado (de izquierda a derecha) anulará cualquier lexicón anterior.

Pongamos como ejemplo los dos lexicones siguientes. Tenga en cuenta que cada lexicón especifica alias diferentes para el mismo grafema, W3C.

  • Lexicón 1: w3c.pls

    <?xml version="1.0" encoding="UTF-8"?> <lexicon version="1.0" xmlns="http://www.w3.org/2005/01/pronunciation-lexicon" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2005/01/pronunciation-lexicon http://www.w3.org/TR/2007/CR-pronunciation-lexicon-20071212/pls.xsd" alphabet="ipa" xml:lang="en-US"> <lexeme> <grapheme>W3C</grapheme> <alias>World Wide Web Consortium</alias> </lexeme> </lexicon>
  • Lexicón 2: w3cAlternate.pls

    <?xml version="1.0" encoding="UTF-8"?> <lexicon version="1.0" xmlns="http://www.w3.org/2005/01/pronunciation-lexicon" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2005/01/pronunciation-lexicon http://www.w3.org/TR/2007/CR-pronunciation-lexicon-20071212/pls.xsd" alphabet="ipa" xml:lang="en-US"> <lexeme> <grapheme>W3C</grapheme> <alias>WWW Consortium</alias> </lexeme> </lexicon>

Suponga que almacena estos lexicones como w3c y w3cAlternate, respectivamente. Si especifica los lexicones en orden (w3c seguido de w3cAlternate) en una llamada a SynthesizeSpeech, el alias de W3C definido en el primer lexicón tendrá prioridad sobre el segundo. Para probar los lexicones, siga estos pasos:

  1. Guarde los lexicones localmente en sendos archivos denominados w3c.pls y w3cAlternate.pls.

  2. Cargue estos lexicones utilizando el comando AWS CLI de put-lexicon.

    • Cargue el lexicón w3c.pls y guárdelo como w3c.

      aws polly put-lexicon \ --name w3c \ --content file://w3c.pls
    • Cargue el lexicón w3cAlternate.pls en el servicio como w3cAlternate.

      aws polly put-lexicon \ --name w3cAlternate \ --content file://w3cAlternate.pls

  3. Ejecute el comando synthesize-speech para sintetizar el texto de ejemplo en una secuencia de audio (speech.mp3) y especifique los dos lexicones a través del parámetro lexicon-name.

    aws polly synthesize-speech \ --text 'PLS is a W3C recommendation' \ --voice-id Joanna \ --output-format mp3 \ --lexicon-names '["w3c","w3cAlternative"]' \ speech.mp3
  4. Compruebe el archivo speech.mp3 resultante. Debería decir lo siguiente:

    PLS is a World Wide Web Consortium recommendation

Muestras de código adicionales para la API PutLexicon