代码下载:https://download.csdn.net/download/GreatXiang888/12028057

一

首先上 百度AI平台 申请账号,和开通语音识别模块。
这个比较简单,不细说。
你可以得到三个东西:

AppID
API Key
Secret Key

并新建一个my_password.txt,按上述格式粘贴进去。(防止把密码明文直接写到代码中)

二

打开cmd命令行窗口,输入 pip install baidu-aip ,安装相关依赖。

三

新建ai.py,粘贴以下代码:
将待转换音频复制到相同目录下,如16k.pcm

from aip import AipSpeech

def getPassword(path="my_password.txt"):
    with open(path, "r", encoding="utf-8") as f:
        APP_ID = f.readline().strip()
        API_KEY = f.readline().strip()
        SECRET_KEY = f.readline().strip()
    return APP_ID, API_KEY, SECRET_KEY

# 读取文件
def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
        return fp.read()

def audio2Text(audio_path, text_save_path="result.txt"):
    APP_ID, API_KEY, SECRET_KEY = getPassword()
    client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

    # 识别本地文件
    try:
        print("正在转换中,请等待...")
        res = client.asr(get_file_content(audio_path), 'pcm', 16000, {
            'dev_pid': 1537,
        })
        print("转换完成:")
        print(res)
    except Exception as e:
        print("出错了!")
        print(e)

if __name__ == "__main__":
    audio2Text("16k.pcm")

结果:
在这里插入图片描述
可以看到result对应的value值就是转换的内容。

高级内容

1,值得注意的是,因为语音识别模型采用类似seq2seq的神经网络,故音频长度都限制在60s内。见 将音频分割为60s内的短文件[Cygwin; speech-vad-demo] https://blog.csdn.net/GreatXiang888/article/details/103495082
2,另外,m4a格式音频(录音/微信语音)不支持普通识别,需要用付费接口。但可以自己转换成其他格式。
见 硬核音频格式转换[ffmpeg] https://blog.csdn.net/GreatXiang888/article/details/103496717

悲伤

遗憾的是,我做了上面的一切,发现还是不能达到想要的效果。
具体为:
1,从手机中获取录音文件,1小时左右,m4a格式,想转换成文字版。
2,因为m4a格式不能调接口,故用ffmpeg 转换成wav格式。
3,因为音频不能太长,故用Cygwin; speech-vad-demo 分割60s以内文件。
4,以上几步都成功了,用实例文件转换也成功了,但我自己切分的文件却失败了。

如果有哪位知道原因,请赐教。
(我再想想其他办法)
原本以为很简单的一个语音识别,却有这么多坑呐。

资料

AI开放平台 http://ai.baidu.com/
语音识别导览 http://ai.baidu.com/ai-doc/SPEECH/Ek39uxgre

更多推荐