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

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

 我们在自己的程序中用 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、测试

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

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lijun_xiao2009

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值