首页 > 编程语言 >Python语音识别

Python语音识别

时间:2023-01-24 18:44:26浏览次数:79  
标签:语音 Python text args token add client https 识别

Python语音识别

需求:用代码将录音转成文字,常规普通话,不是播音员那种标准发音。

结论:无论在线或是离线,用代码调用的效果都不太理想。

1、离线模式

参考:https://blog.csdn.net/qq_41891021/article/details/90737715

pip install SpeechRecognition -i https://mirror.baidu.com/pypi/simple
pip install PocketSphinx -i https://mirror.baidu.com/pypi/simple
pip install C:\AH_TOOLS\AH_PythonCode\Detect_Silence\sound2txt\pocketsphinx-0.1.15-cp38-cp38-win_amd64.whl
import speech_recognition as sr

print(sr.__version__)

r = sr.Recognizer()
with sr.AudioFile(r"D:\AH_DATA\FFmpegTest\10.wav") as source:
    audio = r.record(source)
print(type(audio))
output = r.recognize_sphinx(audio, language='zh-cn')
print(output)
with open(r'C:\AH_TOOLS\AH_PythonCode\Detect_Silence\sound2Txt.txt', 'w') as f:
    f.write(output)

2、在线模式

1、网上很多推荐百度的语音识别——先不说免不免费,要用这个必须要下载百度APP——直接PASS

2、标贝科技——每天可调用500次,还可以,但是第二天就会接到推销电话

参考:https://www.bbsmax.com/A/xl56Y3k1Jr/

以下均为标贝科技API的调用方法


网址:https://ai.data-baker.com/#/index

控制台:https://ai.data-baker.com/#/asr/short

key在【授权管理】里

Python代码:直接复制这个页面最后的完整代码,改都不用改,直接cmd调用即可测试:

https://www.bbsmax.com/A/xl56Y3k1Jr/

import requests
import json
import argparse


# 获取access_token用于鉴权
def get_access_token(client_secret, client_id):
    grant_type = "client_credentials"
    url = "https://openapi.data-baker.com/oauth/2.0/token?grant_type={}&client_secret={}&client_id={}" \
        .format(grant_type, client_secret, client_id)

    try:
        response = requests.post(url)
        response.raise_for_status()
    except Exception as e:
        print(e)
        return
    else:
        access_token = json.loads(response.text).get('access_token')

    return access_token


# 获取识别后文本
def get_text(file, headers):
    url = "https://asr.data-baker.com/asr/api?"
    response = requests.post(url, data=file, headers=headers)
    code = json.loads(response.text).get("code")
    text = json.loads(response.text).get("text")
    if code != 20000:
        print(response.text)

    return text


# 获取命令行输入参数
def get_args():
    parser = argparse.ArgumentParser(description='ASR')
    parser.add_argument('-client_secret', type=str, required=True)
    parser.add_argument('-client_id', type=str, required=True)
    parser.add_argument('-file_path', type=str, required=True)
    parser.add_argument('--audio_format', type=str, default='wav')
    parser.add_argument('--sample_rate', type=str, default='16000')
    parser.add_argument('--add_pct', type=str, default='true')
    args = parser.parse_args()

    return args


if __name__ == '__main__':
    args = get_args()

    # 获取access_token
    client_secret = args.client_secret
    client_id = args.client_id
    access_token = get_access_token(client_secret, client_id)

    # 读取音频文件
    with open(args.file_path, 'rb') as f:
        file = f.read()

    # 填写Header信息
    audio_format = args.audio_format
    sample_rate = args.sample_rate
    add_pct = args.add_pct
    headers = {'access_token': access_token, 'audio_format': audio_format, 'sample_rate': sample_rate,
               'add_pct': add_pct}
    text = get_text(file, headers)
    print(text)

但是:

音频采样率必须是16000,否则都是“嗯嗯嗯”

制造wav的代码如下

