百度API语音识别

今天开补迟到的工作室大作业…
主要介绍百度API调用的方法,以语音识别为例

1)前往AI开放平台创建应用

首先,先进入百度API开发的网址https://ai.baidu.com/
进入后点击右上角控制台,注册自己的账号
在这里插入图片描述
注册完毕后在产品服务—人工智能中找到自己需要的API,我们以语音识别为例,点击语音技术
在这里插入图片描述
之后点击创建应用,进行必要的信息填写
在这里插入图片描述
创建完毕后百度会给你一个应用列表,使用这里的AppID,API Key及Secret Key便可以进行API的调用啦!调用的注意事项及具体操作在后文进行介绍
在这里插入图片描述

2)代码及注意事项

我们首先要导入baidu-aip这个包
pip install baidu-aip

对接口进行请求

from aip import AipSpeech
# 读取文件
def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
        return fp.read()
# 识别本地文件
client.asr(get_file_content('audio.pcm'), 'pcm', 16000, {
    'dev_pid': 1537,
})

这里根据情况需要调整参数,如文件名,文件类型(pcm wav或amr);rate采样率,固定为16000或8000;dev_pid参数对应下表
在这里插入图片描述
一定要注意调用时音频有固定的格式,文件类型必须为pcm wav或amr,16位深,时长30s内,16000或8000的采样率,单声道,否则会报错或识别不准确

调用接口

    client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
    result = client.asr(get_file_content('test.wav'), 'wav',16000,{'dev_pid': 1537,})

这里的APP_ID, API_KEY, SECRET_KEY分别对应上文你自己的AppID,API Key及Secret Key

3)python调用API

1.识别本地文件

识别本地文件时使用上述代码基本就可以了,识别不准确一般是由于文件格式未完全按照上述要求所致

    print(result)

我们看看result的具体输出结果
在这里插入图片描述
返回值是一个字典,result中的值即为识别出的结果

2.录音识别

本地文件由于文件格式蛮难改的,导致结果不准确,我们来试一下录音识别,
在网上嫖了个录音的代码,将参数改成我们需要的参数
直接将整个源码附下

import wave
import pyaudio
from aip import AipSpeech
APP_ID = ''
API_KEY = ''
SECRET_KEY = ''
CHUNK = 1024 
FORMAT = pyaudio.paInt16 # 16位深
CHANNELS = 1 #1是单声道,2是双声道。
RATE = 16000 # 采样率,调用API一般为8000或16000
RECORD_SECONDS = 10 # 录制时间10s

def save_wave_file(pa, filepath, data):
    wf = wave.open(filepath, 'wb')
    wf.setnchannels(CHANNELS)
    wf.setsampwidth(pa.get_sample_size(FORMAT))
    wf.setframerate(RATE)
    wf.writeframes(b"".join(data))
    wf.close()

def get_audio(filepath):
    isstart = input("是否开始录音?(0为退出 1为开始)")
    if isstart == "1":
        pa = pyaudio.PyAudio()
        stream = pa.open(format=FORMAT,
                         channels=CHANNELS,
                         rate=RATE,
                         input=True,
                         frames_per_buffer=CHUNK)
        print("*" * 10, "开始录音:请在10秒内输入语音")

        frames = []  
        for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):  
            data = stream.read(CHUNK)  # 读取chunk个字节 保存到data中
            frames.append(data)  # 向列表frames中添加数据data
        print("*" * 10, "录音结束\n")
        stream.stop_stream()
        stream.close()  # 停止数据流
        pa.terminate()  # 关闭PyAudio

        #写入录音文件
        save_wave_file(pa, filepath, frames)
    elif isstart == "0":
        exit()
    else:
        print("无效输入,请重新选择")
        get_audio(filepath)

def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
        return fp.read()

if __name__ == '__main__':
    filepath = 'test.wav'
    get_audio(filepath)
    print('over!!!')
    client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
    result = client.asr(get_file_content('audio3.wav'), 'wav',16000,{'dev_pid': 1537,})
    print(result)

嗯嗯,结果还是满准确的

4)报错信息

调用失败报错时会产生一些信息,可对应下表进行查错
在这里插入图片描述
参考文档

  • 6
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值