
Comparei dados de treino de síntese de voz com 10, 5 e 3 horas: quase nenhuma diferença num TTS trilíngue
Continuação do modelo de síntese de voz em croata. Desta vez, fiz um único modelo pequeno falar três idiomas: croata, japonês e inglês. Depois, comparei quanta diferença há entre 10, 5 e 3 horas de dados de treinamento para cada idioma.
Primeiro, a conclusão.
- No fim, quase não houve diferença entre 10, 5 ou 3 horas por idioma. A melhor taxa de erro de caracteres foi de 0,7% nos três casos (28 de 32 frases coincidiram perfeitamente)
- A evolução do treinamento também foi quase igual. Em todos os casos, japonês e inglês já podiam ser lidos praticamente conforme o roteiro entre 3.000 e 5.000 etapas, e o croata por volta das 10.000 etapas
- Apenas a versão de 3 horas manteve por algum tempo o hábito de ler “Bok! (olá)” erroneamente como “Blok”. Ela levou um pouco mais de tempo para se estabilizar no melhor estado
- Não houve diferença nem em frases cheias de termos técnicos. Testei achando que as 10 horas teriam vocabulário mais robusto, mas os três foram praticamente iguais
- Os erros de leitura de termos técnicos ocorreram nas mesmas palavras e de forma parecida nos três modelos. Em inglês, a causa não era o modelo, mas a parte que converte letras em símbolos fonéticos (o dicionário)
O que fiz
Modelo: o mesmo Matcha-TTS da vez anterior (cerca de 18,3 milhões de parâmetros) e o Vocos (cerca de 13,5 milhões de parâmetros) para converter de volta em forma de onda. O falante é um homem na faixa dos 20 anos.
Como fiz para ter três idiomas: usei como entrada do modelo símbolos fonéticos comuns aos três idiomas (IPA). Sons iguais entre idiomas, como “ʦ” e “ʨ”, compartilham o mesmo símbolo. Para especificar qual idioma falar, uso como “número do idioma” o número que originalmente serve para alternar entre falantes.
- Croata: como é um idioma lido quase exatamente como se escreve, basta substituir cada letra por um símbolo fonético correspondente
- Japonês: extraí a leitura e o acento com OpenJTalk e adicionei marcas nos pontos em que o tom sobe e desce
- Inglês: converti para símbolos fonéticos com g2p_en (o dicionário de pronúncia CMU e um pequeno modelo que estima a pronúncia de palavras ausentes do dicionário)
Dados de treinamento: áudios do mesmo homem lendo falas de conversas nos três idiomas. Depois de comparar com o roteiro por reconhecimento de voz e remover os erros de leitura, restaram 9,4 horas de croata, 9,7 horas de japonês e 8,3 horas de inglês (cerca de 27 horas no total). Chamo isso de “versão de 10 horas”.
A partir daí, extraí aleatoriamente exatamente 5 horas de cada idioma (15 horas no total) para a “versão de 5 horas”, e 3 horas de cada idioma (9 horas no total, cerca de 5.800 arquivos) para a “versão de 3 horas”. Todas as demais configurações (tamanho do modelo, tamanho do lote e 60.000 etapas) foram mantidas iguais. Como o número de etapas é o mesmo, quanto menos dados há, mais vezes o mesmo áudio é visto (a versão de 3 horas vê cada áudio cerca de três vezes mais que a de 10 horas).
O treinamento usou uma RTX 4090 e levou de 6 a 8 horas e meia por execução.
Comparando as vozes durante o treinamento
Sintetizei as frases abaixo, que não estavam nos dados de treinamento, com os modelos em diferentes momentos do treinamento.
- Inglês: Tomorrow we're going to the seaside, and the day after we'll visit my grandma in Split.
- Japonês: 明日は海に行って、あさってはおばあちゃんの家に遊びに行く予定です。
- Croata: Sutra idemo na more, a prekosutra ćemo posjetiti baku u Splitu.
Da esquerda para a direita: versões de 10 horas, 5 horas e 3 horas.
| Etapa | Versão de 10 horas | Versão de 5 horas | Versão de 3 horas |
|---|---|---|---|
| 1.000 | Inglês Japonês Croata | Inglês Japonês Croata | Inglês Japonês Croata |
| 2.000 | Inglês Japonês Croata | Inglês Japonês Croata | Inglês Japonês Croata |
| 3.000 | Inglês Japonês Croata | Inglês Japonês Croata | Inglês Japonês Croata |
| 4.000 | Inglês Japonês Croata | Inglês Japonês Croata | Inglês Japonês Croata |
| 5.000 | Inglês Japonês Croata | Inglês Japonês Croata | Inglês Japonês Croata |
| 10.000 | Inglês Japonês Croata | Inglês Japonês Croata | Inglês Japonês Croata |
| 20.000 | Inglês Japonês Croata | Inglês Japonês Croata | Inglês Japonês Croata |
| 30.000 | Inglês Japonês Croata | Inglês Japonês Croata | Inglês Japonês Croata |
| 40.000 | Inglês Japonês Croata | Inglês Japonês Croata | Inglês Japonês Croata |
| 50.000 | Inglês Japonês Croata | Inglês Japonês Croata | Inglês Japonês Croata |
Pela impressão ao ouvir, com 1.000 passos todos ainda eram pouco claros. Mas em inglês já dava para entender, em linhas gerais, o que estava sendo dito. No japonês, havia diferenças entre as versões: na versão de 5 horas, esta frase foi transcrita corretamente, palavra por palavra, já aos 1.000 passos. Já na versão de 10 horas, virou “Por favor, experimente cuidar de mim”, e na de 3 horas, “Com o médico até amanhã...”, tornando-se frases completamente diferentes.
Com 3.000 a 5.000 passos, todas as versões já conseguiam ler japonês e inglês conforme o roteiro. O croata demorou um pouco mais: até cerca de 5.000 a 10.000 passos, a primeira palavra, “Sutra” (amanhã), ainda era reconhecida como “Sve”, “Straj”, “Satra” e semelhantes. Após 20.000 passos, praticamente não dava para perceber diferenças entre as três ao ouvir.
Em números
Transcrevi com o Whisper large-v3 as frases de avaliação (14 em croata, 9 em japonês e 9 em inglês, todas fora dos dados de treinamento) e medi a taxa de erro de caracteres (CER) em relação ao roteiro. No japonês, para que variações na grafia dos kanji (como “asatte” e “depois de amanhã”) não fossem consideradas erros, comparei as frases após convertê-las para a leitura em katakana.
Primeiro, a média das 32 frases nos três idiomas. Entre parênteses está o número de correspondências exatas.
| Passos | Versão de 10 horas | Versão de 5 horas | Versão de 3 horas |
|---|---|---|---|
| 1.000 | 43,8% (2) | 41,9% (2) | 43,8% (1) |
| 2.000 | 16,6% (7) | 17,7% (12) | 17,6% (9) |
| 3.000 | 7,7% (16) | 6,2% (16) | 9,9% (14) |
| 4.000 | 5,9% (21) | 3,7% (19) | 2,7% (25) |
| 5.000 | 2,1% (23) | 3,3% (20) | 4,5% (23) |
| 10.000 | 1,4% (24) | 1,1% (23) | 1,7% (24) |
| 15.000 | 0,8% (26) | 0,7% (26) | 2,0% (24) |
| 20.000 | 0,7% (27) | 0,8% (26) | 0,9% (25) |
| 30.000 | 0,7% (28) | 0,8% (26) | 1,7% (26) |
| 40.000 | 1,2% (25) | 1,7% (26) | 0,7% (26) |
| 45.000 | 3,9% (25) | 0,7% (28) | 0,7% (27) |
| 50.000 | 0,7% (28) | 0,7% (26) | 0,7% (28) |
| 60.000 | 1,8% (26) | 0,8% (27) | 1,9% (25) |
Por idioma, fica assim (croata / japonês / inglês).
| Passos | Versão de 10 horas | Versão de 5 horas | Versão de 3 horas |
|---|---|---|---|
| 5.000 | 2,8 / 1,2 / 1,8% | 6,5 / 1,2 / 0,3% | 2,0 / 1,8 / 11,1% |
| 10.000 | 2,2 / 1,2 / 0,3% | 1,7 / 1,2 / 0,3% | 2,9 / 1,2 / 0,3% |
| 20.000 | 0,8 / 1,2 / 0,0% | 0,9 / 1,2 / 0,0% | 0,8 / 1,8 / 0,3% |
| 30.000 | 0,7 / 1,2 / 0,0% | 1,1 / 1,2 / 0,0% | 3,2 / 1,2 / 0,0% |
| 50.000 | 0,7 / 1,2 / 0,0% | 0,9 / 1,2 / 0,0% | 0,7 / 1,2 / 0,0% |
- Os melhores resultados foram os da versão de 10 horas aos 30.000 e 50.000 passos, da versão de 5 horas aos 45.000 passos e da versão de 3 horas aos 50.000 passos. Em todos os casos, a taxa geral foi de 0,7%, com 28 das 32 frases em correspondência exata, e as três chegaram ao mesmo ponto.
- Os pontos em que os números saltam no meio do caminho quase sempre se devem a uma diferença de uma única palavra. Por exemplo, “Bok!” (oi) foi reconhecido como “Bog”, e “Hi!” como “Bye.”; em frases curtas de uma ou duas palavras, uma diferença de apenas um caractere faz a taxa de erro subir bastante.
- Na versão de 3 horas, o croata fica na faixa dos 3% entre 15.000 e 35.000 passos. Ao examinar o conteúdo, quase todos os casos eram uma única frase em que “Bok!” era lido como “Blok”. Aos 50.000 passos, isso já estava corrigido. Com menos dados, parece levar mais tempo para eliminar peculiaridades em frases curtas.
- Os 1,2% no japonês correspondem, todas as vezes, a uma única frase em que o “shh” de “Shh, silêncio.” é transcrito como “shi”. É uma questão de até onde escrever a vogal longa; ao ouvir, ela diz corretamente “shh”.
- No restante do croata, quase tudo são hábitos do sistema de transcrição, como escrever “prekosutra” (depois de amanhã) dividido em duas palavras: “preko sutra”.
A diferença entre 10, 5 e 3 horas ficou dentro da margem de erro. Pelo menos quanto a “conseguir ler conforme o roteiro”, 3 horas por idioma foram suficientes. No entanto, como a versão de 3 horas demorou mais para se estabilizar, é melhor treiná-la por mais de 40.000 passos.
Comparando com frases repletas de termos técnicos
Se, para conversas comuns, poucos dados já bastam, talvez mais dados tenham vantagem com palavras difíceis que quase não aparecem nos dados de treinamento. Pensando nisso, criei dez frases repletas de termos técnicos de medicina, TI, direito, química, finanças e outras áreas, e fiz com que fossem lidas nos três idiomas. Todos os modelos usados eram de 50.000 passos.
- Como há suspeita de infarto do miocárdio, prepare imediatamente a angiografia coronária e a terapia trombolítica.
- Suspeitamos de um infarto do miocárdio, portanto prepare imediatamente a angiografia coronária e a terapia trombolítica.
- Suspeitamos de um infarto do miocárdio, portanto prepare imediatamente a angiografia coronária e a terapia trombolítica.
- Este algoritmo combina uma rede neural convolucional com uma arquitetura recorrente.
- Este algoritmo combina uma rede neural convolucional com uma arquitetura recorrente.
- Este algoritmo combina uma rede neural convolucional com uma arquitetura recorrente.
- O advogado do réu sustentou a absolvição no recurso, alegando a obtenção ilegal de provas.
- O advogado do réu sustentou a absolvição no recurso, citando a obtenção ilegal de provas.
- O defensor do réu solicitou uma sentença absolutória no processo de recurso devido a provas obtidas ilegalmente.
- Na fotossíntese, a cadeia de transporte de elétrons atua na membrana dos tilacoides do cloroplasto, produzindo trifosfato de adenosina.
- Na fotossíntese, a cadeia de transporte de elétrons na membrana dos tilacoides do cloroplasto produz trifosfato de adenosina.
- Na fotossíntese, a cadeia de transporte de elétrons na membrana dos tilacoides do cloroplasto produz trifosfato de adenosina.
- A distribuição de chaves criptográficas baseada em emaranhamento quântico pode, em princípio, detectar qualquer espionagem.
- A distribuição de chaves quânticas baseada em emaranhamento pode, em princípio, detectar qualquer espionagem.
- A distribuição de chaves quânticas baseada em emaranhamento pode, em princípio, detectar qualquer escuta clandestina.
- Em resposta à alta da inflação, o banco central decidiu elevar as taxas de juros e iniciar o aperto quantitativo.
- Em resposta à alta da inflação, o banco central decidiu elevar as taxas de juros e iniciar o aperto quantitativo.
- Devido ao aumento da inflação, o banco central decidiu elevar as taxas de juros e iniciar o aperto quantitativo.
- Pacientes com osteoartrite do joelho recebem injeções intra-articulares de ácido hialurônico combinadas com fisioterapia.
- Pacientes com osteoartrite do joelho recebem injeções intra-articulares de ácido hialurônico combinadas com fisioterapia.
- Pacientes com osteoartrite do joelho recebem injeções intra-articulares de ácido hialurônico junto com fisioterapia.
- Esta ponte sustenta um tabuleiro de concreto armado sobre vigas de concreto protendido.
- Esta ponte sustenta um tabuleiro de concreto armado sobre vigas de concreto protendido.
- Esta ponte sustenta uma laje de concreto armado sobre vigas de concreto protendido.
- A corretora de criptomoedas verifica a integridade de seu livro-razão distribuído com um algoritmo de consenso.
- A corretora de criptomoedas verifica a integridade de seu livro-razão distribuído com um algoritmo de consenso.
- A corretora de criptomoedas verifica a integridade do livro-razão distribuído por meio de um algoritmo de consenso.
- O uso excessivo de antibióticos leva ao surgimento de bactérias multirresistentes e aumenta o risco de infecções hospitalares.
- O uso excessivo de antibióticos leva a bactérias multirresistentes e aumenta o risco de infecções hospitalares.
- O uso excessivo de antibióticos leva a bactérias multirresistentes e aumenta o risco de infecções hospitalares.
| Frase | Versão de 10 horas | Versão de 5 horas | Versão de 3 horas |
|---|---|---|---|
| 1. Como há suspeita de infarto do miocárdio, prepare imediatamente a angiografia coronária e a terapia trombolítica. | Inglês Japonês Croata | Inglês Japonês Croata | Inglês Japonês Croata |
| 2. Este algoritmo combina uma rede neural convolucional com uma rede recorrente. | Inglês Japonês Croata | Inglês Japonês Croata | Inglês Japonês Croata |
| 3. O advogado do réu alegou inocência na apelação, devido à obtenção ilegal das provas. | Inglês Japonês Croata | Inglês Japonês Croata | Inglês Japonês Croata |
| 4. Na fotossíntese, a cadeia de transporte de elétrons atua na membrana dos tilacoides dos cloroplastos, sintetizando trifosfato de adenosina. | Inglês Japonês Croata | Inglês Japonês Croata | Inglês Japonês Croata |
| 5. A distribuição de chaves criptográficas que utiliza entrelaçamento quântico pode detectar interceptações por princípio. | Inglês Japonês Croata | Inglês Japonês Croata | Inglês Japonês Croata |
| 6. Diante da alta da inflação, o banco central decidiu elevar a taxa básica de juros e realizar aperto quantitativo. | Inglês Japonês Croata | Inglês Japonês Croata | Inglês Japonês Croata |
| 7. Para pacientes com osteoartrite do joelho, combinamos injeções intra-articulares de ácido hialurônico e fisioterapia. | Inglês Japonês Croata | Inglês Japonês Croata | Inglês Japonês Croata |
| 8. Esta ponte sustenta um tabuleiro de concreto armado com vigas de concreto protendido. | Inglês Japonês Croata | Inglês Japonês Croata | Inglês Japonês Croata |
| 9. A corretora de criptomoedas verifica a integridade do livro-razão distribuído por meio de um algoritmo de consenso. | Inglês Japonês Croata | Inglês Japonês Croata | Inglês Japonês Croata |
| 10. O uso excessivo de antibióticos favorece o surgimento de bactérias multirresistentes e aumenta o risco de infecções hospitalares. | Inglês Japonês Croata | Inglês Japonês Croata | Inglês Japonês Croata |
Resultados.
| Croata | Japonês | Inglês | Correspondências exatas em 30 frases | |
|---|---|---|---|---|
| Versão de 10 horas | 0,6% | 1,5% | 4,6% | 17 |
| Versão de 5 horas | 0,3% | 1,0% | 3,9% | 20 |
| Versão de 3 horas | 0,5% | 1,0% | 4,1% | 18 |
O resultado não foi que a versão de 10 horas fosse superior. As três ficaram praticamente no mesmo nível; na verdade, a versão de 5 horas foi ligeiramente melhor. Por precaução, também medi as versões de 10 e 5 horas em modelos com 60.000 etapas: a de 10 horas ficou em 1,9% e a de 5 horas, em 2,0%, invertendo o resultado. Ou seja, essa diferença foi uma oscilação casual, e não dá para dizer que alguma seja melhor que as outras. Apenas a versão de 3 horas foi sintetizada e transcrita na CPU, pois a GPU estava ocupada com outro trabalho. Por isso, as condições foram um pouco diferentes.
O mais interessante foi o tipo dos erros.
- Em inglês, “cryptocurrency” foi transcrito por todos os três modelos como algo parecido com “Kripke-Kunershi”, “Kripke-Kinoshi” ou “Kripik-Innershi”
- “intra-articular”, “multidrug-resistant” e “angiography” também foram distorcidos de forma semelhante pelos três modelos
- Em japonês, “冠動脈造影” foi transcrito pelos três como “〜増え”, e “床版”, como “障板”
- Em croata, “pooštravanje(aperto)” foi entendido por todos os modelos como “poštravanje”
Modelos treinados com quantidades diferentes de dados erram de forma semelhante nas mesmas palavras. No caso do inglês, a causa ficou clara: não era o modelo, mas sim a parte que converte caracteres em símbolos fonéticos.
Este modelo não lê os caracteres diretamente; ele lê símbolos fonéticos. Em inglês, o g2p_en estima a pronúncia de palavras que não estão no dicionário. Ao verificar na prática, “cryptocurrency” havia sido convertido em símbolos fonéticos próximos de “kuripakyunāshi”, e “angiography” em símbolos fonéticos com um n inserido no meio. O modelo apenas transforma em voz os símbolos fonéticos que recebe; por isso, erra nos mesmos pontos, independentemente de ter sido treinado com 10 ou 3 horas de dados.
No japonês, a situação é um pouco diferente. As leituras do OpenJTalk para “床版(ショーバン)” e “冠動脈造影(カンドーミャクゾーエー)” estavam corretas. “床版” ter se tornado “障板” foi uma troca por outro kanji com a mesma leitura, portanto a pronúncia está correta. Não é possível distinguir, com a forma de medição desta vez, se “造影” ter se tornado “増え” ocorreu porque o Whisper aproximou uma palavra incomum de uma palavra à qual está mais acostumado, ou porque a pronúncia do modelo ficou imprecisa. Ainda assim, também aqui os três modelos erraram de maneira semelhante.
Portanto, neste mecanismo, pelo menos a capacidade de lidar com termos técnicos em inglês é determinada pelo dicionário de pronúncia, não pela quantidade de dados de treinamento. Se quiser melhorar o desempenho com termos técnicos, é mais rápido cadastrar as palavras no dicionário do que aumentar os dados.
Resumo
- Foi possível fazer um único modelo pequeno (cerca de 32 milhões de parâmetros no total) falar três idiomas
- Com dados de treinamento de 10, 5 ou 3 horas para cada idioma, a precisão da leitura acabou sendo praticamente a mesma. A versão de 3 horas leva um pouco mais de tempo para se estabilizar
- Não houve diferença nem nos termos técnicos. Os erros ocorrem no dicionário de pronúncia e não são corrigidos pela quantidade de dados
Criar dados demanda tempo e dinheiro, então parece razoável começar com 3 horas para cada idioma e acrescentar mais se não for suficiente. Em seguida, pretendo aumentar o número de idiomas para dez com base neste resultado. No entanto, desta vez medi apenas “o que está sendo dito”. Em aspectos que não podem ser medidos pela taxa de erro de caracteres, como a naturalidade da voz e a amplitude emocional, ter mais dados pode ser vantajoso. Quero verificar isso ouvindo.



