基于讯飞语音,百度语音,图灵机器人树莓派的智能语音机器人毕业设计第三天

1.安装python下的库之PyAudio

  • 首先卸载掉以前我们用的库,安装新的库。原因是以前的库有BUG,在python里带的pyaudio库各种报错,最后查看了“stackoverflow”上的一些解决方案,定位错误的源头,发现我的库里read函数不能屏蔽IOerror。所以一定是版本问题。
    所以要解决的第一步就是卸载老的库,安装新的库。下图是我在【http://people.csail.mit.edu/hubert/pyaudio/docs/】官方文档里找到的相关介绍

上面谈到的报错我们列出如下:
基于讯飞语音,百度语音,图灵机器人树莓派的智能语音机器人毕业设计第三天_第1张图片

当然还有诸多:我以文档的形式列出,方便后期搜索引擎爬到。让更多的人解决这些问题(我准备参加完毕业,全部开源)

[IOError: [Errno Input overflowed] -9981]
IOError: [Errno Invalid input device (no default output device)] -9996
ALSA lib confmisc.c:768:(parse_card) cannot find card '0'
ALSA lib conf.c:4292:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
ALSA lib conf.c:4292:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name
ALSA lib conf.c:4292:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4771:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM sysdefault
ALSA lib confmisc.c:768:(parse_card) cannot find card '0'
ALSA lib conf.c:4292:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
ALSA lib conf.c:4292:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name
ALSA lib conf.c:4292:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory



好了:我们开始解决它……………

sudo apt-get remove python-pyaudio
  • 然后我们来安装我们需要的最新模块
sudo apt-get install python-pyaudio

sudo apt-get install git

git clone http://people.csail.mit.edu/hubert/git/pyaudio.git

sudo apt-get install libportaudio0 libportaudio2 libportaudiocpp0 portaudio19-dev

sudo apt-get python-dev

sudo python pyaudio/setup.py install
  • 安装完就解决了我们一开始谈到的问题 io报错 9981。当然还要在源代码里做修改,把read函数里面的参数修改为false,安装上面官方文档的截图进行传参。后面我会在代码里标注。

2.解决声卡的各种问题

在这个上面我研究了很长时间,看了许多代码,我们在毕业设计第一天就谈到了声卡的驱动安装,这里再次谈起是因为我们要用python里的pyaudio解决声音的vad功能:

话音激活检测(VAD)算法能够区分传输语音信号中的语音信号和背景噪音,避免无用信号的传输,从而节省有限网络资源,因此对VAD算法的研究有重要的意义。由于一般静默压缩方法仅考虑高信噪比和平稳背景噪声这种理想通信条件,为了在复杂的背景噪声下进行VAD检测。简单来说就是我们不可能一直让录音和存储,比如现在家里没有人,也没人说话,我们完全就没必要录音上传检测语音识别。而vad就是解决这个的,当有较大的振幅时,我们开始存储语音,然后上传识别。
我们在python中写了一部分代码用来解决环境静音:后面我们会拿出这部分代码来详细说明。但是问题又来了:这个pyaudio底层都用的是linux的声音接口,当我们运行程序的时候就出现警告而且是上百行:就像上面图片,但是仔细看:错误原因是找不到:那好解决了,错误的引起是我们本来就没有这些设备。我们把这些东西删除。具体操作如下:

  • 删除这些报错的设备:什么错误,删除什么
sudo vim /usr/share/alsa/alsa.conf
$ ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline

例如:上面报错是,那么删除下面的:

pcm.rear cards.pcm.rear
pcm.center_lfe cards.pcm.center_lfe
pcm.side cards.pcm.side
pcm.hdmi cards.pcm.hdmi
pcm.modem cards.pcm.modem
pcm.phoneline cards.pcm.phoneline
X11 proxy: Unsupported authorisation protocol
xcb_connection_has_error() returned true
  • 添加一些东西,解决con错误
sudo copy ~ .Xauthority /root
ALSA lib pulse.c:243:(pulse_connect) PulseAudio: Unable to connect: Connection refused

报错如上:解决方法:

 在路径 /usr/share/alsa/alsa.conf.d/  下删除pulseaudio files. 

Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
jack_control start
After making those changes, I no longer get the errors, just:
然后运行基本不报错了:
Listening... Press Ctrl+C to exit

你可能感兴趣的:(语音识别,语音机器人)