基于PyQT5、PocketSphinx的python语音识别小程序
1.使用说明
1.1 项目简介
参照微软cotana的工作方式,编写自己的一个python语音助手程序,借助PyQt5和Pipy,创建可视化窗口,能实现基本的语音识别功能,同时根据几个特定的关键词执行简单的行动(如music,readme等)。
1.2 项目功能要求
-
实现语音识别,并将识别的内容在屏幕上打印出来
-
设置几个命令关键词(music,readme),并实现相应的行动。若识别出的内容中包含设置的几个关键词,则程序执行相应的行动。
-
设置两种识别模式:PocketSphinx中包含7个Recognizer API:程序中使用了两个API:recognize_sphinx和recognize_google。(两种识别模式可由用户自行选择,其中recognize_sphinx可直接在本地运行,但识别精度较低;recognize_google识别精度较高,但是使用recognize_google需要处于联网状态下且IP地址需要在境外,否则语音识别会出现错误)
-
设置文本框:用户可直接在文本框中输入命令,其执行效力与语音输入等效
2.程序设计与实现
2.1 设计
python
class Ui_MainWindow(object):
Ui_Mainwindow类加载图形化用户界面,控制界面布局,类中包含各种Label,PushButton,MenuBar控件。
python
class myWindow(QtWidgets.QMainWindow):
mywindow类处理交互逻辑,类中包含各种执行函数,同时实现控件与函数的连接。
2.2 主要函数实现
声音监听与处理函数
```python def listen(self): # Working with Microphones mic = sr.Recognizer() with sr.Microphone() as source: # use the default microphone as the audio source audio = mic.listen(source) # listen for the first phrase and extract it into audio data try: if self.isgoogle: content = mic.recognize_google(audio) else: content = mic.recognize_sphinx(audio) except sr.RequestError: self.ui.label.setText("Something was wrong! Try again......")
COMMEND = ["music", "open"]
commend_is_music = re.search(COMMEND[0].lower(), content.lower())
commend_is_file = re.search(COMMEND[1].lower(), content.lower())
if commend_is_music:
self.ui.label.setText("you said: \" " + content + "\"")
win32api.ShellExecute(0, 'open', 'D:\\网易云音乐\\CloudMusic\\cloudmusic.exe', '', '', 1)
elif commend_is_file:
self.ui.label.setText("you said: \"" + content + "\"")
win32api.ShellExecute(0, 'open', 'D:\\Notpad++\\Notepad++\\notepad++.exe', '', '', 0)
else:
self.ui.label.setText("you said: \" " + content + "\"\nIt's not a valid command.")
```
创建监听线程
python
def listen_thread(self):
self.ui.label.setText("I'm listening...... ")
t1 = threading.Thread(target=self.listen)
t1.setDaemon(True)
t1.start()
文本处理函数
python
def text_changed(self):
content = self.ui.textbox.text()
print(content)
COMMEND = ["music", "open"]
commend_is_music = re.search(COMMEND[0].lower(), content.lower())
commend_is_file = re.search(COMMEND[1].lower(), content.lower())
if commend_is_music:
self.ui.label.setText("you typed: \" " + content + "\"")
win32api.ShellExecute(0, 'open', 'D:\\网易云音乐\\CloudMusic\\cloudmusic.exe', '', '', 1)
elif commend_is_file:
self.ui.label.setText("you typed: \"" + content + "\"")
win32api.ShellExecute(0, 'open', 'D:\\Notpad++\\Notepad++\\notepad++.exe', '', '', 0)
else:
self.ui.label.setText("you typed: \" " + content + "\"\nIt's not a valid command.")
创建文本处理线程
python
def text_thread(self):
t2 = threading.Thread(target=self.text_changed)
t2.setDaemon(True)
t2.start()
连接各类控件与相应函数
python
self.ui.recognize_btn.clicked.connect(self.listen_thread)#语音识别按钮连接监听线程
self.ui.sphinx_bar.triggered.connect(self.sphinxbar_recognize)#sphinx模式触发
self.ui.google_bar.triggered.connect(self.googlebar_recognize)#google模式触发
self.ui.text_btn.clicked.connect(self.text_thread)#文本框输入确认按钮连接文本处理线程
3.测试截图
参考文献
- 音乐智能耳机后台管理系统的设计与实现(中国地质大学(北京)·吕莹)
- 基于用户行为的音乐推荐系统设计与实现(华中科技大学·郝陆风)
- 面向垂直领域的知识图谱构建和智能问答系统设计与实现(北京邮电大学·王楠楠)
- 基于SSM框架的语音管理平台的设计与开发(浙江工业大学·赵雨滴)
- 基于分布式任务队列的表达力评测系统设计与实现(南京大学·褚东宇)
- 音乐智能耳机后台管理系统的设计与实现(中国地质大学(北京)·吕莹)
- 互动课堂系统的设计与实现(北京交通大学·李松)
- 华泰平台部门小AI智能客服系统的设计与实现(南京大学·刘德宽)
- 基于云服务的智能语音技术在智能家居中的应用(南京邮电大学·唐文凯)
- 基于知识图谱的开放空间知识采集系统(中南民族大学·马荣香)
- 基于云服务的智能语音技术在智能家居中的应用(南京邮电大学·唐文凯)
- 手语合成系统的研究与实现(北京邮电大学·陶然)
- 音乐智能耳机后台管理系统的设计与实现(中国地质大学(北京)·吕莹)
- 智能电视语音搜索控制系统的设计与实现(华中科技大学·江哲)
- 基于神经网络的英语学习app系统研发(东华大学·陈风驾)
本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:代码助手 ,原文地址:https://m.bishedaima.com/yuanma/35562.html