教你怎样用Python进行语音识别

这里讲一下如何在不联网的情况下,依然可以通过python来将语音文件转换成文字。这里用到的包为sphinx,sphinx是由美国卡内基梅隆大学开发的大词汇量、非特定人、连续英语语音识别系统。 2019-11-20 12:30:21 Python编程语言语音识别 自动驾驶正在加速卡车司机下岗 据了解,上汽自主研发了视觉感知系统、激光雷达系统、毫米波雷达系统以及卫星和惯性导航组合系统,旗下重卡已经具备了多维度、多方位 360 度感知能力,能在前后各约 250 米、左右各约 80 米的范围内精确感知交通参与者,对行人、车辆、其他障碍物等进行精确识别,规划路径。 2019-11-20 10:36:55 自动驾驶重卡自动化 准确率99.9%!小猿口算靠AI批改数学题,误判率仅为小学教师1/10 猿辅导旗下小猿口算App宣布,目前小猿口算针对小学横式题目的AI批改准确率已经达到了99.9%,超过了人类平均水平。 2019-11-20 10:03:56 AI 数据人工智能 苹果裁员调整,盛世背面!什么才是苹果AI的护城河 报道称,随着苹果公司加大对服务业务的关注力度,该公司还正在重新调整许多工程师的工作重心。今年早些时候曾有报道称,苹果公司已经将从事其自动驾驶汽车项目的人员裁减了200人。 2019-11-20 08:06:49 苹果AI裁员 Ocado如何使用机器学习来减少食物浪费、解决饥饿问题? 译文 食物浪费在全球是个大问题。据联合国粮食及农业组织声称,全球每年浪费约13亿吨粮食。据信这足以养活全球8.15亿的饥饿人口。但由于技术的进步,这个问题有一天有望消除。比如说杂货店技术先驱Ocado通过使用数据分析、机器学习和人工智能来管理其产品,将食品浪费率降低到6000件中的仅仅1件。 2019-11-20 08:00:00 Ocado机器学习 竹间荣获英特尔AI 100计划“创新激励计划优秀团队”奖

这里讲一下如何在不联网的情况下,依然可以通过python来将语音文件转换成文字。这里用到的包为sphinx,sphinx是由美国卡内基梅隆大学开发的大词汇量、非特定人、连续英语语音识别系统。

[[282998]]

网上找到一些例子,有一些成熟的模型,可以将语音转成文字。例如Cloud Speech API,但是需要你使用google云平台的前提。

speech recognition

对于python这一非常成熟的胶水语言,在网上找一些现成的工具包真的不是一个太难的问题。在GitHub上就发现了这样一个神奇的包:speech recognition

它可以支持实时翻译,当然前提是需要在机器上安装有关麦克风的依赖包;还可以支持将语音文件中的文字直接提取出来。通过speech recognition可以调用多种平台上的模型,比如google API,CMU sphinx,Microsoft Bing Speech,IBM Speech to Text,Wit.ai 等

离线转换

对于国内的网络环境,无法用google API来将语音数据转换成文本文件,因为在调用这个包的时候,需要连接到google。当然,你可以租用一个国外的VPS来做这件事情。

这里讲一下如何在不联网的情况下,依然可以通过python来将语音文件转换成文字。这里用到的包为sphinx,sphinx是由美国卡内基梅隆大学开发的大词汇量、非特定人、连续英语语音识别系统。

安装 sphinx

我本人所用的环境为ubuntu。

  1. imyin@develop:~/Downloads/phinx$lsb_release-a
  2. NoLSBmodulesareavailable.
  3. DistributorID:Ubuntu
  4. Description:Ubuntu16.04.3LTS
  5. Release:16.04
  6. Codename:xenial

在安装sphinx之前需要安装一些软件包

  1. sudoapt-getinstallgccautomakeautoconflibtoolbisonswigpython-devlibpulse-dev

之后可以在相关网站上下载sphinxbase安装包,当然也可以直接clone github上的包

下载完之后进行解压

  1. tarzxpfsphinxbase-5prealpha.tar.gz

