Uso da operação PutLexicon - Amazon Polly

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Uso da operação PutLexicon

Com o Amazon Polly, você pode usar PutLexicon para armazenar léxicos de pronúncia em uma região da AWS específica para sua conta. Em seguida, você pode especificar um ou mais desses léxico armazenados na sua solicitação SynthesizeSpeech que você deseja aplicar antes de o serviço começar a sintetizar o texto. Para obter mais informações, consulte Gerenciamento de léxicos.

Esta seção fornece exemplos de léxicos e instruções passo a passo para armazená-los e testá-los.

nota

Esses léxicos devem estar em conformidade com a recomendação PLS (Pronunciation Lexicon Specification, Especificação do léxico de pronúncia), do W3C. Para obter mais informações, consulte Pronunciation Lexicon Specification (PLS) Version 1.0 no site do W3C.

Exemplo 1: Léxico com um lexema

Considere o léxico compatível com a PLS do W3C a seguir.

<?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>

Observe o seguinte:

  • Os dois atributos especificados no elemento <lexicon>:

    • O atributo xml:lang especifica o código do idioma, en-US, ao qual o léxico se aplica. O Amazon Polly pode usar esse léxico de exemplo se a voz que você especificar na chamada SynthesizeSpeech tiver o mesmo código de idioma (en-US).

      nota

      Você pode usar a operação DescribeVoices para localizar o código de idioma associado a uma voz.

       

    • O atributo alphabet especifica IPA, o que significa que o Alfabeto Fonético Internacional (AFI; IPA na sigla em inglês, que significa "International Phonetic Alphabet") é usado para pronúncias. O AFI é um dos alfabetos para escrever pronúncias. O Amazon Polly também é compatível com Alfabeto fonético de métodos de avaliação da fala (X-SAMPA).

       

  • O elemento <lexeme> descreve o mapeamento entre <grapheme> (ou seja, uma representação textual da palavra) e <alias>.

Para testar esse léxico, faça o seguinte:

  1. Salve o léxico como example.pls.

  2. Execute o comando da AWS CLI put-lexicon para armazenar o léxico (com o nome w3c), na região us-east-2.

    aws polly put-lexicon \ --name w3c \ --content file://example.pls
  3. Execute o comando synthesize-speech para sintetizar o texto de amostra em um fluxo de áudio (speech.mp3) e especifique parâmetro lexicon-name opcional.

    aws polly synthesize-speech \ --text 'W3C is a Consortium' \ --voice-id Joanna \ --output-format mp3 \ --lexicon-names="w3c" \ speech.mp3
  4. Reproduza o speech.mp3 resultante e observe que a palavra W3C no texto é substituída por World Wide Web Consortium.

O léxico do exemplo anterior usa um alias. O AFI mencionado no léxico não é usado. O léxico a seguir especifica uma pronúncia fonética usando o elemento <phoneme> com o AFI.

<?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 as mesmas etapas para testar esse léxico. Coloque um texto que tenha a palavra "pecan" (por exemplo, "Pecan pie is delicious").

Exemplo 2: Léxico com vários lexemas

Neste exemplo, o lexema que você especificar no léxico se aplica exclusivamente ao texto de entrada para a síntese. Considere o seguinte léxico:

<?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>

O léxico especifica três lexemas, dois dos quais definem um alias para o grafema W3C, da seguinte forma:

  • O primeiro elemento <lexeme> define um alias (World Wide Web Consortium).

  • O segundo <lexeme> define um alias alternativo (WWW Consortium).

O Amazon Polly usa a primeira substituição para determinado grafema em um léxico.

O terceiro <lexeme> define uma substituição (Community) para a palavra Consortium.

Primeiro, vamos testar esse léxico. Suponha que você deseja sintetizar o texto de exemplo a seguir para um arquivo de áudio (speech.mp3) e especifica o léxico em uma chamada para SynthesizeSpeech.

The W3C is a Consortium

O SynthesizeSpeech primeiro aplica a léxico da seguinte forma:

  • De acordo com o primeiro lexema, a palavra W3C é revisada como World Wide Web Consortium. O texto revisado aparece da seguinte forma:

    The World Wide Web Consortium is a Consortium
  • O alias definido no terceiro lexema se aplica somente à palavra Consortium, que foi parte do texto original, resultando no texto a seguir:

    The World Wide Web Consortium is a Community.

Você pode testar isso usando a AWS CLI, da seguinte forma:

  1. Salve o léxico como example.pls.

  2. Execute o comando put-lexicon para armazenar o léxico com o nome w3c na região us-east-2.

    aws polly put-lexicon \ --name w3c \ --content file://example.pls
  3. Execute o comando list-lexicons para verificar se o léxico w3c está na lista de léxicos retornados.

    aws polly list-lexicons
  4. Execute o comando synthesize-speech para sintetizar o texto de amostra para um arquivo de áudio (speech.mp3) e especifique parâmetro lexicon-name opcional.

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

  5. Reproduza o arquivo speech.mp3 resultante para verificar se a fala sintetizada reflete as alterações no texto.

Exemplo 3: Especificação de vários léxicos

Em uma chamada para SynthesizeSpeech, você pode especificar vários léxicos. Neste caso, o primeiro léxico especificado (da esquerda para a direita) sobrepõe quaisquer léxicos anteriores.

Considere os dois léxicos a seguir. Observe que cada léxico descreve aliases diferentes para o mesmo grafema de W3C.

  • Léxico 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>
  • Léxico 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>

Vamos supor que você armazene esses léxicos como w3c e w3cAlternate, respectivamente. Se você especificar léxicos na ordem (w3c seguido por w3cAlternate) em uma chamada SynthesizeSpeech, o alias de W3C definido no primeiro léxico terá precedência sobre o segundo. Para testar os léxicos, faça o seguinte:

  1. Salve os léxicos localmente em arquivos chamados w3c.pls e w3cAlternate.pls.

  2. Faça upload desses léxicos usando o comando da AWS CLI put-lexicon.

    • Faça upload do léxico w3c.pls e armazene-o como w3c.

      aws polly put-lexicon \ --name w3c \ --content file://w3c.pls
    • Faça upload do léxico w3cAlternate.pls no serviço como w3cAlternate.

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

  3. Execute o comando synthesize-speech para sintetizar texto de exemplo em um fluxo de áudio (speech.mp3) e especifique os dois léxicos usando o 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. Teste o speech.mp3 resultante. Ele deve ler da seguinte forma:

    PLS is a World Wide Web Consortium recommendation

Amostras de código adicionais para a API PutLexicon