Soletre certo

Olá pessoal!


Muitos de nós têm pouca experiência na chamada gravação de voz - apenas os psicanalistas costumavam gravar seus pensamentos em um gravador de voz. Agora, o ditado está se tornando mais familiar - o serviço de discagem por voz nos smartphones está acostumado a ele. Participar como proprietário do produto no processo de criação de um produto para reconhecer a fala contínua em russo, se comunicar com desenvolvedores de algoritmos e com clientes, realizar vários testes de sistemas de reconhecimento, observar como os usuários ditam seus textos e ter sua própria experiência em inserir texto em um computador usando voz, Marquei muitas observações interessantes. Para entender melhor como usar o reconhecimento automático de fala corretamente, vamos ver como o reconhecimento de fala funciona. A descrição será muito simplificada, mas ajudará a entender quais erros as pessoas cometem ao ditar. E também:Escreverei este artigo com a ajuda do ditado, fazendo correções no teclado apenas nos lugares onde você não pode ficar sem ele.

Então:


Para criar um mecanismo de reconhecimento, precisamos de modelos acústicos e de linguagem.
O modelo acústico é responsável por correlacionar uma parte do som (quadro) com o fonema correspondente. Um fonema é um som de fala separado, por exemplo, "a-percussão", "t-soft", "t" e 49 outros. O maior problema é que muitos fonemas são muito parecidos entre si e é bastante difícil distinguir a palavra "carros" da palavra "carros" (lembre-se de quantas vezes você pergunta novamente quando um nome desconhecido lhe diz). Portanto, o modelo acústico é tornado probabilístico: relata que, com alguma probabilidade, o fonema “a-shock” foi pronunciado nesse fragmento sonoro, com outra probabilidade, era um fonema “a-shockless”, etc. e fornece probabilidades para todos os fonemas.


Para ter um modelo acústico desse tipo, precisamos treiná-lo primeiro. Para isso, é utilizada uma grande base de fala (centenas de horas de fala gravadas em um microfone por dezenas de falantes de diferentes sexos e idades). A base é marcada para que se saiba qual fonema soa em que momento. E depois do treinamento, obtemos para cada fonema uma certa função de distribuição de probabilidade que descreve como, em média, esse fonema é pronunciado pelas pessoas.

Modelo de linguagemTambém é probabilístico e descreve a estrutura da linguagem. Ele mostra a probabilidade (correta) dessa ou daquela frase do ponto de vista do idioma. Por exemplo, a frase “mãe lavou a moldura” é bastante normal, mas “a mãe lavou a moldura” já está errada (esta frase é tão desagradável para Voco que reconhece “mãe lavou a mãe”). Depois de reconhecermos a próxima palavra, o modelo de idioma determina como essa palavra é consistente com as palavras reconhecidas anteriormente.
O modelo de idioma treina em uma grande quantidade de dados de texto (gigabytes de texto). Utilizando esses dados de treinamento, calculamos a probabilidade de ocorrência de palavras em um contexto específico, com base na frequência de ocorrência dessas frases. Usamos frases com no máximo 3 palavras (modelos de linguagem de 3 gramas). Portanto, o modelo lingüístico não pode ajudar a reconciliar, por exemplo, um adjetivo com um substantivo se houver duas palavras entre eles. Nesse caso, a correspondência ocorre apenas devido ao modelo acústico.
Como dicionário de reconhecimento, utilizamos cerca de 300 mil das palavras mais frequentes que cobrem 99% do discurso da pessoa comum.


Agora vamos lidar com o próprio reconhecimento


Sabendo como cada palavra é transcrita usando fonemas e conhecendo as probabilidades do modelo de linguagem, podemos construir um gráfico de reconhecimento (máquina de estados finitos). Como familiarização rápida com máquinas de estados finitos, a seção "Máquinas de estados" neste artigo é perfeita . Os fonemas chegam à entrada desta coluna, ele os traduz em palavras e palavras em frases.


Gráfico de reconhecimento de palavras: “mãe”, “sabão”, “moldura”, “louça”. Nas bordas do gráfico, temos fonemas como caracteres de entrada (palavra antes de ':'), palavras como caracteres de saída (palavra após ':') e pesos do modelo de idioma (número após '/'). '-' significa entrada ou saída vazia. Uma aresta do quarto nó ao nó 0 alterna o gráfico para que várias palavras consecutivas possam ser reconhecidas.

