Você está na página 1de 16

GPASV Grupo de Pesquisas e Aplicaes em Sinais de Voz

Instalando,configurandoeexecutando

Sphinx3eSphinxTrain.
OsistemautilizadoseroSphinx,projetadonaUniversidadeCarnegieMellom.OSO
utilizadoparataltutorialoLINUXDEBIAN.
UmsistemabaseadoemHMM(ModelosOcultosdeMarkov),comotodososoutros
sistemasdereconhecimentodevoz,aprimeiracoisaaserfeitaensinaloascaractersticas
(ou parmetros) de um conjunto de unidades de som, e em seguida, usando o que
aprendeusobreasunidadesensinadas,encontraraseqnciamaisprovveldeunidadesde
som para um determinado sinal de voz. O processo de aprender os rtulos do som
chamadotreinamento.Oprocessodeutilizaroconhecimentoadquiridoparadeduzira
sequnciamaisprovveldeunidadesdeumdeterminadosinalchamadodecodificao,
ousimplesmentereconhecimento.
Sendoassim,vocvaiprecisardestescomponentesdosistemaSPHINXparapoder
usar na formao e para o reconhecimento das palavras. Em outras palavras, voc vai
precisardaSPHINXtraineredoSPHINXdecoder.
Vocreceberinstruessobrecomobaixar,compilareexecutaroscomponentes
necessriosparaconstruirumsistemacompletodereconhecimentodevoz.Ouseja,voc
receberinstruessobrecomousarSphinxTraineSPHINX3.
Componentesfornecidosparaotreinamento
OSPHINXtrainerconsisteemumconjuntodeprogramas,cadaumresponsvelpor
uma tarefa bem definida, e um conjunto de scripts que organiza a ordem em que os
programassochamados.
Otraineraprendeosparmetrosdosmodelosdossonsusandoumconjuntodesinais
devozcomoamostra.Istochamadodebancodedadosdetreinamento.Aescolhade
basesdedadosdetreinamentotambmserfornecidoavoc.Otrainertambmprecisada
informaosobreosparametrosdasunidadesdesomquevocqueraprender,epelomenos
a seqncia em que eles ocorrem em cada sinal de voz no seu banco de dados de
treinamento.Esta informao fornecidaao treinadoratravsdeum arquivo chamado
transcriptfile,emqueasequnciadepalavraseossonssemvozsoescritosexatamente
comoocorreuemumsinaldevoz,seguidoporummarcadorquepodeserutilizadopara
associarestasequnciacomosinaldevozcorrespondente.
O trainer,emseguida,olhaparaumdicionrioquemapeiacadapalavradeuma
seqnciadeunidadesdesom,paraobteraseqnciadeunidadesdesonsassociadosa
cadasinal.Assim,almdossinaisdevoz,tambmserdadoumconjuntodetranscritos
paraobancodedados(emum nicoarquivo)edoisdicionrios,umemquepalavras
legtimasnalnguasoseqnciasdeunidadesdesom eoutroemqueossilenciosso
mapeadosparacorrespondentesunidadesdesomdefalaesilencio.
Vamos nos referir ao primeiro como o dicionrio do idioma (ou linguistico) e o
segundocomoodicionriodepreenchimento.

Criado por: Dunfrey Pires Arago

GPASV Grupo de Pesquisas e Aplicaes em Sinais de Voz

Emresumo,oscomponentesfornecidosavocparaotreinamentosero:
1.Ocdigofontedotrainer
2.Ossinaisacsticos
3.Oarquivotranscritocorrespondente
4.Umdicionriolinguistico
5.Umdicionriodepreenchimento
Componentesfornecidosparadecodificao
O decodificador tambm composto por um conjunto de programas, que foram
compiladosparadarum nicoexecutvelqueirexecutaratarefadereconhecimento,
dadasasentradascertas.Asentradasqueprecisamserdadasso:osmodelosacsticos
treinados,umarquivocomondicedosmodelos,ummodelolinguistico,umdicionriode
lngua, um dicionrio de preenchimento, bem como o conjunto de sinais acsticos que
precisamserreconhecidos.Osdadosaseremreconhecidossocomumentereferidocomo
dadosdeteste.
Emresumo,oscomponentesfornecidosavocparadecodificaosero:
1.Ocdigofontedodecodificador
2.Odicionriolinguistico
3.Odicionrioenchimento
4.Omodelodelinguagem
5.Osdadosdeteste
Almdessescomponentes,vocvaiprecisardosmodelosacsticosquevoctem
treinado para o reconhecimento. Voc ter que fornecer estes para o decodificador.
Enquanto voctreinarosmodelosacsticos,o trainervaigerararquivosdemodelo de
ndiceadequadamentenomeados.
Umarquivodemodeloindexsimplesmentecontmidentificadoresnumricospara
cadaestadodecadaHMM,quesoutilizadospelotrainereodecoderparaacessaros
conjuntos de parmetros para cada estado HMM. Com qualquer conjunto de modelos
acsticos, o arquivo de modelo de ndice correspondente deve ser utilizado para a
decodificao.

