PocketSphinx OSError: [Errno -9981] Вход переполнен PyAudio - PullRequest
1 голос
/ 27 апреля 2020

Сначала я хочу рассказать, какие инструменты я использую:

* 1. Raspberry pi 3b +

ReSpeaker 4Mi c Круговой массив (Mi c)

Linux Debian "Buster"

Thonny Python IDE *

Моя проблема - каждый раз, когда я пытаюсь запустить свой код, он всегда выдает ошибку

[Errno -9981] Input overflowed

Но когда я запускаю код и сразу произнесите слово, он может распознать, и тогда произойдет ошибка, я уже пытаюсь использовать свой собственный lm и dict, но результат тот же, я новичок ie, поэтому любой ответ действительно благодарен, это мой код:


from os import environ, path

from pocketsphinx import *
from sphinxbase import *

MODELDIR = "/usr/local/lib/python3.7/dist-packages/pocketsphinx/model"

config = Decoder.default_config()
audio_device='plughw:1,0'
config.set_string('-hmm', path.join(MODELDIR, 'en-us'))
config.set_string('-lm', path.join(MODELDIR, 'en-us.lm.bin'))
config.set_string('-dict', path.join(MODELDIR, 'cmudict-en-us.dict'))
config.set_string('-logfn', '/dev/null')

decoder = Decoder(config)

import pyaudio
p = pyaudio.PyAudio()
stream = p.open(format=pyaudio.paInt16,
                channels=1,
                rate=16000 ,#rate=16000,
                input=True,
                frames_per_buffer=1024,
                input_device_index =2)
stream.start_stream()

in_speech_bf = False
decoder.start_utt()
print("Check")
while True:
    buf = stream.read(1024)
    if buf:
        decoder.process_raw(buf, False, False)
        print("CHECKPOINT 1")
        if decoder.get_in_speech() != in_speech_bf:
            in_speech_bf = decoder.get_in_speech()
            print("CHECKPOINT 2")
            if not in_speech_bf:
                decoder.end_utt()
                print ('Result:', decoder.hyp().hypstr)  
                decoder.start_utt()
    else:
        break
decoder.end_utt()

И это вывод


Check

CHECKPOINT 1

CHECKPOINT 1

CHECKPOINT 2

CHECKPOINT 1

CHECKPOINT 1

Traceback (most recent call last):
  File "/home/pi/pocketRecognition/NYOBAINN.py", line 42, in <module>
    buf = stream.read(1024)
  File "/usr/lib/python3/dist-packages/pyaudio.py", line 608, in read
    return pa.read_stream(self._stream, num_frames,
exception_on_overflow) OSError: [Errno -9981] Input overflowed

Когда я запускаю pocketsphinx_continuous -inmic yes -adcdev plughw:1, 0 в терминале, это работает довольно хорошо.

...