No result training model in Brazilian Portuguese with UTF-8

Hello, I have been training for some time using DeepSpeech version 0.6.0 and I obtained good results by performing a training removing all transcripts with special characters here in Brazil (ÇÁÉÍÓÚÃÕÀÈÌÒÙ). Below are some results:

WER: 0.125000, CER: 0.086957, loss: 14.578989
 - wav: file:///content/pt/clips/common_voice_pt_21792873.wav
 - src: "pesquise no google por imagens de gatos pretos"
 - res: "pesquise no logo por imagens de gatos pretos"
--------------------------------------------------------------------------------
WER: 0.125000, CER: 0.063830, loss: 28.237568
 - wav: file:///content/pt/clips/common_voice_pt_20423985.wav
 - src: "tem amigos que participaram da palestra de hoje"
 - res: "tem amigos que participaram da palestra de de"
--------------------------------------------------------------------------------
WER: 0.111111, CER: 0.037037, loss: 8.572693
 - wav: file:///content/pt/clips/common_voice_pt_20423744.wav
 - src: "uma mulher afro americana anda de bicicleta na estrada"
 - res: "uma mulher ato americana anda de bicicleta na estrada"
--------------------------------------------------------------------------------
WER: 0.111111, CER: 0.088889, loss: 12.989378
 - wav: file:///content/pt/clips/common_voice_pt_20423538.wav
 - src: "como podemos saber que eles viram a casa dele"
 - res: "a podemos saber que eles viram a casa dele"
--------------------------------------------------------------------------------
WER: 0.111111, CER: 0.033898, loss: 13.304264
 - wav: file:///content/pt/clips/common_voice_pt_19366381.wav
 - src: "cinco senhoras bonitas ouvindo um apresentador de talk show"
 - res: "o cinco senhoras bonitas ouvindo um apresentador de talk show"
--------------------------------------------------------------------------------
WER: 0.100000, CER: 0.061224, loss: 3.942273
 - wav: file:///content/pt/clips/common_voice_pt_19337452.wav
 - src: "de noite o alarme despertou o de um sono profundo"
 - res: "de noite o alarme detectou o de um sono profundo"
--------------------------------------------------------------------------------
WER: 0.100000, CER: 0.020408, loss: 7.505576
 - wav: file:///content/pt/clips/common_voice_pt_20484293.wav
 - src: "a felicidade fecha os olhos e um acidente os abre"
 - res: "a felicidade fecha os olhos em um acidente os abre"
--------------------------------------------------------------------------------
WER: 0.090909, CER: 0.018519, loss: 4.392674
 - wav: file:///content/pt/clips/common_voice_pt_19813748.wav
 - src: "uma fileira de mesas e um banco fora de um restaurante"
 - res: "uma fileira de mesas em um banco fora de um restaurante"
--------------------------------------------------------------------------------
WER: 0.090909, CER: 0.020833, loss: 5.577119
 - wav: file:///content/pt/clips/common_voice_pt_19364781.wav
 - src: "foi a primeira vez que um ou outro tocou o outro"
 - res: "foi a primeira vez que um o outro tocou o outro"
--------------------------------------------------------------------------------
WER: 0.090909, CER: 0.040816, loss: 16.423504
 - wav: file:///content/pt/clips/common_voice_pt_20219763.wav
 - src: "o mel tem um aroma picante de tomilho e erva doce"
 - res: "o mel tem um aroma picante de tomilho e esta doce"
--------------------------------------------------------------------------------
WER: 0.090909, CER: 0.052632, loss: 17.973602
 - wav: file:///content/pt/clips/common_voice_pt_20307320.wav
 - src: "um homem de bigode tenta esculpir em um pilar de concreto"
 - res: "um homem de bigode tenta esculpir um pilar de concreto"