Configurandoosistema
Vocvaiterquebaixaremontarvrioscomponentesparaconfigurarosistemapor
completo. Desde que voc tenha todo o software necessrio, voc vai ter que fazer
downloaddopacotededados,otrainer,eumdosdecoderSphinx,nestecasousaremoso
Sphinx3.
Softwarenecessrioantesdecomear
VocvaiprecisardoPerlparaexecutarosscriptsfornecidos,eumcompiladorCpara
compilarocdigofonte.

Criado por: Dunfrey Pires Arago

GPASV Grupo de Pesquisas e Aplicaes em Sinais de Voz

Perl
OLinuxgeralmentevemcomalgumaversodoPerl.SevocnotemPerlinstalado,
porfavor,instaleo.
CCompiler
SphinxTrain eSPHINX3 usao GNU autoconf para descobririnformaesbsicas
sobre o sistema, e deve compilar com sucesso na maioria dos sistemas Unix e seus
derivados,ecertamenteemLinux.OcdigocompiladousandoocomandomakedoGNU
ecompiladorCdaGNU(ogcc),disponveisemtodasasdistribuiesLinux.
AlinhadordePalavras
Vocvaiprecisardeumprogramadealinhamentodepalavra,sevocquisermedira
precisododecodificador.Umcomumenteusado,disponvelapartirdoInstitutoNacional
dePadreseTecnologia(NIST),osclite,fornecidocomopartedeseuspacotesquegera
numeros,oupontuaes.Podeserencontradonestelink:
http://www.itl.nist.gov/iad/mig//tools/

Configurandoosdados
OGrupoSphinxdisponibilizaduasbasesdedadosdeudioquepodemserusados
neste tutorial. Cada um tem suas peculiaridades, e so fornecidas apenas como uma
convenincia. Os dados apresentados no so suficientes para criar um sistema de
reconhecimento de voz de alta performance. Eles s so fornecidos com o objetivo de
ajudarvocaaprenderausarosistema.
AsbasesdedadosfornecidassooAN4queincluioudio,masnoumabasede
dadosmuitopequeno,ondevocpodeescolhersevocdesejaincluiracriaodearquivos
de recursos em seus experimentos, e a outra base o RM1 que um pouco maior,
resultandoassimnumsistemacomumdesempenholigeiramentemelhor.O udiono
fornecido,umavezqueestlicenciadomaterial.
Iniciandoospassos:
1.Crieumdiretrioparaosistema,eentrenodiretrio:
$mkdirtutorial
$cdtutorial
2.Faaodownloaddoaudio(usaremosoAN4),esalveonapastatutorialcriadoa
pouco:
$gunzipcan4_sphere.tar.gz|tarxf
3.Dumls,paraverificarsesuapastaan4,foigeradacomarquivosesubpastas
dentro
$ls.

Criado por: Dunfrey Pires Arago

GPASV Grupo de Pesquisas e Aplicaes em Sinais de Voz

Configurandootrainer
RecuperaoCdigo
SphinxTrainpoderecuperarseusandosubversion(SVN)oubaixandoumarquivo tar.
Osvntornamaisfcilparaatualizarocdigocomoasnovasalteraessoadicionadasao
repositrio,masrequerquevocinstalesvn.Oarquivotarmaisprontamentedisponveis.
Nonossocaso,faremosodownloaddoarquivo.tar,usandoolink:
http://cmusphinx.org/download/nightly/SphinxTrain.nightly.tar.gz
FeitoodownloaddoSphinxTraineextraionapastatutorial:
$gunzipc/home/usuario/Download/SphinxTrain.nightly.tar.gz|tarxf
4.executeumlseverifiquesuapastadetrabalhotutorial
5.entrenapastaecompileoSphinxTrain
$cdSphinxTrain
$./configure
$make
6.AgoraconfigureoTutorial,aindanapastaSphinxTrain,execute:
$perlscripts_pl/setup_tutorial.plan4
Serretornadoaofinaldaexecuo,algosimilara:
GeneratingSphinxTrainspecificscriptsandconfigfile
Setupforacoustictrainingforan4complete

Configurandoodecodificador
OGrupo Sphinx temvriosdescodificadoresdiferentes,cujascaractersticaspodem
orientlo na escolha do melhor para sua aplicao. A grosso modo, estes podem ser
descritoscomosesegue.
PocketSphinx: Esta uma verso modernizada do Sphinx2, especialmente
otimizado parasistemasembarcadoseportteis.Eletambmconsomeemmdia
20%menosmemriae520%menostempodeCPUdoqueSPHINX2.Noentanto,
eleestemdesenvolvimentoativo,demodoqueainterfaceeconjuntoderecursos
podeserinstvel.

Criado por: Dunfrey Pires Arago

GPASV Grupo de Pesquisas e Aplicaes em Sinais de Voz

