第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、测试

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

 

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2023年11月10日
下一篇 2023年11月10日

相关推荐