window下基于谷歌api和CUM Sphinx的简单语音识别
window下基于谷歌api和CUM Sphinx的简单语音识别工具包准备基于谷歌api语音识别代码基于谷歌CMU Sphix语音识别代码格式转换播放本地语音输入文本进行读音作者福建农林大学在读计算机科学与技术研究生,研究方向智能计算与机器学习。微信公众号 小平讲算法因为最近在要做语音识别的东西,所以就自己在网上查找了一些资料,并简单实现了语音识别的demo。工具包准备1.SpeechRecogn
window下基于谷歌api和CUM Sphinx的简单语音识别
作者福建农林大学在读计算机科学与技术研究生,研究方向智能计算与机器学习。微信公众号 小平讲算法
因为最近在要做语音识别的东西,所以就自己在网上查找了一些资料,并简单实现了语音识别的demo。
工具包准备
1. SpeechRecognition
2. playsoud, simpleaudio
3.gtts, pyttsx3
4.pocketsphinx
5. ffmpeg.exe
基于谷歌api语音识别代码
SpeechRecognition 软件包是一个功能全面且易于使用的 Python 语音识别库,只需要几行代码就可以实现语音识别,可以通过在CMD输入pip install SpeechRecognition
来下载安装。因为pip一般下载速度特别慢,所以我建议这里用清华镜像来下载安装下载,在CMD输入pip install SpeechRecognition -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
。
接下来就是代码实现部分:
import speech_recognition as sr //这个模块其实就是你pip的SpeechRecognition包
import sys
r = sr.Recognizer() //初始化识别器实例
# 本地语音测试
harvard = sr.AudioFile(sys.path[0]+'/将乐路.wav') //这里是读取语音文件,这里我说了一段“你看看你看看”
with harvard as source:
# 去噪
r.adjust_for_ambient_noise(source,duration=0.5) //对语音去噪,关键字参数来调整的时间分析范0.5毫秒,默认是1毫秒
audio = r.record(source)
# 语音识别
test = r.recognize_google(audio, language="cmn-Hans-CN") //这个需要翻墙
print('test:',test)
上面这其实可以说一个固定框架实现简单语音识别的代码。
识别结果
基于谷歌CMU Sphix语音识别代码
Recognizer API 主要目是识别语音,每个 API 都有多种设置和功能来识别音频源的语音,分别是:
recognize_bing(): Microsoft Bing Speech
recognize_google(): Google Web Speech API
recognize_google_cloud(): Google Cloud Speech - requires installation of the google-cloud-speech package
recognize_houndify(): Houndify by SoundHound
recognize_ibm(): IBM Speech to Text
recognize_sphinx(): CMU Sphinx - requires installing PocketSphinx
recognize_wit(): Wit.ai
因为谷歌api需要翻墙才能run代码,上面只有 recognize_sphinx() 可以脱机工作,所以我测试一下 recognize_sphinx() 这个效果
使用 recognize_sphinx() API需要安装PocketSphinx模块,命令pip install PocketSphinx -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
,如果是对中文进行识别,则需要额外下载中文声学模型、语言模型和字典文件,这里我直接给出我所参考的博客。然后准备工作就完成了。上代码:
import speech_recognition as sr //这个模块其实就是你pip的SpeechRecognition包
import sys
r = sr.Recognizer() //初始化识别器实例
# 本地语音测试
harvard = sr.AudioFile(sys.path[0]+'/将乐路.wav') //这里是读取语音文件,这里我说了一段“你看看你看看”
with harvard as source:
# 去噪
r.adjust_for_ambient_noise(source,duration=0.5) //对语音去噪,关键字参数来调整的时间分析范0.5毫秒,默认是1毫秒
audio = r.record(source)
# 语音识别
print(r.recognize_sphinx(audio,language='zh-CN'))
识别结果
WTF,这是什么鬼,识别结果这么差,我之后也测试了英文识别,发现**recognize_sphinx()**识别效果真的不好,因为刚入门,也不知道为啥,所以我尽量还是选择Goole Api。
格式转换
上面对语音识别的文件要求十分苛刻,基本只能用.WAV
格式,所以对于一些不是.WAV
格式的怎么办,直接改后缀名,BUT,然而并不行,会报错,说什么不是纯净的.WAV
版本,(⊙o⊙)…。好吧,这怎么能难倒我们出色的猿大师。
于是乎一顿搜索,找到了一些代码,不多说,上菜:
from pydub import AudioSegment
import speech_recognition as sr
import pandas
import sys
#AudioSegment.converter ='D:\\ffmpeg-20200831-4a11a6f-win64-static\\bin\\ffmpeg.exe'
source_file_path = sys.path[0]+'\\ff.mp3'
print(source_file_path)
sound = AudioSegment.from_mp3(source_file_path)
destin_path = sys.path[0]+'/audio.wav'
sound.export(destin_path,format ='wav')
这里又遇到几个坑,如果你直接运行上面的代码是行不通的,因为你没有ffmpeg.exe,这个是一个格式转换的东西,只有这个你才能跑动上面的代码。
所以你得下载这些东西,上链接,下载windo下的版本
然后把上面代码中注释的那一行的注释给去掉AudioSegment.converter ='D:\\ffmpeg-20200831-4a11a6f-win64-static\\bin\\ffmpeg.exe'
,换成你的ffmpeg.exe路径就好,对了,换成你的路径就完事了嘛,too young too simple,你还需要配置环境变量,WTF,好吧,那就[配吧]。(https://jingyan.baidu.com/article/a3a3f81124c5e08da2eb8a29.html)
好了,该部分的工作就到此结束。工具包链接链接:https://pan.baidu.com/s/1HQLYERH5q__U50A1JWEgVg
提取码:9syb
播放本地语音
上代码:
import playsound
import simpleaudio as sa
import sys
wave_obj = sa.WaveObject.from_wave_file(sys.path[0]+'/将乐路.wav')
play_obj = wave_obj.play()
play_obj.wait_done()
这样它就会自动播放了,上面的几个模块也需要你自己去安装,通过pip
来搞定,需要你自己亲自去动手实践了。
输入文本进行读音
import gtts
import pyttsx3
engine = pyttsx3.init()
engine.say("I will speak this text")
engine.say("I will speak this text")
engine.say("I will speak this text")
engine.say("台湾是个美丽的宝岛")
engine.runAndWait()
同样,需要下载上面的库,如果跑不了,说明你得TTS有问题(别问我为什么知道,因为你是盗版winodw系统),啊!!!那怎么办呢,怎么办,修呗,TTS链接:https://pan.baidu.com/s/1AErnVkwQPJDlq8b8Ehddeg
提取码:ap03
好了工作到此结束。
更多推荐
所有评论(0)