speechrecognition

语音转文字

python 中有一个speechrecognition包,集合了几个语音识别库的接口,非常实用,这里就给大家介绍一下它的模块、安装、调用。

模块接口

speechrecognition 的接口和核心识别库如下
speechrecognition_第1张图片

能脱网工作的只有recognize_sphinx(),其他的不止需要联网,还需要注册获取api和权限。所以这里我用CMU的recognize_sphinx()来实现语音识别。

安装

1.pip install speechrecognition
2. pip install pocketsphinx
3. 可能缺少pocketsphinx的wheel ,这可以去https://www.lfd.uci.edu/~gohlke/pythonlibs/下载对应的wheel文件安装,再执行 pip install pocketsphinx

调用

安装完成后创建test.py

import speech_recognition as sr

def wav2txt(wavfilepath):
r = sr.Recognizer()
sudio = “”
with sr.AudioFile(wavfilepath) as src:
sudio = r.record(src)
print(r.recognize_sphinx(sudio))

if name == “main”:
wav2txt("\WEB\static\output.wav")

我的wav文件是一段英语听力
在这里插入图片描述

补充

recognize_sphinx()不能转化mp3格式的音频,就有些鸡肋了。我们可以借助ffmpeg和ffmpy将mp3转化为wav,

ffmpeg 安装

sudo apt-get install ffmpeg

ffmpy 安装

pip install ffmpy

更改test.py

import speech_recognition as sr
import ffmpy



def wav2txt(filepath):
    endfix=filepath.splite(".")[-1] 
    if endfix != "wav":
	    t=filepath.splite(".")
	    t[-1]="wav"
        wavfilepath=".".join(t)
        ff = ffmpy.FFmpeg( inputs={filepath: None},outputs={wavfilepath: None} )
        ff.run()

    r = sr.Recognizer()
    sudio = ""
    with sr.AudioFile(wavfilepath) as src:
        sudio = r.record(src)
    print(r.recognize_sphinx(sudio))
    
    if __name__ == "__main__":
        wav2txt("\WEB\static\output.wav")

speechrecognition_第2张图片

解析普通话

打开pocketsphinx的安装位置,可以在data文件夹下找到en-US文件夹,说明只能翻译英语。那普通话怎么办??
翻遍百度,发现pocketsphinx安装中文包的方法已经过时了,这里详细说一遍安装过程。

进入 https://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Models/Mandarin/
下载 cmusphinx-zh-cn-5.2.tar.gz
解压 后目录结构

.
cmusphinx-zh-cn-5.2
├── README
├── zh_cn.cd_cont_5000
│ ├── feat.params
│ ├── feature_transform
│ ├── mdef
│ ├── means
│ ├── mixture_weights
│ ├── noisedict
│ ├── transition_matrices
│ └── variances
├── zh_cn.dic
└── zh_cn.lm.bin

重命名
cmusphinx-zh-cn-5.2 》》 zh-CN
cmusphinx-zh-cn-5.2 》》 acoustic-model
zh_cn.lm.bin 》》 language-model.lm.bin
zh_cn.dic 》》 pronounciation-dictionary.dict

重命名后的目录结构

zh-CN
├── acoustic-model
│ ├── feat.params
│ ├── feature_transform
│ ├── mdef
│ ├── means
│ ├── mixture_weights
│ ├── noisedict
│ ├── transition_matrices
│ └── variances
├── language-model.lm.bin
├── pronounciation-dictionary.dict
└── README

找到pip 安装speech_recognition的路径下的pocketsphinx-data文件夹
我的路径是~/Envs/pydev/lib/python3.6/site-packages/speech_recognition/pocketsphinx-data,
找到后把zh-CN复制过来,和en-US同级

测试

把 tests.py 中修改为recoginze.sphinx(wavfilepath,language=“zh-CN”)在这里插入图片描述
英译中就完成了(狗头)

你可能感兴趣的:(speechrecognition)