SPHINX3: Usa HMMs contnuos. Ele pode lidar com ambos ao vivo e
decodificaoemlote.
SPHINX4:UsaHMMscontnuos.EscritonalinguagemdeprogramaoJava.Ele
oferecealtaflexibilidadeegrandeprecisoevelocidadeparapequenastarefas.
Parasuaaplicao,vocpodeescolherqualquerumdecodificadoradequadoparavoc,
masnestetutorialusaremosSPHINX3comoumdecodificadordebase. umaboaidia
paratestarseumodelocomSPHINX3primeiroparadetectarerrosemfasesiniciais.
SPHINX3Instalao
SPHINX3podeserobtidousandosubversion(SVN)oubaixandoumarquivotar.svn
torna mais fcil para atualizar o cdigo como as novas alteraes so adicionadas ao
repositrio,masrequerquevocinstalesvn.Oarquivotarmaisprontamentedisponvel.
SPHINX3 tambm est disponvel como uma verso do SourceForge.net , que o que
usaremos.
sphinxbase:http://cmusphinx.org/download/nightly/sphinxbase.nightly.tar.gz
sphinx3:http://cmusphinx.org/download/nightly/sphinx3.nightly.tar.gz
Guardeasparaomesmotutorialdiretrio.Extrairocontedodaseguinteforma:
$gunzipcsphinxbase.nightly.tar.gz|tarxf
$gunzipcsphinx3.nightly.tar.gz|tarxf

Compilando
7. Entrenapasta
$cdsphinxbase
$./configure
$make
8. Agoraentrenapastadosphinx
$cd../sphinx3
$./configureprefix=`pwd`/buildwithsphinxbase=`pwd`/../sphinxbase
$make
$makeinstall
Depoisdecompilarocdigo,vocterqueconfigurarotutorialcopiandotodosos
executveise scripts relevantesparaamesma reaqueosdados.Assumindoqueoseu
diretriodetrabalhoatualtutorial,vocvaiprecisarfazeroseguinte.
Aindanapastasphinx3
$perlscripts/setup_tutorial.plan4
Criado por: Dunfrey Pires Arago

GPASV Grupo de Pesquisas e Aplicaes em Sinais de Voz

Fazendoumtestedetreinamentopreliminar
Entrenapastaan4
$cd../an4/
Os scripts devem trabalhar de forma separada, a menosque voc est treinando
modelos para o PocketSphinx. Neste caso, voc ter que editar o arquivo
etc/sphinx_train.cfg,descomentandoalinhaquedefineavarivel $CFG_HMM_TYPE,
fazendodaseguintemaneira:
$geditetc/sphinx_train.cfg
Aoabriroarquivo,faa:
$CFG_HMM_TYPE='.cont.';#SphinxIII
#$CFG_HMM_TYPE='.semi.';#PocketSphinxandSphinxII
(COMENTADA)
EmmquinasLinux,vocpodeconfiguraros scripts paratirarproveitodosvrios
processadores. Para fazer isso, editar etc/sphinx_train.cfg, altere a linha que define a
varivel $CFG_NPART paracoincidircomonmerode CPUs noseusistema,eeditara
linhadefinindo$CFG_QUEUE_TYPEaoseguinte:
#Queue::POSIXparamltiplasCPUsnamquina
#Queue::PBSusarumPBS/TORQUEemfila
$CFG_QUEUE_TYPE="Queue::POSIX";
(ACRESCENTADO)
O sistema no funciona diretamente com sinais acsticos. Os sinais so primeiro
transformadosnumasequnciadevectorescaractersticos,quesoutilizadosemlugardos
sinaisacsticosreais.Pararealizaressatransformao(ouparametrizao)dedentrodo
diretrioan4,digiteoseguintecomandonalinhadecomando.
$perlscripts_pl/make_feats.plctletc/an4_train.fileids
Este script ir calcular, para cada sentena, uma seqncia de vetores de 13
dimenses (vetores de caractersticas) que consistem nos coeficientes Melcepstrais
(MFCCs).Notequealistadosarquivoscontmumalistacomoscaminhoscompletospara
osarquivosdeudio.Umavezqueosdadosestotodoslocalizadosnomesmodiretrio
quevocesttrabalhando,oscaminhossorelativos,noabsolutos.Vocpodeterque
mudarisso,usandooarquivoan4_test.fileids,sealocalizaodosdadosdiferente.Esta
Criado por: Dunfrey Pires Arago

GPASV Grupo de Pesquisas e Aplicaes em Sinais de Voz

