我使用pip命令安装了pocketsphinx
pip安装pocketsphinx
我引用了链接pocketsphinx installation
然后添加一个test.py并添加如下代码
from pocketsphinx import LiveSpeech
for phrase in LiveSpeech():
print(phrase)然后,我使用python test.py命令运行我的文件
但是显示错误
for phrase in LiveSpeech():
File "/home/pi/Sphinix/newvenv/lib/python3.7/site-packages/pocketsphinx/__init__.py", line 206, in __init__
self.ad = Ad(self.audio_device, self.sampling_rate)
File "/home/pi/Sphinix/newvenv/lib/python3.7/site-packages/sphinxbase/ad_pulse.py", line 122, in __init__
this = _ad_pulse.new_Ad(audio_device, sampling_rate)
RuntimeError: new_Ad returned -1我试过了
import pyaudio
p = pyaudio.PyAudio()
for i in range(p.get_device_count()):
print(p.get_device_info_by_index(i))我知道结果了
{'index': 0, 'structVersion': 2, 'name': 'USB PnP Sound Device: Audio (hw:2,0)', 'hostApi': 0, 'maxInputChannels': 1, 'maxOutputChannels': 0, 'defaultLowInputLatency': 0.008684807256235827, 'defaultLowOutputLatency': -1.0, 'defaultHighInputLatency': 0.034829931972789115, 'defaultHighOutputLatency': -1.0, 'defaultSampleRate': 44100.0}
{'index': 1, 'structVersion': 2, 'name': 'dmix', 'hostApi': 0, 'maxInputChannels': 0, 'maxOutputChannels': 2, 'defaultLowInputLatency': -1.0, 'defaultLowOutputLatency': 0.021333333333333333, 'defaultHighInputLatency': -1.0, 'defaultHighOutputLatency': 0.021333333333333333, 'defaultSampleRate': 48000.0}然后我试着
from pocketsphinx import LiveSpeech
for phrase in LiveSpeech(audio_device=1):
print(phrase)再一次展示
for phrase in LiveSpeech(audio_device=1):
File "/home/pi/Sphinix/newvenv/lib/python3.7/site-packages/pocketsphinx/__init__.py", line 206, in __init__
self.ad = Ad(self.audio_device, self.sampling_rate)
File "/home/pi/Sphinix/newvenv/lib/python3.7/site-packages/sphinxbase/ad_pulse.py", line 122, in __init__
this = _ad_pulse.new_Ad(audio_device, sampling_rate)
TypeError: in method 'new_Ad', argument 1 of type 'char const *'我怎么才能解决这个问题..?
发布于 2021-10-15 14:23:47
让我们看看你的输出:如果一切正常,你的输出应该是你在上面的代码文本中说的短语列表,但抛出一个错误。这是您的LiveSpeech识别器无法识别的明确指示。为了让它工作,你的LiveSpeech需要一个MIC.in你的情况下,很明显,你的音频设备正在被其他进程使用。您可以确定哪个服务正在使用您的音频设备,并终止其进程以释放音频设备,以便您的代码可以使用它。
您可以使用以下命令查找进程:
lsof /dev/snd/*一旦从使用声卡的进程中释放了声卡,就应该能够运行代码了。
https://stackoverflow.com/questions/63269037
复制相似问题