调用讯飞开放平台语音转写demo,用python写一个调用文件夹下的所有音频文件对其逐一进行语音转写输出成TXT文本保存
时间: 2024-05-11 15:14:45 浏览: 119
首先,需要在讯飞开放平台申请语音转写API的应用ID和API密钥,并安装讯飞开放平台的Python SDK。具体的安装和使用方法可以参考讯飞开放平台的官方文档。
下面是一个基本的调用讯飞开放平台语音转写API的Python脚本:
```
# -*- coding: utf-8 -*-
import sys
import json
import base64
import requests
URL = "http://api.xfyun.cn/v1/service/v1/iat"
APPID = "" # 替换成自己申请的应用ID
API_KEY = "" # 替换成自己申请的API密钥
def get_header():
cur_time = int(time.time())
param = "{\"engine_type\": \"sms16k\", \"aue\": \"raw\"}"
param_base64 = str(base64.b64encode(param.encode('utf-8')), 'utf-8')
m2 = hashlib.md5()
m2.update((API_KEY + str(cur_time) + param_base64).encode('utf-8'))
check_sum = m2.hexdigest()
header = {
'X-Appid': APPID,
'X-CurTime': str(cur_time),
'X-Param': param_base64,
'X-CheckSum': check_sum,
'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8',
}
return header
def recognize(audio_file):
with open(audio_file, 'rb') as f:
audio_data = f.read()
audio_base64 = str(base64.b64encode(audio_data), 'utf-8')
data = {
'audio': audio_base64,
}
r = requests.post(URL, headers=get_header(), data=data)
result = json.loads(r.content.decode('utf-8'))
if result['code'] == '0':
return result['data']
else:
return None
```
这个脚本包含了获取请求头和调用语音转写API的基本功能。具体的参数可以根据自己的需求进行修改,例如语音引擎类型、音频格式等等。
接下来,我们可以编写一个脚本来对文件夹下的所有音频文件进行语音转写:
```
# -*- coding: utf-8 -*-
import os
AUDIO_DIR = "./audio"
TXT_DIR = "./txt"
if not os.path.exists(TXT_DIR):
os.makedirs(TXT_DIR)
for filename in os.listdir(AUDIO_DIR):
if filename.endswith(".wav"):
audio_file = os.path.join(AUDIO_DIR, filename)
txt_file = os.path.join(TXT_DIR, filename.replace(".wav", ".txt"))
result = recognize(audio_file)
if result is not None:
with open(txt_file, "w") as f:
f.write(result)
print("转写成功:", txt_file)
else:
print("转写失败:", audio_file)
```
这个脚本首先遍历音频文件所在的文件夹,对于每个以“.wav”结尾的文件,调用前面编写的recognize函数进行语音转写,然后将结果保存到以“.txt”结尾的文件中。如果转写成功,则输出转写结果所在的文件名,否则输出转写失败的文件名。
注意,这个脚本假设所有音频文件都是.wav格式的,如果需要支持其他格式的音频文件,需要对recognize函数进行相应的修改。另外,由于讯飞开放平台的语音转写API是有调用次数限制的,所以在实际使用时需要注意调用频率和调用次数的限制。
阅读全文