从零开始的ASR(语音识别)之旅(附项目案例程序与环境配置过程)
从零开始的ASR(语音识别)之旅
文章目录
- 从零开始的ASR(语音识别)之旅
- 一、语音识别简介
- 二、将文字内容转换为语音实际代码演示
- 1、使用pyttsx3实现文字转换成语音功能
- 2、使用win32com.client自带的Dispatch包实现文字转换成语音功能
- 3、使用SpeedLib实现文字转换成语音文件的功能
- 三、将人类的语音内容转换为相应的文字
- 1、使用PocketSphinx实现将英文语音转换成文字
- 2、使用PocketSphinx实现将中文语音转换成文字
- 四、结语
一、语音识别简介
语音识别技术,也被称为自动语音识别Automatic Speech Recognition,(ASR),其目标是将人类的语音中的词汇内容转换为计算机可读的输入,例如按键、二进制编码或者字符序列。与说话人识别及说话人确认不同,后者尝试识别或确认发出语音的说话人而非其中所包含的词汇内容。
分为两部分
- 自动将人类的文字内容转换为相应的语音
- 自动将人类的语音内容转换为相应的文字
二、将文字内容转换为语音实际代码演示
这里有三种方法分别是使用pyttsx3包、win32com.client自带的Dispatch包、SpeedLib包。
1、使用pyttsx3实现文字转换成语音功能
a. 安装pyttsx3包
pip install pyttsx3 -i https://pypi.tuna.tsinghua.edu.cn/simple/
注:这里最好使用Anaconda3创建一个新的环境安装好包后,在pycharm上运行。
b.将字符串转化成语音
# 01demo 使用pyttsx实现文本转换成语音
import pyttsx3 as pyttsx #换名换成pyttsx,没有什么用处问就好记
speaker=pyttsx.init() #初始化一个pyttsx对象
speaker.say('Hello World,你好世界') #运行say函数
speaker.runAndWait() #运行并等待say end,不加这个就不会运行
运行结果截不了图,就不截了。
c.将文本内容转换成语音
# 01demoe 使用pyttsx实现文本转换成语音
import pyttsx3 as pyttsx #换名换成pyttsx,没有什么用处问就好记
speaker=pyttsx.init() #初始化一个pyttsx对象with open('in.txt','r',encoding='utf-8') as f: #打开in.txt文本for line in f:speaker.say(line)speaker.runAndWait() #运行并等待say end
2、使用win32com.client自带的Dispatch包实现文字转换成语音功能
注:使用这个方法有一个好处就是不用下载额外的包可以直接运行
a.将字符串转化成语音
# 02demo 使用Dispatch 实现文本转换成语音
from win32com.client import Dispatch #加载Dispatch 包
speaker=Dispatch('SAPI.SpVoice') # 生成一个Dispatch对象
speaker.Speak('Hello World,你好世界') #巴拉一句话
del speaker #删除Dispatch对象
注1:pyttsx3的文本转换成语音的效果比自带的Dispatch 的SAPI好一点。
注2:这个将文本转换成语音的代码基本一致
3、使用SpeedLib实现文字转换成语音文件的功能
#demo3 使用SpeechLib,从文本输入并转换成语音#一、创建speaker和stream对象
from comtypes.client import CreateObject
speaker=CreateObject("SAPI.SpVoice")
stream=CreateObject('SAPI.SpFileStream')#二、获取输入输出文件地址
from comtypes.gen import SpeechLib
infile='in.txt' #输入文件
outfile='out_audio.wav' #输出语音# 三、将speaker语音输出流接到outfile里
stream.Open(outfile,SpeechLib.SSFMCreateForWrite)#将流stream与输出outfile地址所在文件绑定
speaker.AudioOutputStream=stream #将管道流stream接到speaker的语音输出里面# 这样speaker就能输出out_audio.wav文件里面了#四、获取infile文件内容
f=open(infile,'r',encoding='utf-8')
theText=f.read() #infile文件内全部内容都保存在theText中
f.close()#五、利用SAPI方法输出文本内容,该输出内容会被输出到outfile中
speaker.speak(theText) #speaker开始输出,在没有第11行之前是默认输出到标准输出流也就是说出来#现在修改管道流之后就变成输出到out_audio.wav了#六、释放资源
stream.close()
del speaker
三、将人类的语音内容转换为相应的文字
PocketSphinx 是一个用于语音转换文本的开源API.它是一个轻量级语音识别引擎。在手机端和移动设备也能很好的工作
1、使用PocketSphinx实现将英文语音转换成文字
a.安装PocketSpinx包
pip install PocketSphinx -i https://pypi.tuna.tsinghua.edu.cn/simple/
当然这样子安装经常会遇到如下报错:
如果报错了可以按照如下两种方法:
参考方案a:从以下网址https://www.lfd.uci.edu/~gohlke/pythonlibs/#pocketsphinx,下载离线包,我的python是3.8,64位,所以就下的pocketsphinx‑0.1.15‑cp38‑cp38‑win_amd64.whl,下载完成后,通过命令pip install pocketsphinx‑0.1.15‑cp38‑cp38‑win_amd64.whl 完成安装
参考方案b:从官网上下载的swig最新压缩包4.0.2,官网地址为: http://www.swig.org/download.html.
将下载好的文件解压缩到C盘根目录下。
然后,在环境变量中新增加一条该文件的path路径。最后重新执行一遍pip install PocketSphinx -i https://pypi.tuna.tsinghua.edu.cn/simple/
b.安装SpeechRecognition包
pip install SpeechRecognition -i https://pypi.tuna.tsinghua.edu.cn/simple/
c、实现英文语音转换成文本的程序
#一、初始化一个speed_recognition对象
import speech_recognition as sr
r=sr.Recognizer()#二、打开语音文件并编码后保存在audio中
audio_file='out_audio1.wav'
with sr.AudioFile(audio_file) as source:audio=r.record(source)#三。将语音转换为文本
print('文本内容:',r.recognize_sphinx(audio))
注:由于recognize_sphinx默认语言模型是英文,所以如果有中文容易产生不是乱码的乱码。
2、使用PocketSphinx实现将中文语音转换成文字
a.下载普通话包
https://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Models/Mandarin/
b.将包放到正确的位置
这是我放置的位置
c.修改cmusphinx-zh-cn-5.2包名字为ze-CN同时修改文件夹里面的文件名字
名字参考里面,如果担心打错字可以copy隔壁en-US文件夹里面的对应文件的对应名字
d.使用PocketSphinx实现将中文语音转换成文字
# 04使用PocketSphinx完成语音转换成文本.py
#一、初始化一个speed_recognition对象
import speech_recognition as sr
r=sr.Recognizer()#二、打开语音文件并编码后保存在audio中
audio_file='out_audio1.wav'
with sr.AudioFile(audio_file) as source:audio=r.record(source)#三、将语音转换为文本
print('文本内容:',r.recognize_sphinx(audio,language='ze-CN'))
注1:与上一个程序唯一的区别就是修改了recognize_sphinx函数内语言默认参数为刚刚下载的普通话包
注2:不能转换英文为文本
注3:在这里我用PocketSphinx 做为例子,当然大家可以最新的Vosk库来实现相同的功能,那个可能更好一点,有时间我再过来更新这篇博客
四、结语
本篇博客,只是为了补充当前csdn缺少可以一套完整的入门代码,要真正走语音识别这一方向还有很多路要走,很多原理要学,加油奥。
从零开始的ASR(语音识别)之旅(附项目案例程序与环境配置过程)相关推荐
- 完成我的第一个java项目“评标人才库管理系统”——环境配置+创项目
完成我的第一个java项目"评标人才库管理系统"--环境配置+创项目 idea配置maven环境 创建第一个Spring项目 idea配置maven环境 1.下载maven htt ...
- S7-1500项目案例程序,带5个S7-1200轮询,5个ET200SP
S7-1500项目案例程序,带5个S7-1200轮询,5个ET200SP,博图软件编程. PTO脉冲模式控制20个轴,100个气缸,与2台机器人联动. 采用ModbusRTU 485通讯,PROFIN ...
- 【kratos入门实战教程】1-kratos项目搭建和开发环境配置
1.系列目录 [kratos入门实战教程]0-商城项目介绍 [kratos入门实战教程]1-kratos项目搭建和开发环境配置 [kratos入门实战教程]2-实现注册登陆业务 2.概览 经过上一篇的 ...
- 数字图像相关DIC算法,Ubuntu16.04,Ncorr项目C++版本开源环境配置
数字图像相关DIC算法,Ubuntu16.04,NcorrC++版本开源代码环境配置流程. 本文介绍C++版本数字图像相关法DIC环境配置过程,配置了好几天,痛苦踩坑经历. DIC算法.资料.源码.实 ...
- React-native 环境配置过程与搭建项目问题汇总
首先,最好参照来源当然是来自于开源代码本身的文档: https://reactnative.cn/docs/getting-started/ 一.初始环境搭建 1.环境组件 由于从网上查找React- ...
- 结对-结对编项目作业名称-开发环境搭建过程
项目名称:点灯游戏 开发工具:python 2.7.13 环境搭建过程: 1.安装 python 2.7.13 2.建立有个N行N列的正方形灯板 3.当你开关其中一盏灯,它和上下左右的灯的状态全部反转 ...
- 大厂疯传!Python+商业数据分析+数据可视化教程(附项目案例)
这是一个数据驱动一切的时代,从国家.企业.组织到个人,都在关注各种数据,并寄希望于从数据中获取到价值,因此数据分析就是这个时代的"淘金"! 也正是因为这样,数据分析人才成为了当下的 ...
- umi搭建react+antd项目(一)环境配置
1.先创建文件夹,windows用户手动创建就行了 mkdir myReact && cd myReact 2.在myReact目下,执行脚手架命令,默认选择antd yarn cre ...
- (一)ubuntu下qtcreator +opencv下新建一个项目和调用caffe环境配置
一.用QtCreator创建一个项目 1.新建项目 2.选择项目类型 3.修改项目名和项目存放地址 4.接下来都选择下一步,直到项目生成成功 二.项目创建成功后,开始写opencv小程序 1. ...
最新文章
- java flow step,即使步骤完成,使用FlowBuilder的Spring Batch作业也会失败
- 皮一皮:我真的没买这么多...
- quick cocos2dx 3.x 配置win32工程
- iOS学习笔记16-SQLite应用
- Erlang China 大会 - CN Erlounge III - 发起
- BCGControlBar教程:Outlook Bars
- nacos云环境集群部署
- VPC2007差分硬盘让小硬盘也能跑多个虚拟机
- 清华“最强本科生”揭晓!网友:我大概是来凑数的……
- Servlet 过滤器笔记
- Vue的批量更新原理
- Binary XML file line #6: Error inflating class xxx
- springmvc请求返回一个字符_response 返回 带双引号 的字符串解决办法 springmvc
- hibernate查询list结果集结果都是一样
- PCA,ZCA,ICA,白化,稀疏编码和自编码器
- html文件一打开就未响应,我的电脑里的文件一右击就未响应是什么状况 求解决...
- JavaCV开发详解之1:调用本机摄像头并预览摄像头图像画面视频(建议使用javaCV最新版本)
- 只有韦小宝最适合当产品经理
- 实现android wifi语音通话功能吗,Android下自写类似系统wifi管理功能的实现
- omf多路径 oracle_OMF下Restore Oracle Datafile的优先级问题