etapalevacercade10minutosparacompletaremumamquinarpida,masotempopode
variar.Comoeleestsendoexecutado,vocpodequerercontinuaraleitura.OsMFCCs
sercolocadoautomaticamenteemumdiretriochamado./feat.Notequeotipodevetor
decaractersticasvoccalculadossinaisdefalaparaotreinamentoereconhecimento,fora
destetutorial.
Voc pode usar qualquer tcnica de parametrizao e calcular outros MFCCs.
SPHINX3eSPHINX4podemusarosrecursosdequalquertipooudimenso.Nestetutorial,
noentanto,vocvaiusarMFCCsporduasrazes:a)elessoatualmenteconhecidospara
resultarnomelhordesempenhodereconhecimentoemsistemasbaseadosemHMMsoba
maioriadascondiesacsticas,eb)estetutorialnosedestinaacopiaroprocessamento
dosinalparametrizadoeapenasapontaparaumaplataformapadrodeutilizaoparaa
finalidade.Agoravocpodecomearatreinarosistema.
No diretrio de scripts (./scripts_pl), existem vrios diretrios numeradosperl
scripts_pl/make_feats.plctletc/ynoguti_train.fileidssequencialmentede00*pormeiode
99*.Cadadiretriooutemumdiretriochamadoslave*.ploutemumnicoarquivocom
extenso .pl . Sequencialmente percorreremos os diretrios e executaremos tanto a do
slave*.Plouonicoarquivopl.
Considerandoquevocestnapasta/an4/Vocpodeexecutardaseguinteforma:
$perlscripts_pl/00.verify/verify_all.pl
$perlscripts_pl/10.vector_quantize/slave.VQ.pl
$perlscripts_pl/20.ci_hmm/slave_convg.pl
$perlscripts_pl/30.cd_hmm_untied/slave_convg.pl
$perlscripts_pl/40.buildtrees/slave.treebuilder.pl
$perlscripts_pl/45.prunetree/slavestatetying.pl
$perlscripts_pl/50.cd_hmm_tied/slave_convg.pl
$perlscripts_pl/90.deleted_interpolation/deleted_interpolation.pl
$perlscripts_pl/99.make_s2_models/make_s2_models.pl
ousimplificarerodarRunAll.pl:
$perlscripts_pl/RunAll.pl
Aorodarocomando,aparecerumaimagemsemelhanteaesta(figura1):

Criado por: Dunfrey Pires Arago

GPASV Grupo de Pesquisas e Aplicaes em Sinais de Voz

imagem1
Daquiemdiante,vamosnosreferirao script quevoctemqueexecutaremcada
diretriosimplesmentecomoslave*.pl.Emdiretriosondehumarquivo,entendaocomo
oarquivonico.plpresentenodiretrio.
Osscriptslanaro jobs emsuamquinaquepoderodemoraralgunsminutosna
execuo. Antes de executar qualquer script, verifique o contedo do diretrio atual.
Depoisdeexecutarcadaslave*.plobserveocontedonovamente.Vriosdiretriossero
criados.Essesdiretrioscontmarquivosqueserogeradosnocursodotreinamento.Neste
pontovocnoprecisasabersobreocontedodestesdiretrios,emboraalgunsdosnomes
dediretriopossamserautoexplicativoevocpoderexplorlos,casoqueira.
Umdosarquivosqueaparecemnoseudiretrioatualumarquivo.html,chamado
poran4.htmlourm1.html,dependendodequalbancodedadosvocestejausando.Este
arquivoirconterumrelatriodosjobsexecutados.Verifiqueseo job foiconcluidocom
xito.Sentopoderrodaroprximo slave*.pl naseqnciaespecificada.Repitaeste
processoatquevoctenhaexecutadooslave*.pldetodososdiretrios.
Notequeesteprocessocomearnoscript00*at99*,vocirgerarumconjunto
demodelosacusticos,cadaumdosquaispoderiamserusadosparaoreconhecimento.
Certifiquesetambmquealgunspassossorequeridosapenasparaacriaode
modelossemicontinuo.Sevocexecutarestespassosenquantocriaosmodeloscontinuos,
os scripts noirofazernada.Umavezqueestes jobs foremexecutadosem 20.ci_hmm
foremconcluidos,voctertreinadoomodelodeContextoIndependente(CI)paraoestado
unidades de subpalavras em seu dicionrio. Enquanto os jobs executados do diretrio
30.cd_hmm_united forem concluidos, voc ter treinado os modelos de Contextos
Dependentesdeunidadesdesubpalavras(ostrifonemas)comseusestadosisoladamente.
EstessochamadosdemodelosisoladosCDesonecessariosparaconstruirarvoresde
Criado por: Dunfrey Pires Arago

GPASV Grupo de Pesquisas e Aplicaes em Sinais de Voz

decisesnaordemdeagruparosestados.
Osjobsem40.buildtreesiroconstruirrvoresdedecisoparacadaestadodecada
unidadedesubpalavra.Os jobs em 45.prunetree vaiselecionarasrvoresdedecisoe
amarraraosestados.Apsisso,osjobsem50.cdhmm_tiedvatreinarosmodelosfinais
para os trifonemas em seu corpus de treinamento. Estes so chamados de modelos
amarradoCD. Os modelos amarradosCD so treinados em vrios estagios. Comeamos
com 1 Gaussiana por estado de HMM, aps isto, ns treinamos com 2 Gaussianas por
estadosHMMseassimpordianteatqueonmerodesejadodeGaussianasporEstado
foramtreinados.
Os jobs em 50.cdhmm_tied vo treinar automaticamente todos esses modelos
amarradoCDintermedirios.Nofinalde qualquer estgiovocpoderusarosmodelos
paraoreconhecimento.Lembresequevocpodedecodificarmesmoquandootreinamento
estiveremandamento,desdequevocestejacertodequevoccruzouoestgioquegera
osmodelosquevocquerparadecodificar.