Após o reconhecimento, obtemos um fragmento de som, um modelo acústico o converte em um conjunto de fonemas com probabilidades que caem na entrada do nosso gráfico. Assim, nos movemos ao longo do gráfico, formando muitas hipóteses. Cada hipótese tem um peso formado a partir das probabilidades do modelo acústico e das probabilidades do modelo de linguagem (localizado nas bordas do gráfico).
O gráfico de reconhecimento real é um milhão de vezes maior que o nosso exemplo de brinquedo, portanto, em algum momento, haverá muitas hipóteses e não haverá RAM suficiente para puxar todas elas. Para impedir que isso aconteça, vários métodos são usados ​​para reduzir o número de hipóteses. Freqüentemente, esses são dois critérios simples: as hipóteses não devem exceder um certo número e nenhuma hipótese deve perder muito para a melhor hipótese.

Agora que temos um pouco de compreensão da teoria, passemos a dicas sobre o que é melhor fazer e o que não é melhor quando se dita.


Fazer SU


Um dos erros mais comuns que os usuários cometem é o ditado por sílabas. Nós treinamos o sistema na fala comum, portanto, esticar as palavras por sílabas apenas confunde o sistema. Ao ditar por sílabas, todas as vogais de uma palavra se transformam em percussão, os fonemas são pronunciados por mais tempo, aparecem pausas entre as sílabas. Tudo isso leva a um resultado triste, quando as palavras são divididas em um monte de fragmentos monossilábicos. Por exemplo, dizendo Voco de acordo com as sílabas "sair correndo para a rua", obtemos o seguinte resultado: "Você não precisa pressionar SU" ou algo assim: "Você não precisa pressionar SU", mas definitivamente não é o que precisamos.

Dica: fale naturalmente como uma pessoa comum.


Como diabos te leva



Algumas pessoas falam muito rapidamente. Além disso, esse discurso muitas vezes reduz as palavras: preposições são engolidas, terminações não são ditas, palavras longas se transformam em inferno, por exemplo, em vez de "Alexander Alexandrovich", pronuncia-se o familiar "San Sanych". As pessoas geralmente entendem esse discurso sem problemas, uma vez que o cérebro recupera as informações ausentes, mas os algoritmos de reconhecimento de fala lidam com esse problema com dificuldade. Por exemplo, um homem em vez de "carro vermelho" disse "carros vermelhos". Durante o reconhecimento, nossa hipótese correta receberá probabilidades muito pequenas ao passar pelos fonemas engolidos pelo final das palavras e, como resultado do ganho de peso, pode não ser suficiente para a vitória, mas alguma "beleza de Masha" vencerá.
Levamos em consideração algumas reduções de frequência na pronúncia. Por exemplo, se você disser “cho” em vez de “o que” ou “olá” em vez de “olá”, isso não afetará o resultado do reconhecimento, pois adicionamos as transcrições apropriadas ao nosso gráfico. O segundo problema que pode esperar que um amador dite em alta velocidade são os homofones das sintagmas.
"Ele suspirou e pensou consigo mesmo:
como diabos a leva?"

Dica: se você é propenso a falar muito rápido, tente pronunciar as palavras com mais clareza. Pausas curtas entre as palavras o ajudarão a manter um ritmo mais lento e a não engolir pedaços de palavras.


Paul patas rali, mas


Outro problema para o reconhecimento é “pingar” e hesitações: uma pessoa começa a falar uma palavra, comete um erro, a interrompe ao meio e depois se pronuncia corretamente. Por exemplo, uma pessoa diz "caiu em paralelo". Não existe uma palavra "caída" no dicionário; portanto, nesses casos, o resultado do reconhecimento pode ser muito surpreendente: por exemplo, o tropeço e a própria palavra podem se fundir em uma similar no som ou o resultado do reconhecimento consistirá em várias palavras pequenas também semelhantes no som, por exemplo, "rally floor mas "
Além disso, uma longa pausa pode levar o decodificador a decidir que você terminou a frase, o que significa que a coordenação com as palavras já ditas será interrompida.

Dica: pense com antecedência no que você quer dizer, pois isso reduz significativamente o número de longas pausas e hesitações na fala.


A noite Rua Lanterna. Farmácia.


Frases curtas são menos reconhecidas que frases longas. Em frases curtas, especialmente as de uma palavra, o modelo de linguagem praticamente não funciona. É difícil distinguir a palavra "máquina" das palavras: "carro", "carro", "máquina" e o modelo de linguagem nesse caso se baseia apenas na ocorrência da palavra nos dados de treinamento, que, de fato, não carrega nenhuma informação útil. Ao mesmo tempo, a palavra “carro” na frase “ele chegou de carro” deve ser bem reconhecida, uma vez que o modelo de linguagem, baseado no contexto já reconhecido “chegou”, fará a escolha certa. As frases curtas também incluem frases com longas pausas entre as palavras, pois nesse caso todo o contexto de pronunciar uma palavra antes de uma pausa é excluído do trabalho do modelo de idioma.

