一、大致流程

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由讯飞提供,调用方管理。

注:

  • apiKey:接口密钥,由讯飞开放平台提供,调用方注意保管,如泄露,可联系讯飞技术人员重置;
  • checkSum 有效期:出于安全性考虑,每个 checkSum 的有效期为 5 分钟(用 curTime 计算),同时 curTime 要与标准时间同步,否则,时间相差太大,服务端会直接认为 curTime 无效;
  • BASE64 编码采用 MIME 格式,字符包括大小写字母各26个,加上10个数字,和加号 + ,斜杠 / ,一共64个字符。

2)语音听写文档

在文档开头提供了另一个参数:接口地址(http://api.xfyun.cn/v1/service/v1/iat)

然后我们可以根据文档末的python代码写的调用实例来进行调用了

四、根据开发文档进行调试

说明:将脚本中 AUDIO_PATHAPI_KEYAPPID, 换成相应的音频路径,讯飞开放平台提供的 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.parsedef main():f = open("你需要识别的音频的文件地址", 'rb')  #rb表示二进制格式只读打开文件file_content = f.read()# file_content 是二进制内容,bytes类型# 由于Python的字符串类型是str,在内存中以Unicode表示,一个字符对应若干个字节。# 如果要在网络上传输,或者保存到磁盘上,就需要把str变为以字节为单位的bytes# 以Unicode表示的str通过encode()方法可以编码为指定的bytesbase64_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的bytesx_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 = ?? 中的“ = ”,这是python3req = 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)returnif __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即我测试的录音内容):

python实现调用科大讯飞语音听写(将音频识别成文字输出)相关推荐

  1. 909422229_科大讯飞语音听写Java web API接口

    技术交流群:958923746,有学习视频,文档等. 1. 接口说明 语音听写接口可将语音(≤60秒)转换成对应的文字信息.本接口适用于将音频一次性发送至云端,块式传输. 2. 接口地址 POST h ...

  2. android集成科大讯飞语音听写和语音合成

    android集成科大讯飞语音听写和语音合成 集成科大讯飞语音听写和语音合成,语音听写只是语音识别下面的一部分,别弄混淆了,由于科大讯飞暂未开放gradle引包方式,所以目前集成还是手动引包.我的流程 ...

  3. 接入科大讯飞语音听写,增加语音动画,类似京东语音搜索功能

    前言:小白第一次接入科大讯飞语音听写,接入还是比较简单的,先看效果图无UI界面 Demo地址拿去 效果图有两部分,一是接入科大讯飞语音听写功能,可以实现将语音转换成文字. 二是看到的语音音量动画效果, ...

  4. 集成科大讯飞语音听写功能

    一.准备工作 1.创建应用,并获取appId: 2.下载科大讯飞语音听写功能的jar包和so包(http://www.xfyun.cn/sdk/dispatcher): 3.将jar包添加到libs中 ...

  5. 科大讯飞语音无限制录音、识别功能的实现:Android studio(一)

    最近想要做一款语音听写APP,在网上搜索关于如何使用科大讯飞语音的Demo少之又少,又或者是只是单纯的按照文档来实现简单的语音听写,远远不能满足需求,看了几天的文档和自己搜索的一些资料,还有这几天中遇 ...

  6. ROS 科大讯飞语音(三)识别篇

    ROS 科大讯飞语音(三)识别篇 环境准备 安装声卡驱动库 sudo apt-get install libasound2-dev 将demo里面的call.bnf拷贝到/Robot/voice/ca ...

  7. python百度语音实时识别成文字

    python 实现百度AI语音实时识别成文字 百度AI接口https://console.bce.baidu.com/ai/?_=1559654571070&fromai=1#/ai/spee ...

  8. 记一次失败的《将视频中的音频转换成文字》的经历

    视频中的音频如何转换成文字 前言 前段时间我打算做B站林超的视频笔记,突然想到我是否可以用工具将视频的音频转换成文字,或者将视频中的字幕用OCR转化为文字.这样我就不要干巴巴敲内容了.不过因为林超的视 ...

  9. 这几个步骤教你如何音频翻译成文字

    随着社会的节奏加快,大部分人已经没办法闲下来看书了.于是网络出现了很多有声电子书,走到哪就听到哪,一边听还可以一边干活,好处当然是方便,坏处就是遇到人声读的太快,有几句话听不清楚,自己只能不断的拉进度 ...

最新文章

  1. 2019年度最受欢迎中国开源软件公布
  2. Gartner 2019年人工智能成熟度曲线的超前趋势
  3. Android TrafficStats类的使用
  4. AntV的花瓣图中鼠标悬浮提示信息去掉与修改
  5. 前、中、后缀表达式概述及转换+栈的计算器原理及代码分析(含完整源码)
  6. linux进程网络均衡,linux多CPU进程负载均衡解析
  7. HotSpot源码(一):Docker与虚拟机的区别,class字节码解析,linux内核源码下载地址,Yacc与Lex快速入门
  8. 2014 华为机考 中国海洋大学上午第三题(java实现)
  9. php闭包原理,闭包原理及实例
  10. SparkSQL UDF使用方法与原理详解
  11. Oracle 锁表查询及解锁
  12. windows快捷键之预览窗格
  13. Flutter报错:Bad state: Stream has already been listened to.
  14. Android发送短信SMS的编程
  15. 2022年营收增长高达70%,智云健康“医院为先”战略成效持续凸显
  16. android 电视 网上邻居,手机要怎么连接安卓智能电视或电视盒子
  17. Kattis Problem-Unique Snowflakes
  18. 有没有一款好的在线报表编辑器?详解:FastReport Online Designer
  19. 记英语单词的有效方法就那么几个,别整一些花里胡哨的
  20. 分享:avhttp简介

热门文章

  1. 在寒冬里努力寻找春天(SP的自述)
  2. SPRINGDATAJPA不创建外键
  3. 微信小程序Error
  4. 电脑怎么使用自带的截图功能
  5. Linux CentOS下安装SWIG方法
  6. 1.Java基础-注解
  7. 神经网络中的激活函数与损失函数深入理解推导softmax交叉熵
  8. php telnet 发送邮件,如何用telnet登录邮件服务器发送邮件!
  9. 基于java微信小程序视频分享平台系统设计与实现
  10. linux shell重定向(输入输出重定向)讲解