修改文件名

  1. mvsphinxbase-5prealphasphinxbase
  2. lssphinxbase
  3. AUTHORSdocindent.shMakefile.amREADME.mdsrcwin32
  4. autogen.sh.gitLICENSENEWSsphinxbase.pc.inswig
  5. configure.acincludem4READMEsphinxbase.slntest

现在我们应该运行autogen.sh来生成Makefiles和其他一些脚本以备后续的编译和安装。

  1. ./autogen.sh

下面开始源码安装

  1. make&&sudomakeinstall

执行完以上命令之后,如果没有出现什么报错信息,就说明已经安装成功了,但是此时你的命令并不可以生效,在运行命令时会出现这样的错误。

  1. imyin@develop:~/Downloads/phinx/sphinxbase$sphinx_lm_convert
  2. sphinx_lm_convert:errorwhileloadingsharedlibraries:libsphinxbase.so.3:cannotopensharedobjectfile:Nosuchfileordirectory

还需要让系统加载目录/usr/local/lib,为了让系统每次启动时都可以自动加载,可以修改系统配置文件ld.so.conf

  1. sudoecho"/usr/local/lib">>/etc/ld.so.conf
  2. sudoldconfig

这时候,就可以通过sphinx_lm_convert命令将模型DMP文件转成bin文件

  1. sphinx_lm_convert-izh_broadcastnews_64000_utf8.DMP-ozh_CN.lm.bin

上面这行代码是将中文的模型DMP文件转成了bin文件。在安装完sphinx后默认只支持英文,在存放模型的路径下只有一个文件名为en-US,所以这里需要添加一个处理中文的模型,相关文件可以在这个网址中下载。

[[282999]]

在python中使用sphinx

想要在python中使用sphinx的话,需要安装一些依赖包。

  1. pipinstallpydub-U#负责将MP3文件转换为wav文件
  2. pipinstallSpeechRecognition-U#负责将语音转换成文字
  3. sudoapt-qqinstallbuild-essentialswiglibpulse-dev#为后面安装pocketsphinx做准备
  4. pipinstall-Upocketsphinx#为使用sphinx
  5. sudoapt-getinstalllibav-tools#为解决在调用pydub时出现的warning:RuntimeWarning:Couldn'tfindffmpegoravconv-defaultingtoffmpeg,butmaynotworkwarn("Couldn'tfindffmpegoravconv-defaultingtoffmpeg,butmaynotwork",RuntimeWarning)

这时候,就可以启动ipython来试试效果了。


  1. file_path='/home/imyin/Downloads/phinx/test_data'
  2. r=sr.Recognizer()
  3. hello_zh=sr.AudioFile(os.path.join(file_path,'test.wav'))
  4. withhello_zhassource:
  5. audio=r.record(source)
  6. r.recognize_sphinx(audio,language='zh_CN')
  7. '今天天气很'

可以看出,这个语音识别器已经生效了。但是我说的是“今天天气好热啊”。

看来sphinx中的模型并非很准呐,而且这只是一个短句子。我们接下来看看长句子的效果,我录了村上春树的《当我谈跑步时我谈些什么》中的一段内容。

那一年的七月里,我去了一趟希腊,要独自从雅典跑到马拉松,将那条原始的马拉松路线——马拉松至雅典——逆向跑上一趟。为什么要逆向跑呢?因为清晨便从雅典市中心出发,在道路开始拥堵、空气被污染之前跑出市区,一路直奔马拉松的话,道路的交通量远远少得多,跑起来比较舒适。这不是正式的比赛,自己一个人随意去跑,当然不能指望有什么交通管制。

  1. hello_zh=sr.AudioFile(os.path.join(file_path,'test2.wav'))
  2. withhello_zhassource:
  3. audio=r.record(source)
  4. r.recognize_sphinx(audio,language='zh_CN')
  5. '南音扬的只有领过球的立场是希望让猪只处理垃圾土木工程上打球运动充满温情能成功吗而中止了对印尼商报称他不是没有立场谈那一枚其中春天从雅典市中心出发寸厂都可成功突破寻求对於能提升统筹署取缔一路直奔马拉松和阿惹山活动等二十个队中重申这不是正常的比赛自己一个人却一直到当然不能说明什么这种共识'