--------------------------------------------------------------------------------
WER: 0.083333, CER: 0.031746, loss: 7.299757
 - wav: file:///content/pt/clips/common_voice_pt_20456961.wav
 - src: "um cachorro em uma piscina e outro cachorro na beira da piscina"
 - res: "o cachorro em uma piscina e outro cachorro na beira da piscina"
--------------------------------------------------------------------------------
WER: 0.083333, CER: 0.042857, loss: 7.889244
 - wav: file:///content/pt/clips/common_voice_pt_19410106.wav
 - src: "criptografia forte pode impedir que um homem no meio leia uma conversa"
 - res: "criptografia forte pode impedir que um homem no meio de uma conversa"
--------------------------------------------------------------------------------
WER: 0.076923, CER: 0.025974, loss: 5.313151
 - wav: file:///content/pt/clips/common_voice_pt_19462397.wav
 - src: "mas ele decidiu primeiro comprar sua padaria e colocar algum dinheiro de lado"
 - res: "mas ele decidiu primeiro comprar sua padaria colocar algum dinheiro de lado"
--------------------------------------------------------------------------------
WER: 0.076923, CER: 0.015873, loss: 7.950589
 - wav: file:///content/pt/clips/common_voice_pt_20143238.wav
 - src: "um homem novo em uma camisa amarela que senta se em um triciclo"
 - res: "um homem novo em uma camisa amarela que sinta se em um triciclo"
--------------------------------------------------------------------------------
WER: 0.076923, CER: 0.014493, loss: 8.040730
 - wav: file:///content/pt/clips/common_voice_pt_19839026.wav
 - src: "mulher que sorri ao guardarar um livro e uma estrela de papel amarela"
 - res: "mulher que sorri ao guardarar um livro em uma estrela de papel amarela"
--------------------------------------------------------------------------------
WER: 0.076923, CER: 0.016129, loss: 11.461640
 - wav: file:///content/pt/clips/common_voice_pt_20148278.wav
 - src: "um surfista acabou de sair de uma onda em sua prancha de surfe"
 - res: "um surfista acabou de sair de uma onda em sua prancha de surf"
--------------------------------------------------------------------------------
WER: 0.076923, CER: 0.014706, loss: 15.790494
 - wav: file:///content/pt/clips/common_voice_pt_21805916.wav
 - src: "um menino salta sobre uma corda vermelha e preta em um parque lotado"
 - res: "um menino salta sobre uma corda vermelha em preta em um parque lotado"
--------------------------------------------------------------------------------
WER: 0.071429, CER: 0.064103, loss: 19.014351
 - wav: file:///content/pt/clips/common_voice_pt_19479833.wav
 - src: "um homem mais velho desenterra a areia enquanto uma menina mais nova o observa"
 - res: "um homem mais velho desenterra a areia enquanto uma menina mais nova o saga"
--------------------------------------------------------------------------------
WER: 0.071429, CER: 0.039474, loss: 25.354370
 - wav: file:///content/pt/clips/common_voice_pt_19401487.wav
 - src: "um homem e uma mulher sentados em uma mesa com bebidas e conversas profundas"
 - res: "um homem e uma mulher sentados em uma mesa com bebidas conversas profundas "
--------------------------------------------------------------------------------
WER: 0.000000, CER: 0.000000, loss: 0.001860
 - wav: file:///content/pt/clips/common_voice_pt_20592014.wav
 - src: "dois cachorros"
 - res: "dois cachorros"
--------------------------------------------------------------------------------

After that, I did the same training now with transcripts that contained special characters here in Brazil (ÇÁÉÍÓÚÃÕÀÈÌÒÙ) and the result was as follows:

Test on ../pt/clips/test.csv - WER: 1.000000, CER: 0.976881, loss: 30.586992
--------------------------------------------------------------------------------
WER: 1.000000, CER: 1.000000, loss: 0.014818
 - wav: file:///content/pt/clips/common_voice_pt_19451742.wav
 - src: "não"
 - res: ""