Comorealizarumadecodificaopreliminar
Decodificaorelativamentesimplesdeexecutar.Primeiro,calculacaractersticas
MFCCparatodooconjuntodeteste.ParacalcularMFCCsapartirdosarquivoswave,a
partirdodiretriodenvelsuperior,ouseja,an4,digiteoseguintenalinhadecomando:
$perlscripts_pl/make_feats.plctletc/an4_test.fileids
Sercompletadoemalgunsminutos.Vocagorapoderodarodecodificador,usando
ocomando:
$perlscripts_pl/decode/slave.pl
Usartodosestescomponentesprovidosparaadecodificao,incluindoosmodelos
acusticoseomodelodoarquivoindexoajudaagerarseutreinamentopreliminar,para
reconhecimento com os seus dados de testes. Quando o job de reconhecimento
completado,oscriptdereconhecimentocomputaaTACADEERRODAPALAVRA(Word
ErrorRateWER)ouaTAXADEERRODASENTENA(SentenceErrorRateSER).
Observequeestescriptvemcomumafunobuiltinmuitosimplesquefazocalculo
deSER.AmenosquevocutilizamquinasCMU,sevocpretendecomputarataxade
errosdepalavras(WER)vocirterdefazerdownloadecompilarocodigoparatal.Um
modo popular, usado comumente na comunidade de pesquisa o fornecido pelo NIST
(maioresdetalhesnaseodoinicioAlinadordePalavras).
Sevocpossuiumprogramaquefazoalinhamento,vocpodealteraroarquivo
etc/sphinx_decode.cfgeentouslo.Voctemquemudaraseguintelinha:
$DEC_CFG_ALIGN="builtin";
SevocestexecutandoosscriptsnaCMU,alinhaacimaseropadropara:
Criado por: Dunfrey Pires Arago

GPASV Grupo de Pesquisas e Aplicaes em Sinais de Voz

$DEC_CFG_ALIGN=\\
"/afs/cs.cmu.edu/user/robust/archive/third_party_packages/NIST_scoring_tools/sctk
/linux/bin/sclite";
Quando voc executar o script de decodificao, ele ir imprimir as informaes
sobreaprecisononvelsuperiordapginahtml.paraasuaexperincia.Eletambmir
criardoisconjuntosdearquivos.Umdessesconjuntos,comaextenso.match,quecontm
ashiptesescomosadapelodecodificador,eooutroconjunto,comaextenso.align,que
contmoalinhamentogeradopeloseuprogramadealinhamento,oupelo scriptbuiltin,
com os resultados de comparao entre a hiptese decodificador e as transcries
fornecidas.SevocusouaferramentaNIST,oarquivo.htmlirconterumalinhacomoa
seguinte,sevocusouan4:
SENTENCEERROR:56.154%(73/130)WORDERRORRATE:16.429%(127/773)
Aseguir,segueumaimagemdemonstrativa(figura2).

figura2

Comotreinar,equesteschave(parametros)paraotreinamento
Agora voc pode comear seus prprios testes. Para cada treinamento e
decodificao,vocprecisaprimeirodarlheumnome.Vamosreferiraonomeexperimento
desuaescolhapor$taskname.Porexemplo,osnomesdadosaosexperimentosusandoas
duasbasesdedadosdisponveisso an4 erm1 .Suaescolhade $taskname serusado
automaticamenteemtodososarquivosparaotreinamentoeexecutarreconhecimentopara
fcilidentificao.Todososdiretriosearquivosnecessriosparaesteexperimentosero
Criado por: Dunfrey Pires Arago

GPASV Grupo de Pesquisas e Aplicaes em Sinais de Voz

copiadosparaumdiretriochamado$taskname.Algunsdessesarquivos,taiscomodados,
sero fornecidos por voc (talvez copiado a partir de qualquer tutorial/an4 ou
tutorial/rm1).Outrosarquivosseroautomaticamentecopiadasdasinstalaesdotrainer
oudodecoder.
Umanovatarefacriadaapartirdeumdiretriojexistente,nestecasoreferimos
aochamado $taskname.Supondoquevocesttrabalhandoapartirdetutorial/an4,a
novatarefaserlocalizadoem tutorial/$taskname.Lembresedesubstituir $taskname
comumanomedesuaescolha.
Noexemploaseguir,vamosfazerexatamenteisso:iremoscopiarumaconfigurao
do setup existente an4.Observequeodiretriodetrabalhoatualosetupexistente.O
novosercriadopeloscript:
$cdan4
$perlscripts_pl/copy_setup.pltaskynoguti

(iremosusar$taskname==ynoguti)

