网上找到一些例子,有一些成熟的模型,可以将语音转成文字。例如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。
在安装sphinx之前需要安装一些软件包
之后可以在相关网站上下载sphinxbase安装包,当然也可以直接clone github上的包
下载完之后进行解压
修改文件名
现在我们应该运行来生成和其他一些脚本以备后续的编译和安装。
下面开始源码安装
执行完以上命令之后,如果没有出现什么报错信息,就说明已经安装成功了,但是此时你的命令并不可以生效,在运行命令时会出现这样的错误。
还需要让系统加载目录,为了让系统每次启动时都可以自动加载,可以修改系统配置文件
这时候,就可以通过命令将模型DMP文件转成bin文件
上面这行代码是将中文的模型DMP文件转成了bin文件。在安装完sphinx后默认只支持英文,在存放模型的路径下只有一个文件名为,所以这里需要添加一个处理中文的模型,相关文件可以在这个网址中下载。
在python中使用sphinx
想要在python中使用sphinx的话,需要安装一些依赖包。
这时候,就可以启动ipython来试试效果了。
可以看出,这个语音识别器已经生效了。但是我说的是“今天天气好热啊”。
看来sphinx中的模型并非很准呐,而且这只是一个短句子。我们接下来看看长句子的效果,我录了村上春树的《当我谈跑步时我谈些什么》中的一段内容。
呃,看到结果,我觉得可以用一个来形容:差劲。两个字来形容:太差劲!
当然,这个模型只是我直接从网上下载下来的。训练它时所用到的语料不会那么齐全,所以在测试时难免会出现不准确的情况。要想让模型更加准确,需要自己在利用sphnix继续训练模型。
相关办法在其官网上可以找到,也有相应的教程。感兴趣的朋友可以自行研究。
文中提到的教程网址是https://cmusphinx.github.io/wiki/tutorialtuning/
Google API
利用google API来处理语音识别则相当准确,不过需要连接google,以下是我在VPS中执行的一段代码,可以看出,它将我的录音精准地翻译成了文字。
但是如果录音文件较大的话,会运行时间很长,并且会返回一个超时的错误,这很是让我苦恼。
不过幸运的是,speech_recognition支持将语音文件进行截取处理。例如,我可以只处理语音文件中的前15秒钟的内容。
从上面的结果看,简直比sphnix处理的效果好太多了。
通过看帮助文档发现speech_recognition不仅可以截取前面的录音,还可以截取中间的。
例如我想处理5秒至20秒之间的内容。
领取专属 10元无门槛券
私享最新 技术干货