utilização sphinx3

16
GPASV – Grupo de Pesquisas e Aplicações em Sinais de Voz Instalando, configurando e executando Sphinx3 e SphinxTrain. O sistema utilizado será o Sphinx, projetado na Universidade Carnegie Mellom. O SO utilizado para tal tutorial é o LINUX DEBIAN. Um sistema baseado em HMM (Modelos Ocultos de Markov), como todos os outros sistemas de reconhecimento de voz, a primeira coisa a ser feita é ensina-lo as características (ou parâmetros) de um conjunto de unidades de som, e em seguida, usando o que aprendeu sobre as unidades ensinadas, encontrar a seqüência mais provável de unidades de som para um determinado sinal de voz. O processo de aprender os rótulos do som é chamado “treinamento”. O processo de utilizar o conhecimento adquirido para deduzir a sequência mais provável de unidades de um determinado sinal é chamado decodificação, ou simplesmente “reconhecimento”. Sendo assim, você vai precisar destes componentes do sistema SPHINX para poder usar na formação e para o reconhecimento das palavras. Em outras palavras, você vai precisar da SPHINX trainer e do SPHINX decoder. Você receberá instruções sobre como baixar, compilar e executar os componentes necessários para construir um sistema completo de reconhecimento de voz. Ou seja, você receberá instruções sobre como usar SphinxTrain e SPHINX-3 . Componentes fornecidos para o treinamento O SPHINX trainer consiste em um conjunto de programas, cada um responsável por uma tarefa bem definida, e um conjunto de scripts que organiza a ordem em que os programas são chamados. trainer aprende os parâmetros dos modelos dos sons usando um conjunto de sinais de voz como amostra. Isto é chamado de “ banco de dados de treinamento”. A escolha de bases de dados de treinamento também será fornecido a você. O trainer também precisa da informação sobre os parametros das unidades de som que você quer aprender, e pelo menos a seqüência em que eles ocorrem em cada sinal de voz no seu banco de dados de treinamento. Esta informação é fornecida ao treinador através de um arquivo chamado transcript file, em que a sequência de palavras e os sons sem voz são escritos exatamente como ocorreu em um sinal de voz, seguido por um marcador que pode ser utilizado para associar esta sequência com o sinal de voz correspondente. trainer, em seguida, olha para um dicionário que mapeia cada palavra de uma seqüência de unidades de som, para obter a seqüência de unidades de sons associados a cada sinal. Assim, além dos sinais de voz, também será dado um conjunto de transcritos para o banco de dados (em um único arquivo) e dois dicionários, um em que palavras legítimas na língua são seqüências de unidades de som  e outro em que os silencios são mapeados para correspondentes unidades de som  de fala e silencio. Vamos nos referir ao primeiro como o dicionário do idioma (ou linguistico) e o segundo como o dicionário de preenchimento. Criado por: Dunfrey Pires Aragão

Upload: dunfrey-aragao

Post on 30-Sep-2015

8 views

Category:

Documents


0 download

DESCRIPTION

Como utilizar o Sphinx

