赞
踩
一、大致流程
1)申请科大讯飞账号(https://passport.xfyun.cn/register)
2)创建应用(应用平台选择WebAPI)
3)查看开发文档
4)根据开发文档和示例代码进行调试
二、申请科大讯飞账号
首先我们先去科大讯飞开放平台注册一个账号:https://passport.xfyun.cn/register
三、创建应用
我们再去官网(https://www.xfyun.cn/?ch=bdpp)的产品服务中选择语音听写服务进入后点击web API抢先体验
接下来根据需求创建一个应用
创建完应用后在我的应用中就可以看见我们刚刚创建的项目了,我们点击刚创建的应用旁边的开发文档
四、查看开发文档
我们主要看两个文档:接口描述 + 语音听写
1)接口描述
一个是授权认证部分,这里主要需要两个个数据:appid、paikey(这两个数据可以到我们刚刚创建的应用处查询)
我们拿到这两个数据后主要是为了在Http Re'quest Header中配置以下参数:
参数 | 格式 | 说明 | 必须 |
---|---|---|---|
X-Appid | string | 讯飞开放平台注册申请应用的应用ID(appid) | 是 |
X-CurTime | string | 当前UTC时间戳,从1970年1月1日0点0 分0 秒开始到现在的秒数 | 是 |
X-Param | string | 相关参数JSON串经Base64编码后的字符串,见各接口详细说明 | 是 |
X-CheckSum | string | 令牌,计算方法:MD5(apiKey + curTime + param),三个值拼接的字符串,进行MD5哈希计算(32位小写),其中apiKey由讯飞提供,调用方管理。 | 是 |
注:
2)语音听写文档
在文档开头提供了另一个参数:接口地址(http://api.xfyun.cn/v1/service/v1/iat)
然后我们可以根据文档末的python代码写的调用实例来进行调用了
四、根据开发文档进行调试
说明:将脚本中 AUDIO_PATH
, API_KEY
, APPID
, 换成相应的音频路径,讯飞开放平台提供的 apiKey,讯飞开放平台应用的 appid 即可,运行脚本可打印相应结果。
这里需要注意一点的是:文档中采用python2.7写的,如果你想使用python3的话就看我下面的代码
- #!/usr/bin/python
- # -*- coding: UTF-8 -*-
- #import urllib2
- import time
- import urllib
- import json
- import hashlib
- import base64
- import urllib.request
- import urllib.parse
-
-
- def main():
- f = open("你需要识别的音频的文件地址", 'rb') #rb表示二进制格式只读打开文件
- file_content = f.read()
- # file_content 是二进制内容,bytes类型
- # 由于Python的字符串类型是str,在内存中以Unicode表示,一个字符对应若干个字节。
- # 如果要在网络上传输,或者保存到磁盘上,就需要把str变为以字节为单位的bytes
- # 以Unicode表示的str通过encode()方法可以编码为指定的bytes
- base64_audio = base64.b64encode(file_content) #base64.b64encode()参数是bytes类型,返回也是bytes类型
- body = urllib.parse.urlencode({'audio': base64_audio})
-
- url = 'http://api.xfyun.cn/v1/service/v1/iat'
- api_key = '你的apikey'
- param = {"engine_type": "sms16k", "aue": "raw"}
-
- x_appid = '你的appid'
- x_param = base64.b64encode(json.dumps(param).replace(' ', '').encode('utf-8')) #改('''')
- # 这是3.x的用法,因为3.x中字符都为unicode编码,而b64encode函数的参数为byte类型,
- # 所以必须先转码为utf-8的bytes
- x_param = str(x_param, 'utf-8')
-
- x_time = int(int(round(time.time() * 1000)) / 1000)
- x_checksum = hashlib.md5((api_key + str(x_time) + x_param).encode('utf-8')).hexdigest() #改
- x_header = {'X-Appid': x_appid,
- 'X-CurTime': x_time,
- 'X-Param': x_param,
- 'X-CheckSum': x_checksum}
- # 不要忘记url = ??, data = ??, headers = ??, method = ?? 中的“ = ”,这是python3
- req = urllib.request.Request(url = url, data = body.encode('utf-8'), headers = x_header, method = 'POST')
- result = urllib.request.urlopen(req)
- result = result.read().decode('utf-8')
- print(result)
- return
-
- if __name__ == '__main__':
- main()
只要将音频地址、appid、apikey分别替换对应的位置就行了。还要记得去你的应用处给添加你的ip白名单:只要复制你的ip地址在ip白名单中就可以了。
最后需要注意的是音频的格式,科大讯飞的语音听写对音频格式有要求,经过测试我发现打开win10自带的录音随便录一段是识别不出来的,其要求的音频格式如下:
音频参数 | 数值 |
---|---|
音频长度(Input Length) | ≤60s |
采样率(Sampling Rate) | 支持8KHz和16KHz |
采样精度(Bit Depth) | 16bits |
声道(Channel) | 单声道 |
语音起点(begin of the speech) | 小于参数vad_bos |
音频终点(end of the speech) | 小于参数vad_eos |
最后这里我提供一个我录音的方法:
1)首先去goldwave官网下载goldwave应用
2)然后点击new,出现录音的格式,修改如下即可
然后再右侧点击录音,录完后保存到相应的目录,在你的代码中替换你刚录制的这个音频的地址就可以了
最后识别成功返回如下,就代表成功了(图中data即我测试的录音内容):
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。