IstoircriarumanovaconfiguraoparaexecutarnovamenteoSphinxTrain,ento
aoexecutarnovamenteodecodificador,omesmousadoinicialmente(nestecaso, an4),e
depoiscopiarosarquivosdeconfigurao,localizadosob etc,paraanovaconfigurao,
comosnomesdearquivoscorrespondentesiroparaanovapasta.
Lembrequeoscript copy_setup.pl tambmcopiaosdados,localizadosem feat e
wav, para o novo local. Aps isso, voc vai trabalhar inteiramente dentro deste novo
diretrio,ondeonossocasoynoguti.
ComeamoscomaformaodosistemausandoosarquivosrecursivosMFCCquej
foramcomputadosduranteaexecuopreliminar.
Agoravocdeveseguirosseguintespassosemseqncia.
1. Vamosregularabasededadosparaotreinamento,sevamosusarabasedoan4ou
uma outra base. Neste ponto, voc no precisa fazer mais nada a no ser para
observarquenareadereconhecimentodevozumaprticacomumparachamar
cada arquivo em um banco de dados de um "enunciado". O sinal de uma
"enunciao"podenosernecessariamenteumafrasecompleta.Vocpodevera
cepstraemqualquerarquivousandoaferramentacepview.
2. Decidequaisunidadesdesonsqueserousadaspelosistemaparaotreinamento.
Parafazeristo,olhenodicionariolinguistico,queestemynoguti/etc/ynoguti.dice
o dicionario de enchimento, localizado em ynoguti/etc/ynoguti.filler, e note as
unidadesdesonsdeste.Umalistadetodosasunidadesnestedicionariotambm
escritosnoarquivoynoguti/etc/ynoguti.phone.Estudaremososdicionarioseento
decidiremosseasunidadesdesonssoadequadasparaoreconhecimento.Afimde
sercapazderealizarumcomreconhecimento,asunidadesdesonsnodevemser
confusas,emuitoconsistentesparaseremusadasnodicionario.
Almdissochequeoutrasunidades,eostrifonemasqueelespodemformar(paraoqual
vocestarconstruindoosmodelosemultimaanalise),estobemrepresentadosnosdados
Criado por: Dunfrey Pires Arago

GPASV Grupo de Pesquisas e Aplicaes em Sinais de Voz

detreinamento.importantequeasunidadesdesomqueestsendomodeladoserbem
representadosnosdadosdetreinamento,afimdeestimarosparmetrosestatsticosde
suasHMMsconfivel.Paraestudarassuasfrequnciasdeocorrncianosdados,vocpode
usaraferramentamk_mdef_gen.
Nocasoalteramosafimdeficarmelhordispostoparatrabalhar,segueumexemplo
damodificaofeitaem*.dic
algumaspalavrasdoan4originalINGLES
EIGHT

EYT

EIGHTEEN EYTIYN
EIGHTEENTH EYTIYNTH
EIGHTH

EYTTH

algumaspalavrasdoynogutimodificadoPORTUGUS
acontece

akonteesi

aconteceu

akonteseu

acordei

akorrrdey

acreditam

akredditanun

Voc pode reestruturar sua base de dados de unidades de sons nos dicionrios
podendoapenasadicionarourefazerasunidadesdesom.Asunidadespodemtersons
diferentesemumanicaentidade.Porexemplo,vocpodequisermodelarosomde"Z"e
"S"comoumaunidadenica(emvezdemantloscomounidadesseparadas).Paramesclar
essasunidades,quesorepresentadospelossmbolosZeSnodicionriodelinguagem
dado,bastasubstituirtodasasinstnciasdaZeSnodicionrioporumsmbolocomum
(quepodeserZ_S,ouumsmbolointeiramentenovo).
Deoutraforma,vocpodeencontrarnodicionriolnguisticoinstnciasdosonsZe
SseremsubstituidospelosmboloZparaalgumaspalavraseSparaosoutros.Asunidades
desomtambmpodeserreestruturadapeloagrupamentodesequnciasespecficasdesom
emumnicosom.
Uma vez que voc recriou suas unidades, altere o arquivo
ynoguti/etc/ynoguti.phone.Certifiquesedequevocnotemespaosvaziosoulinhas
espriasnestearquivo.Nestecaso,segueumoutroexemplodecomoeraedecomoficou
algumasletrasmodificadasaoseremfaladas:
an4originalINGLES
AA

AE

AH

AO

AW

ynogutimodificadoPORTUGUS
a

an

ee

en

Considerequeexistemmuitosmaisinformaesnosarquivoscitadosacima.
Criado por: Dunfrey Pires Arago

GPASV Grupo de Pesquisas e Aplicaes em Sinais de Voz

Alternativamente,vocpodeignoraresteprocedimentodeprojetoeusaralistado
fonemasedicionrioscomotmsidofornecidoavoc.Vocteraoportunidadedemudar
outrascoisasnotreinamentomaistarde.
Altere tambm o arquivo ynoguti_test.transcription, onde estaro as frases
comumentesditas.Comoporexemplo:
<s>semeleotempoflui<sil>numritmosuave</s>(M230509)

(ynoguti/wav/reconhecimento/nomedawav.wav)

Modifiquetambmoarquivoynoguti_test.fileidsqueinformaondeestoosarquivos
aseremlidosparaoreconhecimento,porexemplo:
Reconhecimento/M241307
Reconhecimento/M241308
Reconhecimento/M241309
Almdisto,nestemesmopensamento,faaomesmoparao
ynoguti_train.transcriptioneynoguti_train.fileids,pormparaotranscriptionseromodo
queamquinairentender,porexemplo:
<s>muytuprazerrrenkonnneselu</s>(F011701)
Muitoprazeremconheclo
3. Depois de ter corrigido seus diretorios e o arquivo de lista de fonemas, edite o
arquivo etc/sphinx_train.cfg em tutorial/ynoguti/ paramudarosparametrosde
treinamento.

