【语音月】语音识别攻略
才能我浪费99 发布于2019-11 浏览:3024 回复:13
2
收藏

1.功能描述:

将60秒内的语音快速识别为文字,适用于手机语音输入、语音搜索、人机对话等语音交互场景

2.平台接入

具体接入方式比较简单,可以参考我的另一个帖子,这里就不重复了:
http://ai.baidu.com/forum/topic/show/943327

3.调用攻略(Python3)及评测

3.1首先认证授权:

在开始调用任何API之前需要先进行认证授权,具体的说明请参考:

http://ai.baidu.com/docs#/Auth/top

具体Python3代码如下:

# -*- coding: utf-8 -*-
#!/usr/bin/env python

import urllib
import base64
import json
#client_id 为官网获取的AK, client_secret 为官网获取的SK
client_id =【百度云应用的AK】
client_secret =【百度云应用的SK】

#获取token
def get_token():
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + client_id + '&client_secret=' + client_secret
request = urllib.request.Request(host)
request.add_header('Content-Type', 'application/json; charset=UTF-8')
response = urllib.request.urlopen(request)
token_content = response.read()
#print (token_content)
if token_content:
token_info = json.loads(token_content)
token_key = token_info['access_token']
return token_key

3.2百度语音识别分析接口调用:

详细说明请参考:https://ai.baidu.com/docs#/ASR-API-PRO/top

说明的比较清晰,这里就不重复了。

大家需要注意的是:
格式支持:pcm(不压缩)、wav(不压缩,pcm编码)、amr(压缩格式)、m4a(AAC编码);固定16k 采样率;
系统支持语言种类 普通话

 

Python3调用代码如下:

# 只支持 pcm/wav/amr 格式,极速版额外支持m4a 格式
# 输入参数需要识别的文件
def asr(AUDIO_FILE):
    # 文件格式
    FORMAT = AUDIO_FILE[-3:];  # 文件后缀只支持 pcm/wav/amr 格式,极速版额外支持m4a 格式
    print(FORMAT)
    CUID = '123456PYTHON';
    # 采样率
    RATE = 16000;  # 固定值    
    # 普通版
    DEV_PID = 1537;  # 1537 表示识别普通话,使用输入法模型。1536表示识别普通话,使用搜索模型。根据文档填写PID,选择语言及识别模型
    ASR_URL = 'http://vop.baidu.com/server_api'
    
    token = get_token()

    speech_data = []
    with open(AUDIO_FILE, 'rb') as speech_file:
        speech_data = speech_file.read()
    length = len(speech_data)
    if length == 0:
        print('file %s length read 0 bytes' % AUDIO_FILE)

    params = {'cuid': CUID, 'token': token, 'dev_pid': DEV_PID}
    #测试自训练平台需要打开以下信息
    #params = {'cuid': CUID, 'token': token, 'dev_pid': DEV_PID, 'lm_id' : LM_ID}
    params_query = urlencode(params);

    headers = {
        'Content-Type': 'audio/' + FORMAT + '; rate=' + str(RATE),
        'Content-Length': length
    }

    url = ASR_URL + "?" + params_query
    print("url is", url);
    print("header is", headers)
    # print post_data
    req = Request(ASR_URL + "?" + params_query, speech_data, headers)
    try:
        begin = timer()
        f = urlopen(req)
        result_str = f.read()
        print("Request time cost %f" % (timer() - begin))
    except  URLError as err:
        print('asr http response http code : ' + str(err.code))
        result_str = err.read()


    result_str = str(result_str, 'utf-8')
    print(result_str)
    with open("result.txt", "w") as of:
        of.write(result_str)

asr('../voc/16k.wav')


4.功能评测和建议
测试下来,整体识别效果不错。百度语音识别的很准确,速度也很快,用起来非常的方便。可以应用于
语音输入
摆脱按键操作,通过语音识别直接输入文字,快速返回识别结果,可应用于游戏文字输入、社交聊天、语音指令等多个场景,提高输入效率及体验
语音搜索
搜索内容直接以语音的方式输入,响应速度更快,适用于音乐、电影、小说等内容搜索场景,让搜索内容输入更加便捷,高效
人机对话
通过极速API接口,将语音识别为文字,毫秒级响应,可用于聊天机器人、故事机等近场语音识别环境,让人机对话更加流畅自然

收藏
点赞
2
个赞
共13条回复 最后由用户已被禁言回复于2022-04
#14worddict回复于2020-07

大佬的文章真多

0
#13大手拉小手0123回复于2020-06
#4 才能我浪费99回复
的确是非常强大

期待你的下一个大作

0
#12才能我浪费99回复于2020-06
#11 fiyen123_回复
很实用的应用,赞!

谢谢

0
#11fiyen123_回复于2020-05

很实用的应用,赞!

0
#10才能我浪费99回复于2020-05
#8 worddict回复
不过也可能是脑机直接交互

这个要看未来发展了

0
#9进985回复于2020-05

有没有自己搭建的语音模型?

0
#8worddict回复于2020-01
#6 才能我浪费99回复
以后人机交互估计都要语音来做了

不过也可能是脑机直接交互

0
#7worddict回复于2020-01
#6 才能我浪费99回复
以后人机交互估计都要语音来做了

语音的确发展很快

0
#6才能我浪费99回复于2020-01

以后人机交互估计都要语音来做了

0
#5才能我浪费99回复于2019-12
#3 worddict回复
大佬写的很详细啊

方便大家使用啊

0
#4才能我浪费99回复于2019-12
#2 大手拉小手0123回复
很不错呀,学习一下

的确是非常强大

0
#3worddict回复于2019-12

大佬写的很详细啊

0
#2大手拉小手0123回复于2019-11

很不错呀,学习一下

0
TOP
切换版块