使用python对接腾讯云的语音识别,将本地录音转为文字
运行以上代码,可以直接将录音转为文字,如不能使用,欢迎私信探讨。python版本:3.8以上。第一步:安装腾讯的sdk。
·
python版本:3.8以上
第一步:安装腾讯的sdk
在这里插入代码片
第二步,将腾讯云对接代码封装,复制以下代码存入到txasr.py,代码如下:
import time
import json
import base64
import re
from tencentcloud.common import credential
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.asr.v20190614 import asr_client, models
class TencentASR:
def __init__(self, secret_id, secret_key, region):
"""
初始化腾讯云ASR对象
:param secret_id: 腾讯云账号的SecretId
:param secret_key: 腾讯云账号的SecretKey
:param region: 地域信息,例如'ap-guangzhou'
"""
self.secret_id = secret_id
self.secret_key = secret_key
self.region = region
self.cred = credential.Credential(secret_id, secret_key)
self.client = asr_client.AsrClient(self.cred, self.region)
self.params = {
"EngineModelType": "16k_zh",
"ChannelNum": 1,
"ResTextFormat": 0,
"SourceType": 1,
}
def send_audio(self, audio_path):
"""
发送录音文件进行识别
:param audio_path: 需要识别的语音文件路径
:return: 识别任务ID,如果出现错误则返回None
"""
with open(audio_path, 'rb') as f:
speech = base64.b64encode(f.read()).decode('utf-8')
self.params['Data'] = speech
req = models.CreateRecTaskRequest()
req.from_json_string(json.dumps(self.params))
try:
resp = self.client.CreateRecTask(req)
task_id = json.loads(resp.to_json_string())['Data']['TaskId']
return task_id
except TencentCloudSDKException as err:
print(err)
return None
def get_result(self, task_id, timeout=60):
"""
获取识别结果
:param task_id: 识别任务ID
:param timeout: 超时时间,默认为60秒
:return: 识别结果,如果出现错误则返回None
"""
start_time = time.time()
while True:
req = models.DescribeTaskStatusRequest()
params = {
"TaskId": task_id,
}
req.from_json_string(json.dumps(params))
try:
resp = self.client.DescribeTaskStatus(req)
resp_j = json.loads(resp.to_json_string())
status = resp_j['Data']['Status']
if status == 2: # 任务处理成功
text_j = resp_j['Data']['Result']
pattern = r'\[\d+:\d+\.\d+,\d+:\d+\.\d+\]'
result = re.sub(pattern, '', text_j).strip()
lines = result.split('\n')
return lines
elif status == 1: # 任务正在处理中
if time.time() - start_time > timeout:
print("Timeout")
return None
time.sleep(1)
else: # 任务处理失败
print("Task failed")
return None
except TencentCloudSDKException as err:
print(err)
return None
第三步,调用
from txasr import TencentASR
import time
asr = TencentASR('A腾讯云账号的SecretId', 'j腾讯云账号的SecretKey', 'ap-guangzhou')
task_id = asr.send_audio('录音名字.wav')
if task_id:
print('发送录音文件成功,识别任务ID为:', task_id)
print('等待识别结果...')
time.sleep(10)
result = asr.get_result(task_id)
if result:
print('识别结果:')
for line in result:
print('->:' + line.strip())
else:
print('获取识别结果失败')
else:
print('发送录音文件失败')
运行以上代码,可以直接将录音转为文字,如不能使用,欢迎私信探讨。
更多推荐
所有评论(0)