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

1.安装python下的库之PyAudio

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

上面谈到的报错我们列出如下:

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

[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
  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
### 回答1: 在Qt中,QJsonObject是一种用于处理JSON数据的类。结合Qt5、百度语音API和图灵机器人API,我们可以创建一个智能语音聊天机器人。 首先,我们需要使用Qt5的功能来录制和播放音频。通过QAudioFormat类和QAudioInput和QAudioOutput类,我们可以实现音频的录制和播放功能。在录制音频之后,我们可以将它发送到百度语音API进行语音识别。 百度语音API提供了语音识别的功能,它接受音频数据并将其转换为文本。我们可以使用Qt的网络功能发送音频数据到百度的服务器,并接收返回的识别结果。QNetworkAccessManager类和QNetworkRequest类可以用于发送和接收网络请求。 接下来,我们可以使用图灵机器人API实现对话的功能。图灵机器人API能够处理人类语言,并提供回答、解析意图等功能。我们可以使用Qt的网络功能发送用户输入的文本到图灵机器人的服务器,并获取机器人的回复。同样地,我们可以使用QNetworkAccessManager类和QNetworkRequest类来进行网络请求。 最后,我们可以将图灵机器人的回答转换为语音,然后用QAudioOutput类将其播放出来。这样用户就能听到机器人的回复了。 总结来说,基于Qt5、百度语音API和图灵机器人API,我们可以创建一个智能语音聊天机器人。通过Qt的音频录制和播放功能以及网络功能,我们能够将用户的语音输入发送到百度语音API进行语音识别,并将识别结果发送到图灵机器人API进行对话处理。最后,将机器人的回答转换为语音并播放给用户。 ### 回答2: 在Qt上使用QJsonObject类可以基于Qt5,通过集成百度语音API和图灵机器人API实现智能语音聊天机器人。 首先,我们需要使用Qt的网络模块与百度语音API进行交互。通过构建HTTP请求,在发送请求时传入音频数据,将其发送给百度语音API进行语音识别。返回的结果可以使用QJsonObject类进行解析和处理。可以获取识别出的文本,并将其传递给图灵机器人API进行下一步处理。 其次,通过Qt的网络模块,通过HTTP请求与图灵机器人API进行交互,将百度语音识别出的文本发送给图灵机器人API,获取其回复的文本信息。同样,可以使用QJsonObject类对返回的数据进行解析和处理。 最后,将图灵机器人API返回的回复文本再次发送给百度语音API进行语音合成。通过QJsonObject类解析返回的音频数据,将其播放出来,用户可以听到机器人的回复。 通过使用QJsonObject类,我们可以方便地对百度语音API和图灵机器人API返回的JSON数据进行解析和处理,并根据需要进行相应的操作和回应。这样,就可以实现一个基于Qt5的智能语音聊天机器人

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值