#!/usr/bin/python3
# -*- coding: UTF-8 -*- import requests
import time
import gzip
import urllib
import json
import hashlib
import base64 def audio_dictation():
"""
讯飞语音听写 API 调用例程
注意:使用前需要在讯飞云控制台中的IP白名单中加入本机IP!
参考:讯飞云官方 API 文档 https://doc.xfyun.cn/rest_api/语音听写.html
""" # 读取 APPID:
with open('./appid', mode='r', encoding='ASCII') as appid_file:
x_appid = appid_file.read() # 读取APIKey:
with open('./apikey', mode='r', encoding='ASCII') as apikey_file:
api_key = apikey_file.read() # API URL:
url = 'http://api.xfyun.cn/v1/service/v1/iat' # 读取音频文件内容 (将 `zhngjb_clip.wav` 替换成需要上传的音频文件):
with open('./zhngjb_clip.wav', mode='rb') as audio_file:
file_content = audio_file.read() # 对音频文件进行 base64 音频编码:
base64_audio = base64.b64encode(file_content)
body = urllib.parse.urlencode({'audio': base64_audio}) # 采样率 16k,编码格式 未压缩:
param = {"engine_type": "sms16k", "aue": "raw"} # 构建 header:
x_param = base64.b64encode(json.dumps(param).replace(' ', '').encode())
x_time = str(int(int(round(time.time() * 1000)) / 1000))
x_checksum = hashlib.md5(api_key.encode() + str(x_time).encode() + x_param).hexdigest()
x_header = {'X-Appid': x_appid,
'X-CurTime': x_time,
'X-Param': x_param,
'X-CheckSum': x_checksum} req_header = {'Content-Type': 'application/x-www-form-urlencoded',
'charset': 'utf-8'} headers = {**req_header, **x_header} # 发送请求:
start = time.time()
response = requests.post(url, headers=headers, data=body)
duration = time.time() - start with open('result', mode='w', encoding='utf-8') as result_file:
print(f'Request sent. Duration: {duration}s\n'
f'status code = {response.status_code}\n'
f'headers = {response.headers}\n'
f'content = {response.content.decode("utf-8")}', file=result_file) if __name__ == '__main__':
audio_dictation()

讯飞云 API 语音听写 python3 调用例程的更多相关文章

  1. Python3调用Hadoop的API

    前言: 上一篇文章 我学习使用pandas进行简单的数据分析,但是各位...... Pandas处理.分析不了TB级别数据的大数据,于是再看看Hadoop. 另附上人心不足蛇吞象 对故事一的感悟:   ...

  2. Android集成科大讯飞SDK语音听写及语音合成功能实现

    前言 现在软件设计越来越人性化.智能化.一些常见的输入都慢慢向语音听写方向发展,一些常见的消息提示都向语音播报发展.所以语音合成和语音听写是手机软件开发必不可少的功能.目前国内这方面做的比较好的应该是 ...

  3. C# 实现语音听写

    本文系原创,禁止转载. 分享如何使用c#对接科大讯飞语音听写服务,简单高效地实现语音听写. 实现语音听写主要分为录音和语音识别两部分:录音是指获取设备声卡端口的音频数据并将之保存为音频文件,语音识别就 ...

  4. Android 讯飞语音听写SDK快速接入(附空指针解决和修改对话框文字方法)

    1.账号准备工作 首先要有一个讯飞的账号啦,为后面申请APPID.APPKey等东西做准备.顺带一提:讯飞对不同认证类型用户开 放的SDK的使用次数是有不同的,详情如下图. 账号申请完成后,需要去你自 ...

  5. Android讯飞语音云语音听写学习

    讯飞语音云语音听写学习         这几天两个舍友都买了iPhone 6S,玩起了"Hey, Siri",我依旧对我的Nexus 5喊着"OK,Google" ...

  6. 腾讯QQAndroid API调用实例(QQ分享无需登录)

    腾讯QQAndroid API调用实例(QQ分享无需登录)   主要分为两个步骤: 配置Androidmanifest.xml 修改activity里边代码 具体修改如下:   1.Activity代 ...

  7. 腾讯地图 API 调用入门

    本文仅为腾讯地图 API 调用入门,如需进阶学习,请在腾讯位置服务网站上进行学习. 登陆网址 https://lbs.qq.com/ 点击右上角的登陆按钮,需要进行注册按照流程进行就好. 完成之后,选 ...

  8. 微信小程序wx.getLocation()获取经纬度及JavaScript SDK调用腾讯地图API获取某一类地址

    简介 腾讯位置服务为微信小程序提供了基础的标点能力.线和圆的绘制接口等地图组件和位置展示.地图选点等地图API位置服务能力支持,使得开发者可以自由地实现自己的微信小程序产品. 在此基础上,腾讯位置服务 ...

  9. .NET调用腾讯云API实例

    最近项目有用到腾讯云的身份识别接口,话不多说,直接上代码: private void IDCardVerification(HttpContext context) { string imgStr = ...

随机推荐

  1. Python 学习笔记(十一)Python语句(二)

    For 循环语句 基础知识 for循环可以遍历任何序列的项目,如一个列表或者一个字符串. 语法: for 循环规则: do sth >>> for i in "python ...

  2. Intermediate_JVM 20180306 : 运行时数据区域

    Java比起C++一个很大的进步就在于Java不用再手动控制指针的delete与free,统一交由JVM管理,但也正因为如此,一旦出现内存溢出异常,不了解JVM,那么排查问题将会变成一项艰难的工作. ...

  3. iOS视频处理

    在iOS中,apple提供了AVFoundation 用来处理音视频,基本能满足一些常用的音视频处理需求,而且能调用的硬件编解码接口,能提高不少效率,这是其它库所不能达到的.最近做过的Recnow S ...

  4. 利用mysqlbinlog_flashback闪回丢失数据

            today,i'll have a test with the open source tool mysqlbinlog_flashback which is released by ...

  5. mysql中对于时间的处理,时间的滚动,求时间间隔,切换时区等等

    mysql中对于时间的处理,时间的滚动,求时间间隔,切换时区等等 在mysql的使用过程中,有时候会出现对时间进行的操作,比如时间向前向后滚动,求2个时间的间隔,或者切换时区的操作 1,时间向前滚动( ...

  6. 使用泛型与不使用泛型的Map的遍历

    https://www.cnblogs.com/fqfanqi/p/6187085.html

  7. 【sql server常用操作{增删改查}】

    use DB_x   go   drop database DB_y   create database DB_y --创建数据库   on primary --指定主数据文件   (   name= ...

  8. 2. HTML常用标签

    相信大家常常会打开浏览器搜索一些内容或者浏览一些网站,在浏览器的页面上会呈现很多内容,但是具体的形式无非就是图片.文字以及链接(可以点击进入另一个页面的特殊文字),其中文字承载着巨大的作用,传递着各种 ...

  9. Java : logback简单配置

    需要把logback.xml文件放在类路径下,如果是spring boot项目可以用 logging.config=classpath:log/xxxxxx.xml来指定配置文件 logback la ...

  10. TypeScript : 语法及特性

    当let声明一个变量的时候它使用的词法作用域或者是块作用域.块作用域指的就是他们包含的块以外的不能访问. const声明:是let声明有相同的作用域规则,但是它被赋值后不能再被改变.类似于java的f ...