$CFG_DICTIONARY=seudicionriotreinamentocomcaminhocompleto(no
mudamsevocdecidiunoalterarodicionrio)noalterado.
"$CFG_LIST_DIR/$CFG_DB_NAME.dic";

$CFG_FILLERDICT= seudicionriodepreenchimentocomcaminhocompleto
(nomudamsevocdecidiunoalterarodicionrio)noalterado.
"$CFG_LIST_DIR/$CFG_DB_NAME.filler";

$CFG_RAWPHONEFILE=sualistadefonemascomocaminhocompleto(no
mudesevocdecidiunoalterarodicionrio)noalterado.
"$CFG_LIST_DIR/$CFG_DB_NAME.phone";

$CFG_HMM_TYPE=estavarivelpodeterosvalores.semi.Ou.cont..Observe
ospontos"."emtornodapalavra.Use.Semi.sevocesttreinandoHMMssemi
contnuos, principalmentepara Pocketsphinx, ou .cont. se voc esttreinando
HMMscontnuos(necessriosparaSPHINX4,bemcomoaescolhamaiscomum
paraSPHINX3)alterado
$CFG_HMM_TYPE='.cont.';#SphinxIII
#$CFG_HMM_TYPE='.semi.';#PocketSphinxandSphinxII
Criado por: Dunfrey Pires Arago

GPASV Grupo de Pesquisas e Aplicaes em Sinais de Voz

$CFG_STATESPERHMM=qualquernmerointeiro,masrecomendamos3ou
5.OnmerodeestadosemumHMMestrelacionadacomascaractersticasque
variamnotempodasunidadesdesom.Asunidadesdesonsquesoaltamente
variveisnotemponecessitamdemaisestadospararepresentlos.Anatureza
da variao no tempo de sons tambm parcialmente captada pelo varivel
$CFG_SKIPSTATEquedescritoabaixoalteradopara5

$ CFG_SKIPSTATE = definir isso para no ou yes. Esta varivel controla a


topologiadosseusHMMs.Quandoajustadoparayes,elepermitequeosHMMs
pulemestados.Noentanto,notequeatopologiaHMMutilizadonestesistema
uma topologia Bakis estrita da esquerda para a direita. Se voc definir esta
varivel para no, qualquer estado s pode fazer a transio para o prximo
estado.Emtodososcasos,asautotransiessopermitidas.Vocvaiencontrar
oarquivodetopologiaHMM,convenientementechamadaynoguti.topology,no
diretriochamado model_architecture/ noseudiretriobaseatual(ynoguti)
noalterado,deixamosno.

$ CFG_FINAL_NUM_DENSITIES = se voc est treinando modelos semi


contnuos, defina este nmero, bem como $CFG_INITIAL_NUM_DENSITIES, a
256. Para contnuo, definir $CFG_INITIAL_NUM_DENSITIES para 1 e $
CFG_FINAL_NUM_DENSITIES paraqualquernmerode1a8.Indoalmde8
norecomendadoporcausadopequenoconjuntodedadosdetreinamentoque
voc tenha sido fornecido. A distribuio de cada estado de cada HMM
modeladaporumamisturadegaussianas.Estavariveldeterminaonmerode
gaussianas nesta mistura. O nmero de parmetros a ser estimado HMM
aumentamedidaqueonmerodeGaussianasnamisturaaumenta.Portanto,o
aumentodovalordessavarivelpoderesultarnumamenoravaliaodosdados
para estimar os parmetros de cada gaussiana. No entanto, aumentando este
valortambmresultaemmodelosmaisfinos,oquepodelevaraummelhor
reconhecimento.Portanto,necessrionestepontopensarcuidadosamentesobre
ovalordestavarivel,mantendoestasduasquestesemmente.Lembreseque
possvel superar os problemas de insuficincia de dados, compartilhando as
misturasgaussianasentre muitosestadosHMM.Quandovriosestados HMM
compartilhamamesmamisturadeGauss,dizsequeestoasercompartilhada
ouamarrado.Estesestadoscompartilhadossochamadosdeestadosagrupados
(tambmreferidoscomosenones).Onmerodemisturaslheformar,emltima
instnciairserexatamenteigualaonmerodeestadosagrupadosespecificadas,
queporsuavezpodesercontroladopeloparametro $CFG_N_TIED_STATES
alterado
$CFG_INITIAL_NUM_DENSITIES=1;
$CFG_FINAL_NUM_DENSITIES=8;

$CFG_N_TIED_STATES= definirestenmeroparaqualquervalorentre500e
2500.Estavarivelpermitequevocespecifiqueonmerototaldeestadosde
distribuies compartilhadas no seu conjunto final de HMMs treinados (seus
modelos acsticos). Unidos so compartilhados para superar os problemas de
insuficinciadedadosparaqualquerestadodequalquerHMM.Apartilhafeita
Criado por: Dunfrey Pires Arago

