第14章-Python-人工智能-语言识别-调用百度语音识别

这篇具有很好参考价值的文章主要介绍了第14章-Python-人工智能-语言识别-调用百度语音识别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        百度语音识别API是可以免费试用的,通过百度账号登录到百度智能云,在语音技术页面创建的应用,生成一个语音识别的应用,这个应用会给你一个APIKey和一个Secret Key,如图14.1所示。

python调用百度语音api,人工智能,语音识别

 我们在自己的程序中用 API Key 和 Secret Key 这两个值获取 Koken,然后再通过 Token 调用语音识别接口,因此需要经过两次URL请求才能实现语音识别功能,第一次请求获得 Token,第二次请求调用语音识别功能。

1、创建语音操作类(create_audio.py)

为了使得音频操作代码可以通用和复用,新建一个文件create_audio.py,在文件中生成一个音频操作类TestAudio,这个类实现对音频参数的初始化,录音和保存音频文件等功能。样例代码如下所示。

# 调用百度语音识别

import wave
import pyaudio
class TestAudio:
    # 初始化
    def __init__(self,fname):
        self.chunk=2048
        self.samepling_rate=16000
        self.sampwidth=2
        self.channels=1
        self.record_time=6
        self.filename=fname

    # 把音频保存到文件,这里data为列表类型
    def save_file(self,data):
        wf=wave.open(self.filename,'wb')
        wf.setnchannels(self.channels)
        wf.setsampwidth(self.sampwidth)
        wf.setframerate(self.samepling_rate)
        wf.writeframes(b"".join(data))
        wf.close()

    # 进行录音的函数
    def record(self):
        pa=pyaudio.PyAudio()
        stream=pa.open(format=pyaudio.paInt16,channels=self.channels,rate=self.samepling_rate,input=True,frames_per_buffer=self.chunk)
        print("开始录音,请讲话。。。")
        mybuf=[]
        for i in range(0,int(self.samepling_rate/self.chunk*self.record_time)):
            data =stream.read(self.chunk)
            mybuf.append(data)
        stream.stop_stream()
        stream.close()
        pa.terminate()
        print("录音结束")
        self.save_file(mybuf)

if __name__=="__main__":
    test=TestAudio('test.wav')
    test.record()

2、语音识别函数(主函数)

注意:更改APIKey 和 SecretKey 值

# 调用百度语音识别
import requests
import base64

import CreateTestAudio
vhttp="https:// "
vurl="openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id=%s&client_secret=%s"
APIKey="xx"
SecretKey="xxx"
base_url=vhttp+vurl%(APIKey,SecretKey)

# 获取token
def getToken(base_url):
    res=requests.post(base_url)
    return res.json()['access_token']

#
def SpeechTOText(speech_data,token,dev_pid=1537):
    FILETYPE='wav'
    RATE=16000
    CHANNEL=1
    CUID='12345678PYTHON12345678'
    SPEECH=base64.b64decode(speech_data).decode('utf-8')
    data={'format':FILETYPE,'rate':RATE,'channel':CHANNEL,'cuid':CUID,'len':len(speech_data),'speech':SPEECH,'token':token,'dev_pid':dev_pid}
    # 拼接URL地址
    url=vhttp+'vop.baidu.com/server_api'
    headers={'Content-Type':'application/json'}
    print('正在识别。。。')
    r=requests.post(url,json=data,headers=headers)
    Result=r.json()
    if 'result' in Result:
        return Result['result'][0]
    else:
        return Result

def get_audio(file):
    with open(file,'rb') as f:
        data=f.read()
    return data

#主函数
if __name__=='__main__':
    message=input("按任意键开始录入")
    test =CreateTestAudio('test.wav')
    test.record()
    TOKEN =getToken(base_url)
    speech =get_audio('test.wav')
    result=SpeechTOText(speech,TOKEN,1537)
    print(result)

2、测试

在命令行终端启动程序,根据提示说一段话,等待程序执行,程序返回这段话的内容,说明语音识别程序运行成功,如下所示。

python调用百度语音api,人工智能,语音识别

 文章来源地址https://www.toymoban.com/news/detail-716276.html

到了这里,关于第14章-Python-人工智能-语言识别-调用百度语音识别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包