ffmpeg -i "D:\AH_DATA\FFmpegTest\000.mp4" ^
 -ar 16000 -f wav ^
 -y "D:\AH_DATA\FFmpegTest\000.wav"

python调用:

python C:\AH_TOOLS\AH_PythonCode\Detect_Silence\sound2txt.py ^
-client_secret=XXXXXXXX ^
-client_id=YYYYYYYY ^
-file_path=D:\AH_DATA\FFmpegTest\000.wav

但是:

  • 速度比较慢。

  • 识别精度非常低,还不如离线识别。


长文本测试:

需要安装websocket
X pip install websockets -i https://pypi.tuna.tsinghua.edu.cn/simple
X pip3 install --user websocket-server -i https://pypi.tuna.tsinghua.edu.cn/simple

pip install websocket -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install websocket-client-py3 -i https://pypi.tuna.tsinghua.edu.cn/simple
#长文本识别调用测试
python F:\test\real_time_audio_recognition.py ^
-client_secret=e2a65382b666412bb11616c0b4b65510 ^
-client_id=68acf98e2f5545079e740a6f5b697353 ^
-file_path="F:\test\test.wav" ^ 
--audio_format=wav --sample_rate=16000

在网页端上传,识别结果不错

但是用python上传同样的文件,结果全是“嗯嗯啊啊”

标签:语音,Python,text,args,token,add,client,https,识别
From: https://www.cnblogs.com/tigerlion/p/17066251.html

相关文章

  • python进程绑定CPU的一些Demo
    从https://www.cnblogs.com/devilmaycry812839668/p/17066212.html中知道如何对python进程设置CPU绑定,本文对此进行一些延伸,给出一些例子:代码1:importosfrommultiproce......
  • 百度联想:用Python抓取百度关键字联想信息
    Python抓取百度关键字联想信息参考:https://www.jianshu.com/p/dc1ec2456331?appinstall=0MAC上运行经常得到乱码,只有偶尔非乱码;该方法其实没什么实用价值。#https://ww......
  • 【转载】 python进程绑定CPU
    版权声明:本文为CSDN博主「人间再无张居正」的原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/u013887652/article/deta......
  • Python入门之选择语句
    """选择语句"""sex=input("请输入性别:")ifsex=="男":print("您好,先生!")elifsex=="女":print("您好,女士!")else:print("性别未知!")print("后续逻辑......
  • Python - XSS-href
    参考资料:https://owasp-skf.gitbook.io/asvs-write-ups/cross-site-scripting-href-xss-href/kbid-3-cross-site-scripting-href$sudodockerpullblabla1337/owasp-sk......
  • Python3配合Django来调用钉钉在线api实时监测员工考勤打卡情况
    基本上钉钉(dingding)作为一个远程办公平台来用的话,虽然差强人意,但是奈何市面上没有啥更好的选择,矬子里拔将军,也还是可以凑合用的,不过远程办公有个问题,就是每天需要检查员......
  • python入门学习笔记002--趣学Python算法--第2例兔子产子
    例题如下:有一对兔子,从出生后的第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子,假设所有的兔子都不死,问30个月内每个月的兔子总对数为多少?  个......
  • python入门学习笔记001--趣学Python算法--第一例抓交通肇事犯
    本人是python小白初学者,过年期间实在闲的无聊,偶尔翻到《趣学Python算法100例》这本书,浅浅阅读后感觉写的很不错。本系列案例均取自该书,只分享题目和自己的编的代码,问题分析......
  • python-opencv 实现人脸识别功能
    使用python-opencv实现人脸识别功能。思路如下:1.使用opencv库打开摄像头。2.加载opencv中自带的人脸特征识别分类器3.输出结果代码如下:importcv2importmatplotl......
  • python怎么对对边录制的mp4文件取最后一帧图信息
    提问: python怎么对对边录制产生的mp4文件取最后一帧图信息,这个录制的mp4文件还在录制中会不断增加文件体积,我要做个边录制边取最后一帧数进行识别物品类似功能,并且要求取......