GPASV Grupo de Pesquisas e Aplicaes em Sinais de Voz

detalformaapreservara"individualidade"decadaHMM,emqueapenasos
estados com as distribuies mais similares so amarradas. O parmetro
$CFG_N_TIED_STATES controla o grau de subordinao. Se for pequeno, um
nmeromaiordeestadosdiferentes,possivelmentepodeseramarrado,causando
reduonodesempenhodoreconhecimento.Poroutrolado,seesteparmetro
muito grande,podehaverdados suficientesparaaprenderosparmetros das
misturasgaussianasparatodososestadosagrupados.noalterado
$CFG_N_TIED_STATES=1000;

$CFG_CONVERGENCE_RATIO=definirissoparaumnmeroentre0.10.001.
Estenmeroarazoentreadiferenadeprobabilidadeentreacorrenteea
iteraoanteriordeBaumWelchparaaprobabilidadetotalnaiteraoanterior.
Notequeaquiataxadeconvergnciadependentedevriosfatores,taiscomoa
inicializao,onmerototaldeparmetrosaseravaliado,aquantidadetotalde
dadosdeformao,eainerentevariabilidadenascaractersticasdosdadosde
formao.QuantomaisiteraesdeBaumWelchvocfornecer,melhorvocvai
aprenderadistribuiodeseusdados.Noentanto,aspequenasalteraesque
soobtidosemiteraessuperioresdoalgoritmoBaumWelchnopodemafetar
odesempenhodosistema.noalterado
$CFG_CONVERGENCE_RATIO=0.04;

Depoisdemodificadotodososarquivosnecessrios,faa:
$perlscripts_pl/make_feats.plctletc/ynoguti_train.fileids
O sistema no funciona diretamente com sinais acsticos. Os sinais so primeiro
transformadosnumasequnciadevectorescaractersticos,quesoutilizadosemlugardos
sinaisacsticosreais.Assimvaiconstruirnapastafeats,taisvetores.
Depois de ter feito todas as alteraes desejadas, voc deve treinar um novo
conjuntodemodelos.Vocpodefazerissoexecutandonovamentetodososscriptsslave*.pl
do diretrios ynoguti/scripts_pl/00* at o ynoguti/scripts_pl/09*, ou simplesmente
executandoperlscripts_pl/RunAll.pl.

Comodecodificar,equesteschave(parametros)paraadecodificao
1. OprimeiropassoparaadecodificaocalcularascaractersticasMFCC,verifique
estamesmaanlisepreliminar,feitonestetutorial.
2. Voc pode alterar os parmetros do decodificador, afetando os resultados de
reconhecimento,editandooarquivoetc/sphinx_decode.cfgemtutorial/ynoguti/.
Algunsdosparmetrosinteressantesaseguir:
$DEC_CFG_DICTIONARY= dicionriousadopelodescodificador.Elepodeou
Criado por: Dunfrey Pires Arago

GPASV Grupo de Pesquisas e Aplicaes em Sinais de Voz

noseromesmoqueoutilizadoparaatreinamento.Oconjuntodefonemastem
estar contido no conjunto de fonemas do dicionrio trainer. O conjunto de
palavraspodesermaior.Normalmente,noentanto,odicionriododecodificador
omesmoqueoformador,especialmenteparapequenosbancosdedados.no
alterado
$DEC_CFG_FILLERDICT=dicionriodeenchimento.noalterado
$ DEC_CFG_MODEL_NAME = o nome do modelo. O padro usar o (CD)
modelosdeestadoligadosdecontextodependentescomonmerodesenonese
nmerodedensidadesespecificadasnaetapadetreinamento.noalterado
$ DEC_CFG_LANGUAGEWEIGHT = o valor da linguagem. Recomendase um
valor entre 6 e 13. O padro depende do banco de dados que voc baixou.
Lembresequeopesodalinguagemdecidequantoimportnciarelativaquevoc
vaidarparaasprobabilidadesacsticasreaisdaspalavrasahiptese.Umbaixo
peso de linguagem d mais margem de manobra para as palavras com
probabilidadesacsticoselevadosparasesupor.noaltera:13
$DEC_CFG_ALIGN=ocaminhoparaoprogramaqueexecutaoalinhamentode
texto,oubuiltin,sevocnotiverum.noalterado
Voc pode decodificar vrias vezes fazendo mudanas nas variveis acima, sem
precisarretreinarosmodelosacsticos,paradecidiroquemelhorparavoc.
Decodificaorelativamentesimplesdeexecutar,comojvimos:
$perlscripts_pl/make_feats.plctletc/an4_test.fileids
$perlscripts_pl/decode/slave.pl
O script scripts_pl/decode/slave.pl j calcula a preciso da palavra ou frase quando
terminadecodificao.Eleiradicionarumalinhaparaapginadenvelsuperior.html
queseparececomoseguintesevocestiverusandooNISTsclite.
SENTENCEERROR:100.0%(400/400)WORDERRORRATE:96.2%(2527/2628)

Criado por: Dunfrey Pires Arago

Você também pode gostar