Análise de Voz e Vídeo
Reconhecimento de voz baseado em
modelos de palavras conectadas
André Vitor de Almeida Palhares
Roteiro
•
•
•
•
•
•
•
•
•
Introdução
Formalizando o problema
Two-level DP algorithm
Level building algorithm
One-state algorithm
Varias strings candidatas
Resumo dos algoritmos
Segmentação
Implementação
Introdução
• O reconhecimento da voz não é feito através
de palavras ou frases isoladas
• Antes as palavras eram entidades completas
– Poderiamos apenas encontrar o melhor
alinhamento de cada diferente palavra com a
entrada
• Não há uma distinção clara entre duas
palavras
Introdução
Introdução
• Exemplos
– Reconhecimento de strings derivadas de
vocabulários de tamanho pequeno-médio
– Strings de dígitos
– Sequencias de letras
Introdução
• O problema:
• Ri são palavras do vocábulario de v palavras
• T é uma string de palavras dividida em frames
t(1), t(2), ..., t(M)
Introdução
• Dada uma sequência de palavras faladas
fluentemente, qual o casamento ótimo que
existe pela concatenação de palavras do
vocábulário
• Problema de otimização
– Geralmente não se sabe o número de palavras L
– Não se sabe onde as palavras terminam/começam
– Não podemos resolver o problema de maneira
exaustiva (VL possibilidades)
Formalizando o problema
• Padrão de teste T = {t(1), t(2), ..., t(M)}, cada
t(m) é algum vetor spectral
• Ri palavras de um vocabulário de V palavras:
Ri = {ri(1), ri(2), ..., ri(Ni)}
• Devemos encontrar R*, uma sequência de
concatenação de palavras Ri que melhor casa
com T. Supondo que L seja o numero de
palavras em R*, temos:
• R* = {Rq*(1) Rq*(2)... Rq*(L)}
Formalizando o problema
• Para determinar R* (a melhor solução), vamos
construir um Rs arbitrário, da forma:
• Rs = {rs(1), rs(2),..., rs(Ns)}, onde Ns é a sua
duração total
• A distância entre Rs e T dada pelo DTW é:
• Onde d(.,.) é uma distancia spectral local, w(.)
é a função de warping
Formalizando o problema
Formalizando o problema
• Assim, devemos minimziar a funçao de
distancia e obter a menor distancia D*:
• O número de computações necessárias pra
esse cálculo é muito alto
• M = 300 frames, L = 7 palavras, 40 frames por
palavras em média e V = 10 palavras, teriamos
cerca de 3*1011 computações.
Two-level DP algorithm
• Quebra a computação da minimização em
dois estágios.
• No primeiro, casa cada palavra Rv com uma
porção arbitrária da string T:
– Cada palavra é casada com todas as combinações
possíveis de b, frame onde ela iniciaria e e, frame
onde ela terminaria. Assim, computariamos:
Two-level DP algorithm
• Assumindo um nivel de expansão/compressão
de no máximo 2, teríamos:
• A partir daí, podemos escolher a melhor Rv
entre quaisquer dois índices b e e:
Two-level DP algorithm
• Para a segunda fase do two-level dp, temos
que juntar de maneira ótima os melhores
mínimos entre os frames, minimizando a
distancia acumulada.
• Isso pode ser feito utilizando-se de
programaçao dinâmica
Two-level DP algorithm
• Para um último frame e de uma sequência de l
palavras, temos a menor distância dada por:
• Isto é, o melhor caminho de l palavras que
termina no frame e é aquele que tem a menor
distância entre todos os frames de início b,
concatenado com o melhor caminho de l-1
palavras que termina em b-1
Two-level DP algorithm
• Passo 1 – inicialização
• Passo 2 – Loop em e para l = 1
• Passo 3 – Recursão, loop em e pra l = 2,...,Lmax
• Passo 4, solução final
Level Building Algorithm
• O procedimento geral de alinhamento de um Rs
com um padrão de teste T pode ser visto da
seguinte maneira:
• Nesse caso, o alinhamento é feito frame a frame.
Level Building algorithm
• Uma maneira alternativa de computar esse
alinhamento é ao inves de alinhar frame a
frame, é alinhar fixando um nível horizontal
(que corresponde ao fim da primeira palavra
de Rs
• Este procedimento é iterado para todos os
frames num determinado intervalo e é
determinado que frames sao alcançados no
proximo nível (proxima palavra de Rs)
Level Building algorithm
• Para um único Rs, os procedimentos são análogos. Mas, no
caso do level building, podemos computar o alcance do
proximo nivel para todas as V palavras distintas antes de
computar o proximo nível
Level Building algorithm
• Diferença entre o two-level DP e o LB
– No LB, fazemos V warps por nivel, resultando em
V*L warps no total
– no two-level DP, fazemos um time warp pra cada
frame, tendo entao V*M time warps
• Como em geral M(o numero de frames) é bem
maior que L(o numero de palavras), ganhamos
em eficiencia
Level Building algorithm implementação
• Seja
a menor distância acumulada, no nível
l, usando o padrao Rv ao frame m do padrão de
teste.
• Iniciamos o algoritmo para o nível 1:
• R1 é alinhado com o início de T, com um DTW
padrão e o seu último frame é alinha-se com m,
dado num intervalo m11(1) <= m <= m12(1).
Guardamos
.
• Fazemos o mesmo com todos os padrões Rv,
obtendo as distancias abaixo:
Level Building algorithm implementação
• Assim, podemos definir o menor e o maior
intervalos para o proximo nivel da seguinte
maneira:
Level Building algorithm implementação
Level Building algorithm implementação
• Guardamos também os seguintes valores:
– Melhor distancia no level l para o frame m
– Indice da palavra que deu a distância acima
– Ponteiro para o melhor frame final do nível anterior
que leva a
• Com apenas estas informações, podemos
encontrar ainda o melhor alinhamento.
Level Building algorithm implementação
• A partir do nível 2, realizamos os mesmos
procedimentos do nível 1, porem agora há
varios frames dos quais podemos partir:
Level Building algorithm implementação
• Continuamos o algoritmo até atingir o nível Lmax e
assim obtemos a melhor solução D*, dada por:
• Um contra do algoritmo é que ele é sincronizado
atraves dos níveis e nao através dos
frames(quando se passa um nível, provavelmente
se acessa um frame ja computado). Assim, é
dificil implementar uma versao que funcione em
tempo real.
Level Building algorithm - exemplo
• Vocabulário dado por duas palavras: A e B
• Procuramos a solução com l = 4 níveis
Level Building algorithm – vários níveis
• Assumindo expansão/compressão no DTW de
no máximo 2, as restrições dadas pelas linhas
de máximo e mínimo são:
Level Building algorithm – vários níveis
• Podemos reduzir ainda mais computações
desnecessárias com o seguinte esquema de
restrições:
Level Building algorithm
• Ainda podemos melhorar o algoritmo LB em
diversos aspectos, utilizando algumas
técnicas:
– Reduzir o range para o início de cada nível
– Reduzir o range global
– Variar o range do final do padrão de teste T,
fazendo-o assim mais robusto
– Integrar uma gramática (através de uma máquina
de estados, por exemplo), que permita diminuir o
número de vocabulários por nível
One-state algorithm
• A idéia básica do algoritmo one-state é dada
pela figura abaixo, com o frame de teste T no
eixo horizontal e o eixo vertical com as
palavras Rv
One-state algorithm
• Para cada frame m de teste, calculamos em
relaçao a cada frame n dos padrões de palavras Rv
a distância acumulada dada por
• d(m,n,v) é a distância local entre o frame de teste
t(m) e o frame de referência rv(n)
• A recursão da fórmula é feita pra todos os frames
internos de Rv (n>=2)
• Para n = 1(frame de borda), a recursão é dada por
One-state algorithm
• Assim, a combinatória para frames internos
escolhe o melhor caminho interno naquela
palavra de referência
• A combinatória para frames de borda escolhe
entre um caminho horizontal da mesma
palavra de referencia ou o melhor frame final
de qualquer palavra de referência
One-state algorithm
• O caminho com a melhor solução é
• O maior problema com este algoritmo é que
ele não leva em conta informações a priori
sobre o número de palavras da entrada que
possamos ter.
• Para tal, devemos modificá-lo:
One-state algorithm
• A computação do algoritmo para cada frame
pode ser feita sincronamente
• Pode ser implementado pra reconhecimento
de voz em tempo real
• Cada d(m,n,v) será computada em cada um
dos níveis e utilizado em níveis subseqüentes
sem a necessidade de maiores cálculos.
Várias strings candidatas
• Podemos querer saber quais os n melhores
matching que existem
– E utilizar esta informação com uma gramática por
exemplo, para verificar qual delas é de fato a
correta
• Para tal, só precisamos guardar informações
não apenas sobre a menor distância obtida,
mas também sobre a segunda menor, etc.
Várias strings candidatas
• Duas melhores strings utilizando o algoritmo
LB
Resumo dos algoritmos
• Algoritmos Two-level DP, LB, one-state
• Todos os 3 algoritmos apresentados são
idênticos no que diz respeito a eles
retornarem a mesma melhor string
• Podem ser facilmente estendidos para
modelos estatísticos (HMMs)
• Permitem a inclusão de uma gramática para
aumentar a robustez do reconhecimento
Gramáticas para reconhecimento
de dígitos conectados
• Sem levar em conta o número de níveis
• Para 7 níveis
• Levando em conta perda ou inserção de um
digito a mais
Segmentação
• Um importante problema a ser levado em
conta é quais padrões serão utilizados durante
o reconhecimento
• Segmentação e rotulação manuais podem
levar a erros e inconsistência
• Criação de um procedimento automático de
segmentação
• Treinamento de padrões das strings
segmentadas
Segmentação
• Baseada no k-means:
– Inicialmente, temos um conjunto de treinamento
rotulado com palavras conectadas e um conjunto
de modelos de dígitos (isolados)
• 1. Utilizar qualquer algoritmo para segmentar
os arquivos do conjunto de treinamento
• 2. Atualiza-se o modelo das palavras,
utilizando-se algum algoritmo de clustering
• 3. Se ainda não convergiu, continua-se
iterando.
Segmentação
Implementação de um sistema de
reconhecimento
• Analise espectral: as características espectrais
do sinal de voz são retiradas (LPC, filter bank,
etc)
• Casamento de padrões: utilizando qualquer
algoritmo citado
• Pós processamento: Eliminação de candidatos
impossíveis, escolhendo o melhor.
Dúvidas
• ?
Download

Análise de Voz e Vídeo