使用Python与腾讯云接口对接,实现实时语音转写功能

1. 前言

在语音识别领域,腾讯云提供了语音识别和语音唤醒的服务。其中,语音识别服务支持实时语音转写、一句话识别和录音文件识别等功能。本文主要介绍如何使用Python与腾讯云接口对接,实现实时语音转写功能。

2. 创建腾讯云账号并开通语音识别服务

2.1 创建腾讯云账号

如果您还没有腾讯云账号,请前往 腾讯云官网 注册。

2.2 开通语音识别服务

在腾讯云管理控制台中,搜索并进入“语音识别” 服务,点击“立即开通”。

重点提示:语音识别的试用期是7天。开通后,可以先试用一下功能,熟悉服务和接口。

3. 安装Python SDK for Tencent Cloud

3.1 安装Python SDK

安装腾讯云Python SDK,可以通过pip安装。在命令行输入以下命令:

pip install tencentcloud-sdk-python==3.0.224

3.2 设置SecretId和SecretKey

在使用Python SDK调用腾讯云API之前,需要先设置腾讯云账户的 SecretId 和 SecretKey。 SecretId 和 SecretKey 相当于腾讯云的账户和密码,需要保护好。

在腾讯云控制台中,点击 左上角 的“账户”下的“访问管理”进入“访问秘钥”页,单击“新建密钥”获取SecretId和SecretKey。

3.3 导入Python SDK并设置SecretId和SecretKey

将SDK导入Python文件中

from tencentcloud.common import credential

from tencentcloud.asr.v20190614 import asr_client, models

from tencentcloud.common.profile.client_profile import ClientProfile

from tencentcloud.common.profile.http_profile import HttpProfile

SecretId = "Your SecretId"

SecretKey = "Your SecretKey"

cred = credential.Credential(SecretId, SecretKey)

4. 实现实时语音转写功能

4.1 搭建框架

根据腾讯云语音识别功能接口,将实时语音转写功能放在 loop() 中,建立 main() 函数作为程序入口。

def loop():

# 实时语音识别

def main():

loop()

if __name__ == '__main__':

main()

4.2 设置参数

设置请求参数。根据您的需求,可以设置不同的请求参数。例如:语音编码、是否开启腾讯云分贝音频过滤等。

params = {

'EngineModelType': '16k_zh', # 模型类型:中文普通话16k,默认16k_zh和16k_en

'ChannelNum': 1, # 声道数

'ResTextFormat': 0, # 结果文本编码方式,0为UTF-8,1为BASE64编码

'SourceType': 1, # 语音源的存储位置,0表示腾讯云,1表示用户自有资源;

'NeedVad': 0, # 识别之前是否去除音频文件开头结尾静音部分:0-否,1-是

'VadSilenceTime': 5000, # 去除静音部分的静音长度阈值,单位为毫秒

'FilterDirty': 0, # 是否开启语音过滤:0-不开启,1-开启;

'FilterModal': 0, # 是否开启语音音量大小过滤:0-不开启,1-开启;

'FilterPunc': 0, # 是否开启语音标点符号过滤:0-不开启,1-开启;

' ConvertNumMode': 0, # 是否进行阿拉伯数字口语化处理:0 - 否,1 - 是,也就是将阿拉伯数字1, 2, 3,...10,11, 12,变为一,二,三,...十一,十二。目前仅中文普通话支持(默认为0)。

}

config = models.RecognizeConfig()

config.ChannelNum = params['ChannelNum']

config.ResTextFormat = params['ResTextFormat']

config.SourceType = params['SourceType']

config.VadSilenceTime = params['VadSilenceTime']

request = models.CreateRecTaskRequest()

request.EngineModelType = params['EngineModelType']

request.RecognizeConfig = config

request.Data = input_stream

request.NeedVad = params['NeedVad'] == 1

request.FilterDirty = params['FilterDirty']

request.FilterModal = params['FilterModal']

request.FilterPunc = params['FilterPunc']

request.ConvertNumMode = params['ConvertNumMode']

4.3 调用API

创建ASR客户端和ClientProfile,并设置它们的参数。

