прокси-сервер

#python-2.7 #speech-recognition #pocketsphinx

#python-2.7 #распознавание речи #pocketsphinx

Вопрос:

Я застрял в проблеме распознавания голоса. Он выдает другую ошибку с другим файлом. Помогите мне…

Мой код

 #!/usr/bin/python
import sys, wave, os
import pocketsphinx as ps
from pocketsphinx.pocketsphinx import *
from sphinxbase.sphinxbase import *
hmdir   = "/usr/local/share/pocketsphinx/model/en-us/en-us"
lmd     = "/usr/local/share/pocketsphinx/model/en-us/en-us.lm.dmp"
dictd   = "/usr/local/share/pocketsphinx/model/en-us/cmudict-en-us.dict"

wavfile = "./look.wav"
wavFile = file(wavfile,'rb')
config = Decoder.default_config()
config.set_string('-hmm', hmdir)
config.set_string('-lm', lmd)
config.set_string('-dict', dictd)

speechRec = ps.Decoder(config)
speechRec.decode_raw(wavFile)
result = speechRec.hyp()

print result
  

Здесь я попробовал с двумя файлами wav
1. Файл ‘wav.wav’, который я записал с помощью arecord, продолжительностью 2 секунды, я сказал «Привет, привет».
2. Файл ‘посмотрите.wav’, который я записал на выходе pico2wave, — это слова «Смотри, Дейв».

Вывод обоих входных данных показывает разные выходные данные, как показано ниже

посмотрите.wav

 INFO: ngram_search_fwdflat.c(302): Utterance vocabulary contains 106 words
INFO: ngram_search_fwdflat.c(945):     1144 words recognized (15/fr)
INFO: ngram_search_fwdflat.c(947):    74827 senones evaluated (1011/fr)
INFO: ngram_search_fwdflat.c(949):    95911 channels searched (1296/fr)
INFO: ngram_search_fwdflat.c(951):     5123 words searched (69/fr)
INFO: ngram_search_fwdflat.c(954):     3818 word transitions (51/fr)
INFO: ngram_search_fwdflat.c(957): fwdflat 0.60 CPU 0.811 xRT
INFO: ngram_search_fwdflat.c(960): fwdflat 0.61 wall 0.819 xRT
INFO: ngram_search.c(1252): lattice start node <s>.0 end node </s>.54
INFO: ngram_search.c(1278): Eliminated 1 nodes before end node
INFO: ngram_search.c(1383): Lattice has 215 nodes, 603 links
INFO: ps_lattice.c(1380): Bestpath score: -3824
INFO: ps_lattice.c(1384): Normalizer P(O) = alpha(</s>:54:72) = -264317
INFO: ps_lattice.c(1441): Joint P(O,S) = -303746 P(S|O) = -39429
INFO: ngram_search.c(874): bestpath 0.01 CPU 0.014 xRT
INFO: ngram_search.c(877): bestpath 0.01 wall 0.011 xRT
<pocketsphinx.pocketsphinx.Hypothesis; proxy of <Swig Object of type 'Hypothesis *' at 0x76bb10f8> >
INFO: ngram_search_fwdtree.c(432): TOTAL fwdtree 2.10 CPU 2.877 xRT
INFO: ngram_search_fwdtree.c(435): TOTAL fwdtree 2.21 wall 3.031 xRT
INFO: ngram_search_fwdflat.c(176): TOTAL fwdflat 0.60 CPU 0.822 xRT
INFO: ngram_search_fwdflat.c(179): TOTAL fwdflat 0.61 wall 0.830 xRT
INFO: ngram_search.c(303): TOTAL bestpath 0.01 CPU 0.014 xRT
INFO: ngram_search.c(306): TOTAL bestpath 0.01 wall 0.011 xRT
  

Комментарии:

1. Для печати строки вам нужно использовать print decoder.hyp().hypstr . Второй файл поврежден, вам нужно записать его правильно — arecord -f S16_LE -r 16000 > wav.wav

2. Похоже, вы тоже используете устаревший код, последняя версия pocketsphinx-python с демонстрациями здесь: github.com/cmusphinx/pocketsphinx-python

3. Вы должны были задавать по одному вопросу за раз

4. Большое спасибо г-ну Николаю Шмыреву за ответ.. Я установил последнюю версию с autogen.sh это действительно работало без каких-либо проблем. Я следил за вашим блогом. Спасибо

5. Добро пожаловать

Ответ №1:

Для печати строки вам нужно использовать print decoder.hyp().hypstr , для печати отдельных слов в файле используйте [seg.word for seg in decoder.seg()]