Dica: evite frases muito curtas. Se isso não for possível, tente pronunciar claramente os finais.


Eu não disse isso


Acontece que não apenas o que você diz é reconhecido, mas também o discurso do seu vizinho. Como resultado, a letra que você digita na sua voz se parece com uma carta do tio Fedor para sua mãe: "O cabelo está coberto, o rabo está caindo". Isto é especialmente verdade ao usar um microfone remoto em um laptop ou câmera web. Tentamos melhorar a qualidade do reconhecimento de ruídos e separar a fala em segundo plano, mas nos casos em que o usuário está silencioso, o reconhecimento também pode ser sintonizado na silenciosa fala em segundo plano.

Dica: um fone de ouvido de qualidade e um ambiente silencioso ajudarão a melhorar a qualidade do reconhecimento.


Como uma cola


O Voco reconhece a fala russa, mas algumas palavras populares em inglês, nomes de empresas e programas de produtos também estão ao seu alcance. Por exemplo, "Coca-Cola", "Windows" são perfeitamente reconhecidas. Mas há um pequeno problema: em inglês, há sons que não estão em russo. Para resolver esse problema, transcrevemos palavras em inglês com os fonemas russos mais semelhantes; portanto, vale a pena pronunciá-los da maneira russa. Por exemplo, Coca-Cola. [kòka kòla]. Não mostre seu excelente sotaque britânico [k'əʊkʌ k'əʊla].

Dica: Pronuncie palavras em inglês com sotaque russo.


Deep Kutra bayonet bayanova side and smokers bank market


Acontece que a palavra não é reconhecida, apesar de você se esforçar muito e seguir todas as nossas recomendações. Talvez o motivo seja que essa palavra não esteja no dicionário de reconhecimento. Ensinamos um modelo de linguagem sobre um assunto geral (política, economia, cultura, esportes, etc.) e cerca de 300 mil das palavras mais frequentes foram inseridas no dicionário. Portanto, provavelmente não existem termos ou sobrenomes altamente especializados do seu chefe. Então, o usuário dita uma carta ao cliente: querido Vladimir é obrigatório, Vladimir executá-los, sem nenhum, sem 1, sem rosto. Repetidamente, o usuário pronuncia o nome do cliente - Bezyakin, varia a pronúncia, a velocidade da pronúncia, enfatiza o estresse, mas o nome desejado não é reconhecido.
Então, aqui está a frase bem conhecida do linguista Sherba "Uma profunda cuzra shteko budlanula boraka e uma criança de cabelos cacheados" se transformou em uma baioneta de Bulanova e uma lata de fumar.
Para que as palavras que você precisa que são desconhecidas para o modelo de idioma sejam reconhecidas corretamente, você deve usar a adaptação do modelo de reconhecimento para suas necessidades. Se você digitar textos, por exemplo, em bioinformática, é melhor usar textos em bioinformática e treinar novamente o sistema neles.
Ao treinar novos textos, é construído um modelo de linguagem pequeno, que participará do reconhecimento junto com o modelo principal. Ou seja, agora o peso que obtemos do modelo de linguagem consistirá em dois pesos: o peso do modelo de linguagem principal e o peso do modelo de adaptação.
Adaptar o sistema por textos é muito mais correto do que adicionar palavras separadas ao dicionário de reconhecimento. A adição de uma única palavra não nos fornece informações sobre como essa palavra é usada, como é inclinada etc., portanto, erros são possíveis no reconhecimento de finais.

Dica: adapte o reconhecimento ao seu tema nos seus textos ou adicione as palavras necessárias ao dicionário de reconhecimento.


PS: este texto foi gravado em voz usando o aplicativo #Voco . E você pode ver como isso aconteceu no vídeo:


Literatura para Geeks:
1. : Mohri, M., Pereira, F., & Riley, M. Speech recognition with weighted finite-state transducers. In Springer Handbook of Speech Processing (pp. 559-584). Springer Berlin Heidelberg 2008.
2. www.morganclaypool.com/doi/abs/10.2200/S00462ED1V01Y201212SAP010
3. , www.amazon.com/Automatic-Speech-Recognition-Communication-Technology/dp/1447157788/ref=sr_1_1?s=books&ie=UTF8&qid=1447854516&sr=1-1&keywords=speech+recognition

Source: https://habr.com/ru/post/pt388151/


All Articles