在 Flask 应用中调用讯飞语音识别接口(以 RESTful API 为例)
通过以上步骤,即可在 Flask 应用中实现讯飞语音识别功能。
·
在 Flask 应用中调用讯飞语音识别接口(以 RESTful API 为例),需要完成以下步骤:
1. 注册讯飞开放平台账号
- 访问 讯飞开放平台 注册账号
- 创建应用,获取
APPID、API Key和API Secret
2. 安装依赖库
pip install requests
3. Flask 应用代码示例
import base64
import hashlib
import hmac
import time
import requests
from flask import Flask, request, jsonify
app = Flask(__name__)
# 讯飞开放平台配置
APPID = 'your_appid'
API_KEY = 'your_api_key'
API_SECRET = 'your_api_secret'
URL = 'https://api.xfyun.cn/v1/service/v1/iat'
@app.route('/speech-recognition', methods=['POST'])
def speech_recognition():
# 获取上传的音频文件(需为 WAV 格式,16kHz 采样率,单声道)
audio_file = request.files.get('audio')
if not audio_file:
return jsonify({'error': '未上传音频文件'}), 400
# 读取音频文件并进行 Base64 编码
audio_data = audio_file.read()
audio_base64 = base64.b64encode(audio_data).decode('utf-8')
# 生成鉴权参数
cur_time = str(int(time.time()))
param = {
"engine_type": "iat", # 语音转写引擎类型
"aue": "raw", # 音频编码格式(raw 表示原始数据)
"audio_format": "wav", # 音频格式
"sample_rate": 16000, # 采样率
"scene": "main" # 使用场景
}
param_json = json.dumps(param).replace(' ', '')
param_base64 = base64.b64encode(param_json.encode('utf-8')).decode('utf-8')
# 计算鉴权字符串
sign_str = f"{API_KEY}\n{param_base64}\n{cur_time}"
sign = hmac.new(API_SECRET.encode('utf-8'), sign_str.encode('utf-8'), hashlib.sha256).hexdigest()
# 构造请求头
headers = {
'Content-Type': 'application/json',
'X-Param': param_base64,
'X-CurTime': cur_time,
'X-Appid': APPID,
'X-CheckSum': sign
}
# 构造请求体
body = {
"data": audio_base64
}
try:
response = requests.post(URL, headers=headers, json=body)
result = response.json()
if result.get('code') == 0:
return jsonify({'text': result['data']})
else:
return jsonify({'error': result.get('message') or '识别失败'}), 400
except Exception as e:
return jsonify({'error': str(e)}), 500
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
4. 核心步骤解释
步骤 1:上传音频文件
- 客户端需通过
POST请求上传 WAV 格式的音频文件(参数名audio)。
步骤 2:生成鉴权参数
param对象:定义识别引擎类型、音频格式等参数。X-Param:将param转为 JSON 并 Base64 编码。X-CheckSum:通过 HMAC-SHA256 计算签名,确保请求合法性。
步骤 3:构造请求
- 请求头:包含鉴权参数和应用信息。
- 请求体:音频数据的 Base64 编码。
步骤 4:处理响应
- 成功响应示例:
{ "code": 0, "data": "识别的文本内容" }
5. 使用说明
-
前端示例(HTML + JavaScript):
<input type="file" id="audio-file" accept=".wav"> <button onclick="recognize()">识别</button> <script> function recognize() { const file = document.getElementById('audio-file').files[0]; const formData = new FormData(); formData.append('audio', file); fetch('/speech-recognition', { method: 'POST', body: formData }) .then(res => res.json()) .then(data => console.log(data.text)); } </script> -
音频要求:
- 格式:WAV
- 采样率:16kHz
- 编码:单声道,原始音频数据(非压缩)
6. 新疆地区注意事项
- 网络优化:建议使用 CDN 或本地服务器缓存接口响应。
- 超时处理:增加请求超时时间(如
requests.post(..., timeout=10))。
常见问题
- 鉴权失败:检查
API_KEY、API_SECRET是否正确,确保时间戳与服务器时间同步。 - 音频格式错误:使用工具(如
ffmpeg)转换音频格式:ffmpeg -i input.mp3 -ar 16000 -ac 1 -c:a pcm_s16le output.wav
通过以上步骤,即可在 Flask 应用中实现讯飞语音识别功能。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)