--------------------------------------------------------------------------------
WER: 1.000000, CER: 1.000000, loss: 0.057255
 - wav: file:///content/pt/clips/common_voice_pt_22443535.wav
 - src: "um"
 - res: ""
--------------------------------------------------------------------------------
WER: 1.000000, CER: 1.000000, loss: 0.060023
 - wav: file:///content/pt/clips/common_voice_pt_22443534.wav
 - src: "oito"
 - res: ""
--------------------------------------------------------------------------------
WER: 1.000000, CER: 1.000000, loss: 0.150504
 - wav: file:///content/pt/clips/common_voice_pt_21711673.wav
 - src: "toque"
 - res: ""
--------------------------------------------------------------------------------
WER: 1.000000, CER: 1.000000, loss: 0.369686
 - wav: file:///content/pt/clips/common_voice_pt_22474288.wav
 - src: "não"
 - res: ""
--------------------------------------------------------------------------------
WER: 1.000000, CER: 1.000000, loss: 0.902235
 - wav: file:///content/pt/clips/common_voice_pt_19405113.wav
 - src: "continua"
 - res: ""
--------------------------------------------------------------------------------
WER: 1.000000, CER: 1.000000, loss: 2.254852
 - wav: file:///content/pt/clips/common_voice_pt_22443533.wav
 - src: "zero"
 - res: ""
--------------------------------------------------------------------------------
WER: 1.000000, CER: 1.000000, loss: 2.724041
 - wav: file:///content/pt/clips/common_voice_pt_22019272.wav
 - src: "sim"
 - res: ""
--------------------------------------------------------------------------------
WER: 1.000000, CER: 1.000000, loss: 2.952336
 - wav: file:///content/pt/clips/common_voice_pt_19937907.wav
 - src: "caracol"
 - res: ""
--------------------------------------------------------------------------------
WER: 1.000000, CER: 1.000000, loss: 2.964061
 - wav: file:///content/pt/clips/common_voice_pt_20204957.wav
 - src: "venha"
 - res: ""
--------------------------------------------------------------------------------

He simply did not transcribe anything. I used the same parameters as the first workout and added the --utf8 flag:

--train_files ../pt/clips/validated.csv \
--dev_files ../pt/clips/dev.csv \
--test_files ../pt/clips/test.csv \
--train_batch_size 100 \
--dev_batch_size 100 \
--test_batch_size 100 \
--n_hidden 375 \
--epochs 200 \
--noearly_stop \
--dropout_rate 0.22 \
--learning_rate 0.00095 \
--export_dir "/content/drive/My Drive/stt/model/" \
--checkpoint_dir "/content/drive/My Drive/stt/checkpoint/" \
--alphabet_config_path ../data/alphabet.txt \
--lm_binary_path ../data/lm.binary \
--lm_trie_path ../data/trie \
--utf8

To make LM and TRIE I used:
…/kenlm/build/bin/./lmplz --text …/data/lm2.txt --arpa …/data/words.arpa --o 3 --discount_fallback
…/kenlm/build/bin/./build_binary -T -s …/data/words.arpa …/data/lm.binary
…/tensorflow/bazel-bin/native_client/generate_trie …/data/alphabet.txt …/data/lm.binary …/data/trie

My Alphabet:

a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
'
-
ç
á
é
í
ó
ú
à
è
ì
ò
ù
ã
õ
â
ê
î
ô
û

Do you have any idea what this problem might be? Is it the very old version I’m using?

I’m quite a layman regarding transcription so any help is welcome!
Thank you in advance,

Don’t. The --utf8 flag completely changes the creation process for the language model. You should instead add the special characters to your alphabet.

1 Like

Thanks for the quick response, I will retake the training by removing the --utf8 and update this topic as soon as I have a result

It worked for me! The test ended with:

Test on ../pt/clips/test.csv - WER: 0.194904, CER: 0.114473, loss: 33.610485

Obviously, the values ​​are not ideal, but as my database is very small, it is already a great result. Thank you very much.