TRANSCRIPT

  • GPASV Grupo de Pesquisas e Aplicaes em Sinais de Voz

    Instalando,configurandoeexecutando

    Sphinx3eSphinxTrain.

    OsistemautilizadoseroSphinx,projetadonaUniversidadeCarnegieMellom.OSOutilizadoparataltutorialoLINUXDEBIAN.

    UmsistemabaseadoemHMM(ModelosOcultosdeMarkov),comotodososoutrossistemasdereconhecimentodevoz,aprimeiracoisaaserfeitaensinaloascaractersticas(ou parmetros) de um conjunto de unidades de som, e em seguida, usando o queaprendeusobreasunidadesensinadas,encontraraseqnciamaisprovveldeunidadesdesompara umdeterminadosinal de voz. Oprocesso de aprender os rtulos do somchamadotreinamento.Oprocessodeutilizaroconhecimentoadquiridoparadeduzirasequnciamaisprovveldeunidadesdeumdeterminadosinalchamadodecodificao,ousimplesmentereconhecimento.

    Sendoassim,vocvaiprecisardestescomponentesdosistemaSPHINXparapoderusar na formaoeparaoreconhecimentodaspalavras. Emoutras palavras, voc vaiprecisardaSPHINXtraineredoSPHINXdecoder.

    Voc receber instruessobrecomobaixar, compilareexecutaroscomponentesnecessriosparaconstruirumsistemacompletodereconhecimentodevoz.Ouseja,vocreceberinstruessobrecomousarSphinxTraineSPHINX3.

    Componentesfornecidosparaotreinamento

    OSPHINXtrainerconsisteemumconjuntodeprogramas,cadaumresponsvelporuma tarefa bemdefinida, e umconjunto de scripts que organiza a ordememque osprogramassochamados.

    Otraineraprendeosparmetrosdosmodelosdossonsusandoumconjuntodesinaisdevozcomoamostra.Istochamadodebancodedadosdetreinamento.Aescolhadebasesdedadosdetreinamentotambmserfornecidoavoc.Otrainertambmprecisadainformaosobreosparametrosdasunidadesdesomquevocqueraprender,epelomenosa seqncia em que eles ocorrem em cada sinal de voz no seu banco de dados detreinamento.Esta informao fornecidaaotreinadoratravsdeumarquivochamadotranscriptfile,emqueasequnciadepalavraseossonssemvozsoescritosexatamentecomoocorreuemumsinaldevoz,seguidoporummarcadorquepodeserutilizadoparaassociarestasequnciacomosinaldevozcorrespondente.

    O trainer,emseguida,olhaparaumdicionrioquemapeiacadapalavradeumaseqnciadeunidadesdesom,paraobteraseqnciadeunidadesdesonsassociadosacadasinal.Assim,almdossinaisdevoz,tambmserdadoumconjuntodetranscritosparaobancodedados(emumnicoarquivo)edoisdicionrios,umemquepalavraslegtimasnalnguasoseqnciasdeunidadesdesom eoutroemqueossilenciossomapeadosparacorrespondentesunidadesdesomdefalaesilencio.

    Vamosnos referir aoprimeirocomoodicionrio do idioma(ou linguistico)e osegundocomoodicionriodepreenchimento.

    Criado por: Dunfrey Pires Arago

  • GPASV Grupo de Pesquisas e Aplicaes em Sinais de Voz

    Emresumo,oscomponentesfornecidosavocparaotreinamentosero:

    1.Ocdigofontedotrainer2.Ossinaisacsticos3.Oarquivotranscritocorrespondente4.Umdicionriolinguistico5.Umdicionriodepreenchimento

    Componentesfornecidosparadecodificao

    Odecodificadortambm compostopor umconjuntodeprogramas, queforamcompiladosparadarumnicoexecutvel queir executaratarefadereconhecimento,dadasasentradascertas.Asentradasqueprecisamserdadasso:osmodelosacsticostreinados,umarquivocomondicedosmodelos,ummodelolinguistico,umdicionriodelngua, umdicionrio depreenchimento, bemcomooconjuntodesinaisacsticos queprecisamserreconhecidos.Osdadosaseremreconhecidossocomumentereferidocomodadosdeteste.

    Emresumo,oscomponentesfornecidosavocparadecodificaosero:

    1.Ocdigofontedodecodificador2.Odicionriolinguistico3.Odicionrioenchimento4.Omodelodelinguagem5.Osdadosdeteste

    Almdessescomponentes,voc vaiprecisardosmodelosacsticosquevoc temtreinado para o reconhecimento. Voc ter que fornecer estes para o decodificador.Enquantovoc treinarosmodelosacsticos, otrainervaigerararquivosdemodelodendiceadequadamentenomeados.

    UmarquivodemodeloindexsimplesmentecontmidentificadoresnumricosparacadaestadodecadaHMM,quesoutilizadospelotrainereodecoderparaacessarosconjuntos de parmetros para cada estado HMM. Comqualquer conjunto de modelosacsticos, o arquivo de modelo de ndice correspondente deve ser utilizado para adecodificao.

    ConfigurandoosistemaVocvaiterquebaixaremontarvrioscomponentesparaconfigurarosistemapor

    completo. Desde que voc tenha todo o software necessrio, voc vai ter que fazerdownloaddopacotededados,otrainer,eumdosdecoderSphinx,nestecasousaremosoSphinx3.

    Softwarenecessrioantesdecomear

    VocvaiprecisardoPerlparaexecutarosscriptsfornecidos,eumcompiladorCparacompilarocdigofonte.

    Criado por: Dunfrey Pires Arago

  • GPASV Grupo de Pesquisas e Aplicaes em Sinais de Voz

    Perl

    OLinuxgeralmentevemcomalgumaversodoPerl.SevocnotemPerlinstalado,porfavor,instaleo.

    CCompiler

    SphinxTraineSPHINX3usaoGNUautoconfparadescobrir informaesbsicassobre o sistema, e deve compilar com sucesso na maioria dos sistemas Unix e seusderivados,ecertamenteemLinux.OcdigocompiladousandoocomandomakedoGNUecompiladorCdaGNU(ogcc),disponveisemtodasasdistribuiesLinux.

    AlinhadordePalavras

    Vocvaiprecisardeumprogramadealinhamentodepalavra,sevocquisermediraprecisododecodificador.Umcomumenteusado,disponvelapartirdoInstitutoNacionaldePadreseTecnologia(NIST),osclite,fornecidocomopartedeseuspacotesquegeranumeros,oupontuaes.Podeserencontradonestelink:http://www.itl.nist.gov/iad/mig//tools/

    ConfigurandoosdadosOGrupoSphinxdisponibilizaduasbasesdedadosdeudioquepodemserusados

    neste tutorial. Cada um tem suas peculiaridades, e so fornecidas apenas como umaconvenincia. Os dados apresentados no so suficientes para criar um sistema dereconhecimento de voz dealta performance. Eles s so fornecidoscomoobjetivo deajudarvocaaprenderausarosistema.

    AsbasesdedadosfornecidassooAN4queincluioudio,masnoumabasededadosmuitopequeno,ondevocpodeescolhersevocdesejaincluiracriaodearquivosde recursos em seus experimentos, e a outra base o RM1 que um pouco maior,resultandoassimnumsistemacomumdesempenholigeiramentemelhor.Oudionofornecido,umavezqueestlicenciadomaterial.

    Iniciandoospassos:

    1.Crieumdiretrioparaosistema,eentrenodiretrio:

    $mkdirtutorial

    $cdtutorial

    2.Faaodownloaddoaudio(usaremosoAN4),esalveonapastatutorialcriadoapouco:

    $gunzipcan4_sphere.tar.gz|tarxf

    3.Dumls,paraverificarsesuapastaan4,foigeradacomarquivosesubpastasdentro

    $ls.

    Criado por: Dunfrey Pires Arago

  • GPASV Grupo de Pesquisas e Aplicaes em Sinais de Voz

    Configurandootrainer

    RecuperaoCdigo

    SphinxTrainpoderecuperarseusandosubversion(SVN)oubaixandoumarquivo tar.Osvntornamaisfcilparaatualizarocdigocomoasnovasalteraessoadicionadasaorepositrio,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

    OGrupoSphinx temvriosdescodificadoresdiferentes,cujascaractersticaspodemorientlo na escolha do melhor para sua aplicao. A grosso modo, estes podemserdescritoscomosesegue.

    PocketSphinx: Esta uma verso modernizada do Sphinx2, especialmenteotimizadoparasistemasembarcadoseportteis. Eletambmconsomeemmdia20%menosmemriae520%menostempodeCPUdoqueSPHINX2.Noentanto,eleestemdesenvolvimentoativo,demodoqueainterfaceeconjuntoderecursospodeserinstvel.

    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 edecodificaoemlote.

    SPHINX4:UsaHMMscontnuos.EscritonalinguagemdeprogramaoJava.Eleoferecealtaflexibilidadeegrandeprecisoevelocidadeparapequenastarefas.

    Parasuaaplicao,voc podeescolherqualquerumdecodificadoradequadoparavoc,masnestetutorialusaremosSPHINX3comoumdecodificadordebase.umaboaidiaparatestarseumodelocomSPHINX3primeiroparadetectarerrosemfasesiniciais.

    SPHINX3Instalao

    SPHINX3podeserobtidousandosubversion(SVN)oubaixandoumarquivotar.svntorna mais fcil para atualizar o cdigo comoas novas alteraes so adicionadas aorepositrio,masrequerquevocinstalesvn.Oarquivotarmaisprontamentedisponvel.SPHINX3 tambmest disponvel comoumaversodoSourceForge.net , que o queusaremos.

    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

    Compilando7. Entrenapasta

    $cdsphinxbase

    $./configure

    $make

    8. Agoraentrenapastadosphinx

    $cd../sphinx3

    $./configureprefix=`pwd`/buildwithsphinxbase=`pwd`/../sphinxbase

    $make

    $makeinstall

    Depoisdecompilarocdigo,vocterqueconfigurarotutorialcopiandotodososexecutveise scripts relevantesparaamesmareaqueosdados.Assumindoqueoseudiretriodetrabalhoatualtutorial,vocvaiprecisarfazeroseguinte.

    Aindanapastasphinx3

    $perlscripts/setup_tutorial.plan4

    Criado por: Dunfrey Pires Arago

  • GPASV Grupo de Pesquisas e Aplicaes em Sinais de Voz

    FazendoumtestedetreinamentopreliminarEntrenapastaan4

    $cd../an4/

    Os scripts devemtrabalhardeformaseparada,amenosquevoc est treinandomodelos para o PocketSphinx. Neste caso, voc ter que editar o arquivoetc/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 paratirarproveitodosvriosprocessadores. Para fazer isso, editar etc/sphinx_train.cfg, altere a linhaquedefine avarivel $CFG_NPARTparacoincidircomonmerode CPUs noseusistema,eeditaralinhadefinindo$CFG_QUEUE_TYPEaoseguinte:

    #Queue::POSIXparamltiplasCPUsnamquina

    #Queue::PBSusarumPBS/TORQUEemfila

    $CFG_QUEUE_TYPE="Queue::POSIX";

    (ACRESCENTADO)

    Osistemanofuncionadiretamentecomsinaisacsticos. Ossinaissoprimeirotransformadosnumasequnciadevectorescaractersticos,quesoutilizadosemlugardossinaisacsticosreais.Pararealizaressatransformao(ouparametrizao)dedentrododiretrioan4,digiteoseguintecomandonalinhadecomando.

    $perlscripts_pl/make_feats.plctletc/an4_train.fileids

    Este script ir calcular, para cada sentena, uma seqncia de vetores de 13dimenses (vetores de caractersticas) que consistem nos coeficientes Melcepstrais(MFCCs).Notequealistadosarquivoscontmumalistacomoscaminhoscompletosparaosarquivosdeudio.Umavezqueosdadosestotodoslocalizadosnomesmodiretrioquevoc est trabalhando,oscaminhossorelativos,noabsolutos.Voc podeterquemudarisso,usandooarquivoan4_test.fileids,sealocalizaodosdadosdiferente.Esta

    Criado por: Dunfrey Pires Arago

  • GPASV Grupo de Pesquisas e Aplicaes em Sinais de Voz

    etapalevacercade10minutosparacompletaremumamquinarpida,masotempopodevariar.Comoeleestsendoexecutado,vocpodequerercontinuaraleitura.OsMFCCssercolocadoautomaticamenteemumdiretriochamado./feat.Notequeotipodevetordecaractersticasvoccalculadossinaisdefalaparaotreinamentoereconhecimento,foradestetutorial.

    Voc pode usar qualquer tcnica de parametrizao e calcular outros MFCCs.SPHINX3eSPHINX4podemusarosrecursosdequalquertipooudimenso.Nestetutorial,noentanto,vocvaiusarMFCCsporduasrazes:a)elessoatualmenteconhecidospararesultarnomelhordesempenhodereconhecimentoemsistemasbaseadosemHMMsobamaioriadascondiesacsticas,eb)estetutorialnosedestinaacopiaroprocessamentodosinalparametrizadoeapenasapontaparaumaplataformapadrodeutilizaoparaafinalidade.Agoravocpodecomearatreinarosistema.

    No diretrio de scripts (./scripts_pl), existem vrios diretrios numeradosperlscripts_pl/make_feats.plctletc/ynoguti_train.fileidssequencialmentede00*pormeiode99*.Cadadiretriooutemumdiretriochamadoslave*.ploutemumnicoarquivocomextenso .pl . Sequencialmente percorreremosos diretrios e executaremos tantoa doslave*.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

    Daquiemdiante,vamosnosreferirao script quevoctemqueexecutaremcadadiretriosimplesmentecomoslave*.pl.Emdiretriosondehumarquivo,entendaocomooarquivonico.plpresentenodiretrio.

    Osscriptslanaro jobs emsuamquinaquepoderodemoraralgunsminutosnaexecuo. Antes de executar qualquer script, verifique o contedo do diretrio atual.Depoisdeexecutarcadaslave*.plobserveocontedonovamente.Vriosdiretriosserocriados.Essesdiretrioscontmarquivosqueserogeradosnocursodotreinamento.Nestepontovocnoprecisasabersobreocontedodestesdiretrios,emboraalgunsdosnomesdediretriopossamserautoexplicativoevocpoderexplorlos,casoqueira.

    Umdosarquivosqueaparecemnoseudiretrioatualumarquivo.html,chamadoporan4.htmlourm1.html,dependendodequalbancodedadosvocestejausando.Estearquivoirconterumrelatriodosjobsexecutados.Verifiqueseo job foiconcluidocomxito.Sentopoderrodaroprximo slave*.pl naseqnciaespecificada.Repitaesteprocessoatquevoctenhaexecutadooslave*.pldetodososdiretrios.

    Notequeesteprocessocomearnoscript00*at99*,vocirgerarumconjuntodemodelosacusticos,cadaumdosquaispoderiamserusadosparaoreconhecimento.

    Certifiquesetambmquealgunspassossorequeridosapenasparaacriaodemodelossemicontinuo.Sevocexecutarestespassosenquantocriaosmodeloscontinuos,os scripts noirofazernada.Umavezqueestes jobs foremexecutadosem 20.ci_hmmforemconcluidos,voctertreinadoomodelodeContextoIndependente(CI)paraoestadounidades de subpalavras emseu dicionrio. Enquanto os jobs executados do diretrio30.cd_hmm_united forem concluidos, voc ter treinado os modelos de ContextosDependentesdeunidadesdesubpalavras(ostrifonemas)comseusestadosisoladamente.EstessochamadosdemodelosisoladosCDesonecessariosparaconstruirarvoresde

    Criado por: Dunfrey Pires Arago

    imagem1

  • GPASV Grupo de Pesquisas e Aplicaes em Sinais de Voz

    decisesnaordemdeagruparosestados.

    Osjobsem40.buildtreesiroconstruirrvoresdedecisoparacadaestadodecadaunidadedesubpalavra.Os jobs em 45.prunetree vaiselecionarasrvoresdedecisoeamarraraosestados.Apsisso,osjobsem50.cdhmm_tiedvatreinarosmodelosfinaispara os trifonemas em seu corpus de treinamento. Estes so chamados de modelosamarradoCD. OsmodelosamarradosCDso treinadosemvrios estagios. Comeamoscom1Gaussianapor estadodeHMM,aps isto, ns treinamoscom2GaussianasporestadosHMMseassimpordianteatqueonmerodesejadodeGaussianasporEstadoforamtreinados.

    Os jobs em 50.cdhmm_tied vo treinar automaticamente todos esses modelosamarradoCDintermedirios.Nofinalde qualquer estgiovoc poder usarosmodelosparaoreconhecimento.Lembresequevocpodedecodificarmesmoquandootreinamentoestiveremandamento,desdequevocestejacertodequevoccruzouoestgioquegeraosmodelosquevocquerparadecodificar.

    ComorealizarumadecodificaopreliminarDecodificaorelativamentesimplesdeexecutar.Primeiro,calculacaractersticas

    MFCCparatodooconjuntodeteste.ParacalcularMFCCsapartirdosarquivoswave,apartirdodiretriodenvelsuperior,ouseja,an4,digiteoseguintenalinhadecomando:

    $perlscripts_pl/make_feats.plctletc/an4_test.fileids

    Sercompletadoemalgunsminutos.Vocagorapoderodarodecodificador,usandoocomando:

    $perlscripts_pl/decode/slave.pl

    Usartodosestescomponentesprovidosparaadecodificao,incluindoosmodelosacusticoseomodelodoarquivoindexoajudaagerarseutreinamentopreliminar,parareconhecimento com os seus dados de testes. Quando o job de reconhecimento completado,oscriptdereconhecimentocomputaaTACADEERRODAPALAVRA(WordErrorRateWER)ouaTAXADEERRODASENTENA(SentenceErrorRateSER).

    ObservequeestescriptvemcomumafunobuiltinmuitosimplesquefazocalculodeSER.AmenosquevocutilizamquinasCMU,sevocpretendecomputarataxadeerrosdepalavras(WER)vocirterdefazerdownloadecompilarocodigoparatal.Ummodopopular, usadocomumente nacomunidadedepesquisa o fornecidopeloNIST(maioresdetalhesnaseodoinicioAlinadordePalavras).

    Sevoc possuiumprogramaquefazoalinhamento,voc podealteraroarquivoetc/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";

    Quandovoc executar o script dedecodificao, ele ir imprimir as informaessobreaprecisononvelsuperiordapginahtml.paraasuaexperincia.Eletambmircriardoisconjuntosdearquivos.Umdessesconjuntos,comaextenso.match,quecontmashiptesescomosadapelodecodificador,eooutroconjunto,comaextenso.align,quecontmoalinhamentogeradopeloseuprogramadealinhamento,oupelo scriptbuiltin,com os resultados de comparao entre a hiptese decodificador e as transcriesfornecidas.SevocusouaferramentaNIST,oarquivo.htmlirconterumalinhacomoaseguinte,sevocusouan4:

    SENTENCEERROR:56.154%(73/130)WORDERRORRATE:16.429%(127/773)

    Aseguir,segueumaimagemdemonstrativa(figura2).

    Comotreinar,equesteschave(parametros)paraotreinamentoAgora voc pode comear seus prprios testes. Para cada treinamento e

    decodificao,vocprecisaprimeirodarlheumnome.Vamosreferiraonomeexperimentodesuaescolhapor$taskname.Porexemplo,osnomesdadosaosexperimentosusandoasduasbasesdedadosdisponveisso an4 erm1 .Suaescolhade $taskname serusadoautomaticamenteemtodososarquivosparaotreinamentoeexecutarreconhecimentoparafcilidentificao.Todososdiretriosearquivosnecessriosparaesteexperimentosero

    Criado por: Dunfrey Pires Arago

    figura2

  • 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 oututorial/rm1).Outrosarquivosseroautomaticamentecopiadasdasinstalaesdotraineroudodecoder.

    Umanovatarefacriadaapartirdeumdiretriojexistente,nestecasoreferimosaochamado$taskname.Supondoquevocesttrabalhandoapartirdetutorial/an4,anovatarefaser localizadoem tutorial/$taskname.Lembresedesubstituir $tasknamecomumanomedesuaescolha.

    Noexemploaseguir,vamosfazerexatamenteisso:iremoscopiarumaconfiguraodo setup existente an4.Observequeodiretriodetrabalhoatualosetupexistente.Onovosercriadopeloscript:

    $cdan4(iremosusar$taskname==ynoguti)

    $perlscripts_pl/copy_setup.pltaskynoguti

    IstoircriarumanovaconfiguraoparaexecutarnovamenteoSphinxTrain,entoaoexecutarnovamenteodecodificador,omesmousadoinicialmente(nestecaso, an4),edepoiscopiarosarquivosdeconfigurao,localizadosob etc,paraanovaconfigurao,comosnomesdearquivoscorrespondentesiroparaanovapasta.

    Lembrequeoscript copy_setup.pl tambmcopiaosdados,localizadosemfeat ewav, para o novo local. Aps isso, voc vai trabalhar inteiramente dentro deste novodiretrio,ondeonossocasoynoguti.

    ComeamoscomaformaodosistemausandoosarquivosrecursivosMFCCquejforamcomputadosduranteaexecuopreliminar.

    Agoravocdeveseguirosseguintespassosemseqncia.

    1. Vamosregularabasededadosparaotreinamento,sevamosusarabasedoan4ouumaoutra base. Neste ponto, voc noprecisa fazer mais nadaa noser paraobservarquenareadereconhecimentodevozumaprticacomumparachamarcada arquivo em um banco de dados de um "enunciado". O sinal de uma"enunciao"podenosernecessariamenteumafrasecompleta.Voc podeveracepstraemqualquerarquivousandoaferramentacepview.

    2. Decidequaisunidadesdesonsqueserousadaspelosistemaparaotreinamento.Parafazeristo,olhenodicionariolinguistico,queestemynoguti/etc/ynoguti.diceo dicionario de enchimento, localizado em ynoguti/etc/ynoguti.filler, e note asunidadesdesonsdeste.Umalistadetodosasunidadesnestedicionariotambmescritosnoarquivoynoguti/etc/ynoguti.phone.Estudaremososdicionarioseentodecidiremosseasunidadesdesonssoadequadasparaoreconhecimento.Afimdesercapazderealizarumcomreconhecimento,asunidadesdesonsnodevemserconfusas,emuitoconsistentesparaseremusadasnodicionario.

    Almdissochequeoutrasunidades,eostrifonemasqueelespodemformar(paraoqual vocestarconstruindoosmodelosemultimaanalise),estobemrepresentadosnosdados

    Criado por: Dunfrey Pires Arago

  • GPASV Grupo de Pesquisas e Aplicaes em Sinais de Voz

    detreinamento.importantequeasunidadesdesomqueestsendomodeladoserbemrepresentadosnosdadosdetreinamento,afimdeestimarosparmetrosestatsticosdesuasHMMsconfivel.Paraestudarassuasfrequnciasdeocorrncianosdados,vocpodeusaraferramentamk_mdef_gen.

    Nocasoalteramosafimdeficarmelhordispostoparatrabalhar,segueumexemplodamodificaofeitaem*.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 dicionriospodendoapenasadicionarourefazerasunidadesdesom.Asunidadespodemtersonsdiferentesemumanicaentidade.Porexemplo,vocpodequisermodelarosomde"Z"e"S"comoumaunidadenica(emvezdemantloscomounidadesseparadas).Paramesclaressasunidades,quesorepresentadospelossmbolosZeSnodicionriodelinguagemdado,bastasubstituirtodasasinstnciasdaZeSnodicionrioporumsmbolocomum(quepodeserZ_S,ouumsmbolointeiramentenovo).

    Deoutraforma,vocpodeencontrarnodicionriolnguisticoinstnciasdosonsZeSseremsubstituidospelosmboloZparaalgumaspalavraseSparaosoutros.Asunidadesdesomtambmpodeserreestruturadapeloagrupamentodesequnciasespecficasdesomemumnicosom.

    Uma vez que voc recriou suas unidades, altere o arquivoynoguti/etc/ynoguti.phone. Certifiquesedequevoc notemespaosvaziosoulinhasespriasnestearquivo.Nestecaso,segueumoutroexemplodecomoeraedecomoficoualgumasletrasmodificadasaoseremfaladas:

    an4originalINGLES

    AA AE AH AO AW

    ynogutimodificadoPORTUGUS

    a an e ee en

    Considerequeexistemmuitosmaisinformaesnosarquivoscitadosacima.

    Criado por: Dunfrey Pires Arago

  • GPASV Grupo de Pesquisas e Aplicaes em Sinais de Voz

    Alternativamente,vocpodeignoraresteprocedimentodeprojetoeusaralistadofonemasedicionrioscomotmsidofornecidoavoc.Vocteraoportunidadedemudaroutrascoisasnotreinamentomaistarde.

    Altere tambm o arquivo ynoguti_test.transcription, onde estaro as frasescomumentesditas.Comoporexemplo:

    semeleotempofluinumritmosuave(M230509)

    (ynoguti/wav/reconhecimento/nomedawav.wav)

    Modifiquetambmoarquivoynoguti_test.fileidsqueinformaondeestoosarquivosaseremlidosparaoreconhecimento,porexemplo:

    Reconhecimento/M241307

    Reconhecimento/M241308

    Reconhecimento/M241309

    Almdisto,nestemesmopensamento,faaomesmoparaoynoguti_train.transcriptioneynoguti_train.fileids,pormparaotranscriptionseromodoqueamquinairentender,porexemplo:

    muytuprazerrrenkonnneselu(F011701)

    Muitoprazeremconheclo

    3. Depois de ter corrigidoseus diretorios e o arquivo de lista de fonemas, edite oarquivo etc/sphinx_train.cfg em tutorial/ynoguti/ paramudarosparametrosdetreinamento.

    $CFG_DICTIONARY=seudicionriotreinamentocomcaminhocompleto(nomudamsevocdecidiunoalterarodicionrio)noalterado.

    "$CFG_LIST_DIR/$CFG_DB_NAME.dic";

    $CFG_FILLERDICT=seudicionriodepreenchimentocomcaminhocompleto(nomudamsevocdecidiunoalterarodicionrio)noalterado.

    "$CFG_LIST_DIR/$CFG_DB_NAME.filler";

    $CFG_RAWPHONEFILE=sualistadefonemascomocaminhocompleto(nomudesevocdecidiunoalterarodicionrio)noalterado.

    "$CFG_LIST_DIR/$CFG_DB_NAME.phone";

    $CFG_HMM_TYPE=estavarivelpodeterosvalores.semi.Ou.cont..Observeospontos"."emtornodapalavra.Use.Semi.sevocesttreinandoHMMssemicontnuos,principalmenteparaPocketsphinx,ou .cont. sevoc est treinandoHMMscontnuos(necessriosparaSPHINX4,bemcomoaescolhamaiscomumparaSPHINX3)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,masrecomendamos3ou5.OnmerodeestadosemumHMMestrelacionadacomascaractersticasquevariamnotempodasunidadesdesom.Asunidadesdesonsquesoaltamentevariveisnotemponecessitamdemaisestadospararepresentlos.Anaturezada variaono tempode sons tambmparcialmente captadapelo varivel$CFG_SKIPSTATEquedescritoabaixoalteradopara5

    $ CFG_SKIPSTATE = definir isso para no ou yes. Esta varivel controla atopologiadosseusHMMs.Quandoajustadoparayes,elepermitequeosHMMspulemestados.Noentanto,notequeatopologiaHMMutilizadonestesistemauma topologia Bakis estrita da esquerda para a direita. Se voc definir estavarivel para no, qualquer estado s pode fazer a transiopara o prximoestado.Emtodososcasos,asautotransiessopermitidas.VocvaiencontraroarquivodetopologiaHMM,convenientementechamadaynoguti.topology,nodiretriochamado model_architecture/ noseudiretriobaseatual(ynoguti)noalterado,deixamosno.

    $ CFG_FINAL_NUM_DENSITIES = se voc est treinando modelos semicontnuos, definaeste nmero, bemcomo $CFG_INITIAL_NUM_DENSITIES, a256. Para contnuo, definir $CFG_INITIAL_NUM_DENSITIES para 1 e $CFG_FINAL_NUM_DENSITIES paraqualquernmerode1a8.Indoalmde8norecomendadoporcausadopequenoconjuntodedadosdetreinamentoquevoc tenha sido fornecido. A distribuio de cada estado de cada HMM modeladaporumamisturadegaussianas.Estavariveldeterminaonmerodegaussianas nesta mistura. O nmero de parmetros a ser estimado HMMaumentamedidaqueonmerodeGaussianasnamisturaaumenta.Portanto,oaumentodovalordessavarivelpoderesultarnumamenoravaliaodosdadosparaestimarosparmetrosdecadagaussiana. Noentanto, aumentandoestevalortambmresultaemmodelosmaisfinos,oquepodelevaraummelhorreconhecimento.Portanto,necessrionestepontopensarcuidadosamentesobreovalordestavarivel,mantendoestasduasquestesemmente.Lembresequepossvel superar os problemas de insuficincia de dados, compartilhando asmisturasgaussianasentremuitosestadosHMM.QuandovriosestadosHMMcompartilhamamesmamisturadeGauss,dizsequeestoasercompartilhadaouamarrado.Estesestadoscompartilhadossochamadosdeestadosagrupados(tambmreferidoscomosenones).Onmerodemisturaslheformar,emltimainstnciairserexatamenteigualaonmerodeestadosagrupadosespecificadas,queporsuavezpodesercontroladopeloparametro $CFG_N_TIED_STATESalterado

    $CFG_INITIAL_NUM_DENSITIES=1;

    $CFG_FINAL_NUM_DENSITIES=8;

    $CFG_N_TIED_STATES=definirestenmeroparaqualquervalorentre500e2500.Estavarivelpermitequevocespecifiqueonmerototaldeestadosdedistribuies compartilhadas no seu conjunto final de HMMs treinados (seusmodelosacsticos). Unidossocompartilhadosparasuperar os problemasdeinsuficinciadedadosparaqualquerestadodequalquerHMM.Apartilhafeita

    Criado por: Dunfrey Pires Arago

  • GPASV Grupo de Pesquisas e Aplicaes em Sinais de Voz

    detalformaapreservara"individualidade"decadaHMM,emqueapenasosestados com as distribuies mais similares so amarradas. O parmetro$CFG_N_TIED_STATES controla o graudesubordinao. Se for pequeno, umnmeromaiordeestadosdiferentes,possivelmentepodeseramarrado,causandoreduonodesempenhodoreconhecimento.Poroutrolado,seesteparmetromuitogrande,podehaverdadossuficientesparaaprenderosparmetrosdasmisturasgaussianasparatodososestadosagrupados.noalterado

    $CFG_N_TIED_STATES=1000;

    $CFG_CONVERGENCE_RATIO=definirissoparaumnmeroentre0.10.001.EstenmeroarazoentreadiferenadeprobabilidadeentreacorrenteeaiteraoanteriordeBaumWelchparaaprobabilidadetotalnaiteraoanterior.Notequeaquiataxadeconvergnciadependentedevriosfatores,taiscomoainicializao,onmerototaldeparmetrosaseravaliado,aquantidadetotaldedadosdeformao,eainerentevariabilidadenascaractersticasdosdadosdeformao.QuantomaisiteraesdeBaumWelchvocfornecer,melhorvocvaiaprenderadistribuiodeseusdados.Noentanto,aspequenasalteraesquesoobtidosemiteraessuperioresdoalgoritmoBaumWelchnopodemafetarodesempenhodosistema.noalterado

    $CFG_CONVERGENCE_RATIO=0.04;

    Depoisdemodificadotodososarquivosnecessrios,faa:

    $perlscripts_pl/make_feats.plctletc/ynoguti_train.fileids

    Osistemanofuncionadiretamentecomsinaisacsticos. Ossinaissoprimeirotransformadosnumasequnciadevectorescaractersticos,quesoutilizadosemlugardossinaisacsticosreais.Assimvaiconstruirnapastafeats,taisvetores.

    Depois de ter feito todas as alteraes desejadas, voc deve treinar um novoconjuntodemodelos.Vocpodefazerissoexecutandonovamentetodososscriptsslave*.pldo diretrios ynoguti/scripts_pl/00* at o ynoguti/scripts_pl/09*, ou simplesmenteexecutandoperlscripts_pl/RunAll.pl.

    Comodecodificar,equesteschave(parametros)paraadecodificao1. OprimeiropassoparaadecodificaocalcularascaractersticasMFCC,verifique

    estamesmaanlisepreliminar,feitonestetutorial.

    2. Voc pode alterar os parmetros do decodificador, afetando os resultados dereconhecimento,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.Oconjuntodefonemastemestar contido no conjunto de fonemas do dicionrio trainer. O conjunto depalavraspodesermaior.Normalmente,noentanto,odicionriododecodificadoromesmoqueoformador,especialmenteparapequenosbancosdedados.noalterado

    $DEC_CFG_FILLERDICT=dicionriodeenchimento.noalterado

    $ DEC_CFG_MODEL_NAME= o nomedo modelo. O padro usar o (CD)modelosdeestadoligadosdecontextodependentescomonmerodesenonesenmerodedensidadesespecificadasnaetapadetreinamento.noalterado

    $ DEC_CFG_LANGUAGEWEIGHT= o valor da linguagem. Recomendase umvalor entre 6 e 13. Opadrodependedobancode dados quevoc baixou.Lembresequeopesodalinguagemdecidequantoimportnciarelativaquevocvaidarparaasprobabilidadesacsticasreaisdaspalavrasahiptese.Umbaixopeso de linguagem d mais margem de manobra para as palavras comprobabilidadesacsticoselevadosparasesupor.noaltera:13

    $DEC_CFG_ALIGN=ocaminhoparaoprogramaqueexecutaoalinhamentodetexto,oubuiltin,sevocnotiverum.noalterado

    Voc pode decodificar vrias vezes fazendo mudanas nas variveis acima, semprecisarretreinarosmodelosacsticos,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 quandoterminadecodificao.Eleiradicionarumalinhaparaapginadenvelsuperior.htmlqueseparececomoseguintesevocestiverusandooNISTsclite.

    SENTENCEERROR:100.0%(400/400)WORDERRORRATE:96.2%(2527/2628)

    Criado por: Dunfrey Pires Arago

    Componentes fornecidos para o treinamentoComponentes fornecidos para decodificaoConfigurando o sistemaSoftware necessrio antes de comearPerlC CompilerAlinhador de Palavras

    Configurando os dadosConfigurando o trainerRecuperao Cdigo

    Configurando o decodificador

    Fazendo um teste de treinamento preliminarComo realizar uma decodificao preliminarComo treinar, e questes-chave (parametros) para o treinamentoComo decodificar, e questes-chave (parametros) para a decodificao