
Compartilhar:
Lorna é engenheira de software e tem um vício incurável por escrever em blogs. Ela tenta domar as palavras e o código na mesma medida.
Recitação de poemas de Natal usando a função de conversão de texto em fala e SSML
Tempo de leitura: 1 minuto
Aqui na Nexmo, nós usamos a conversão de texto em fala em nossas aplicações de telefonia, mas você sabia que seu texto pode fazer mais do que apenas falar? Nossa Voice API suporta SSML (Speech Synthesis Markup Language) , o que permite que você adicione um pouco de expressão às saídas de conversão de texto em fala.
Como é Natal, pensei em me desafiar a escrever um poema natalino! A função de conversão de texto em fala, usando apenas sinais de pontuação como vírgulas e pontos, funciona muito bem; por isso, mesmo na primeira tentativa, dava para perceber, de certa forma, que o texto deveria ter métrica.
O pequeno Jack Horner estava sentado no canto, comendo torta de Natal: ele enfiou o polegar, tirou uma ameixa e disse: “Que menino bom eu sou!”
Podemos melhorar isso marcando as palavras que devem receber ênfase. Usei as <prosody> tags para dar mais volume às palavras fortes da rima e diminuir o ritmo delas. Por exemplo, “Horner”, “corner”, “plum” e “thumb” estão todas marcadas com <prosody rate="x-slow"> para ajudar no ritmo da fala.
O conversor de texto em fala não reconheceu a palavra “Horner”, então usei uma <phoneme> tag para escrever foneticamente como a palavra deve ser pronunciada (o que, pelo menos, faz com que ela rime com “corner” na linha seguinte, embora ainda soe um pouco estranho para mim!). Esse é um truque muito útil ao editar seu conteúdo de conversão de texto em fala, especialmente para nomes próprios que muitas vezes são desconhecidos pelo analisador. Você também pode usá-lo para qualquer outra palavra cuja pronúncia não saia como você esperava.
Por fim, só por diversão, censurei a palavra “good” na última linha usando a <say-as> e transformando essa palavra em um palavrão. Essa tag pode ser muito útil se o seu aplicativo precisar ler em voz alta conteúdo fornecido pelo usuário cujo conteúdo seja desconhecido!
Aqui está o SSML que acabei criando:
<speak>
<lang xml:lang="en-GB">
Little Jack <prosody rate="x-slow"><phoneme alphabet="ipa" ph="ˈhɔːnə">Horner</phoneme></prosody>,
Sat in the<prosody rate="x-slow">corner</prosody>,
Eating of <prosody volume="x-loud">Christmas</prosody> <prosody rate="x-slow">pie:</prosody>
He put in his <prosody rate="x-slow">thumb</prosody>,
And pulled out a <prosody rate="x-slow">plum</prosody>,
And said, “What a <say-as interpret-as="expletive">good</say-as> boy am <prosody rate="x-slow">I</prosody>!”
</lang>
</speak>Ao incluir esse XML como o text campo na talk ação do meu NCCO e adicionando uma record ação também, consegui capturar a poesia do robô:
https://soundcloud.com/user-872225766-984610678/conference-31696a4f-983f-40ea-b81a-ab942fc33782
Você poderia pensar em dar um toque mais expressivo à sua interação oral com os usuários usando SSML — e a poesia é uma ótima maneira de praticar. Conte para a gente se você criar algo poético neste Natal!