呃,看到结果,我觉得可以用一个来形容:差劲。两个字来形容:太差劲!

当然,这个模型只是我直接从网上下载下来的。训练它时所用到的语料不会那么齐全,所以在测试时难免会出现不准确的情况。要想让模型更加准确,需要自己在利用sphnix继续训练模型。

相关办法在其官网上可以找到,也有相应的教程。感兴趣的朋友可以自行研究。

  1. Q:Whymyaccuracyispoor
  2. Speechrecognitionaccuracyisnotalwaysgreat.Totestspeechrecognitionyouneedtorunrecognitiononprerecordedreferencedatabasetoseewhathappensandoptimizeparameters.
  3. Youdonotneedtoplaywithunknownvalues,thefirstthingyoushoulddoistocollectadatabaseoftestsamplesandmeasuretherecognitionaccuracy.Youneedtodumpspeechutterancesintowavfiles,writethereferencetextfileandusedecodertodecodeit.ThencalculateWERusingtheword_align.pltoolfromSphinxtrain.Testdatabasesizedependsontheaccuracybutusuallyit’senoughtohave10minutesoftranscribedaudiototestrecognizeraccuracyreliably.Theprocessisdescribedintutorialtuning.

文中提到的教程网址是https://cmusphinx.github.io/wiki/tutorialtuning/

Google API

利用google API来处理语音识别则相当准确,不过需要连接google,以下是我在VPS中执行的一段代码,可以看出,它将我的录音精准地翻译成了文字。

教你怎样用python进行语音识别

但是如果录音文件较大的话,会运行时间很长,并且会返回一个超时的错误,这很是让我苦恼。

不过幸运的是,speech_recognition支持将语音文件进行截取处理。例如,我可以只处理语音文件中的前15秒钟的内容。

  1. withtestassource:
  2. audio=r.record(source,duration=15)
  3. r.recognize_google(audio,language='zh-CN')
  4. '那一年的7月里我去了一趟希腊有独自从雅典跑到马拉松江哪条原始的马拉松路线马拉松直雅典一想跑上一趟'

从上面的结果看,简直比sphnix处理的效果好太多了。

通过看帮助文档发现speech_recognition不仅可以截取前面的录音,还可以截取中间的。

  1. In[18]:r.record?
  2. Signature:r.record(source,duration=None,offset=None)
  3. Docstring:
  4. Recordsupto``duration``secondsofaudiofrom``source``(an``AudioSource``instance)startingat``offset``(oratthebeginningifnotspecified)intoan``AudioData``instance,whichitreturns.
  5. If``duration``isnotspecified,thenitwillrecorduntilthereisnomoreaudioinput.

例如我想处理5秒至20秒之间的内容。

  1. withtestassource:
  2. audio=r.record(source,offset=5,duration=15)
  3. r.recognize_google(audio,language='zh-CN')
  4. '要独自从雅典跑到马拉松江哪条原始的马拉松路线马拉松直雅典一项跑上一趟为什么要一想到呢因为星辰变从雅典市中心出发'

今天就讲到这里。世界真奇妙,更多精彩,自己继续去发现吧!

©本文为清一色官方代发,观点仅代表作者本人,与清一色无关。清一色对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。本文不作为投资理财建议,请读者仅作参考,并请自行承担全部责任。文中部分文字/图片/视频/音频等来源于网络,如侵犯到著作权人的权利,请与我们联系(微信/QQ:1074760229)。转载请注明出处:清一色财经

(0)
打赏 微信扫码打赏 微信扫码打赏 支付宝扫码打赏 支付宝扫码打赏
清一色的头像清一色管理团队
上一篇 2023年5月4日 11:20
下一篇 2023年5月4日 11:20

相关推荐

发表评论

登录后才能评论

联系我们

在线咨询:1643011589-QQbutton

手机:13798586780

QQ/微信:1074760229

QQ群:551893940

工作时间:工作日9:00-18:00,节假日休息

关注微信