clientProfile = ClientProfile()

httpProfile = HttpProfile()

httpProfile.Endpoint = "asr.tencentcloudapi.com"

client = asr_client.AsrClient(cred, "ap-guangzhou", clientProfile)

client._httpProfile = httpProfile

resp = client.CreateRecTask(request)

print(resp.to_json_string(indent=2))

4.4 完整代码

以下是完整的 Python 代码:

import pyaudio

import os

import time

import wave

from threading import Thread

from tencentcloud.common import credential

from tencentcloud.asr.v20190614 import asr_client, models

from tencentcloud.common.profile.client_profile import ClientProfile

from tencentcloud.common.profile.http_profile import HttpProfile

SecretId = "Your SecretId"

SecretKey = "Your SecretKey"

cred = credential.Credential(SecretId, SecretKey)

# 实时语音识别

def asr(input_stream):

params = {

'EngineModelType': '16k_zh', # 模型类型:中文普通话16k,默认16k_zh和16k_en

'ChannelNum': 1, # 声道数

'ResTextFormat': 0, # 结果文本编码方式,0为UTF-8,1为BASE64编码

'SourceType': 1, # 语音源的存储位置,0表示腾讯云,1表示用户自有资源;

'NeedVad': 0, # 识别之前是否去除音频文件开头结尾静音部分:0-否,1-是

'VadSilenceTime': 5000, # 去除静音部分的静音长度阈值,单位为毫秒

'FilterDirty': 0, # 是否开启语音过滤:0-不开启,1-开启;

'FilterModal': 0, # 是否开启语音音量大小过滤:0-不开启,1-开启;

'FilterPunc': 0, # 是否开启语音标点符号过滤:0-不开启,1-开启;

' ConvertNumMode': 0, # 是否进行阿拉伯数字口语化处理:0 - 否,1 - 是,也就是将阿拉伯数字1, 2, 3,...10,11, 12,变为一,二,三,...十一,十二。目前仅中文普通话支持(默认为0)。

}

config = models.RecognizeConfig()

config.ChannelNum = params['ChannelNum']

config.ResTextFormat = params['ResTextFormat']

config.SourceType = params['SourceType']

config.VadSilenceTime = params['VadSilenceTime']

request = models.CreateRecTaskRequest()

request.EngineModelType = params['EngineModelType']

request.RecognizeConfig = config

request.Data = input_stream

request.NeedVad = params['NeedVad'] == 1

request.FilterDirty = params['FilterDirty']

request.FilterModal = params['FilterModal']

request.FilterPunc = params['FilterPunc']

request.ConvertNumMode = params['ConvertNumMode']

clientProfile = ClientProfile()

httpProfile = HttpProfile()

httpProfile.Endpoint = "asr.tencentcloudapi.com"

client = asr_client.AsrClient(cred, "ap-guangzhou", clientProfile)

client._httpProfile = httpProfile

resp = client.CreateRecTask(request)

print(resp.to_json_string(indent=2))

def loop():

CHUNK = 1024

FORMAT = pyaudio.paInt16

CHANNELS = 1

RATE = 16000

p = pyaudio.PyAudio()

stream = p.open(format=FORMAT,

channels=CHANNELS,

rate=RATE,

input=True,

frames_per_buffer=CHUNK)

frames = []

while True:

if len(frames) > 0:

data = b''.join(frames)

frames = []

asr(data)

data = stream.read(CHUNK)

frames.append(data)

stream.stop_stream()

stream.close()

p.terminate()

def main():

loop()

if __name__ == '__main__':

main()

5. 总结

本文介绍了如何使用Python与腾讯云接口对接,实现实时语音转写功能。首先,需要在腾讯云上创建账号并开通语音识别服务;然后,较为详细地介绍了Python SDK的安装和配置;最后,给出了完整的代码实现,并介绍了一些重要的参数设置。

总的来说,使用腾讯云语音识别服务进行实时语音转写是一项不错的选择。腾讯云提供可靠的服务,同时也极大地降低了开发者的工作量,让开发者可以更加专注于实现业务逻辑。

后端开发标签