调用腾讯云的语音识别(一句话识别)接口-Python版

浪费了2个多小时去调试,所以记录一下代码。

接上文,可以直接利用上一篇文章里,返回的音频数据,再传回给腾讯接口,进行识别。


# #################################
# Copyright(C) 2012-2017
# Environment:        python 3.9.7
# Package:                       -
# D&P Author By:            常成功
# Create Date:          2021-12-23
# Modify Date:          2021-12-23
# #################################

# 描述:
# 访问腾讯云的语音识别(一句话识别)A Sentence Recognition(ASR)

import base64
import hashlib
import hmac
import requests
import time
import random

secret_id = "你的密钥"
secret_key = "你的密钥"


def get_string_to_sign(method, endpoint, params):
    s = method + endpoint + "/?"
    query_str = "&".join("%s=%s" % (k, params[k]) for k in sorted(params))
    return s + query_str


def sign_str(key, s, method):
    hmac_str = hmac.new(key.encode("utf8"), s.encode("utf8"), method).digest()
    return base64.b64encode(hmac_str)


# 官方的权限验证、以及调用接口的参数
def call_asr_offical(the_sound_base64):
    # 注意调用此函数, 电脑不能开启翻墙代理(例如v2Ray), 否则报错!
    endpoint = "asr.tencentcloudapi.com"
    # 输入参数见: https://cloud.tencent.com/document/product/1093/35646
    data = {
        'Action': 'SentenceRecognition',        # 接口
        'ProjectId': '0',
        'SubServiceType': '2',          # 子服务类型。2一句话识别。
        'EngSerViceType': '16k_zh',         # 16k_zh:16k 中文普通话通用。 音频时长不能超过60s,音频文件大小不能超过3MB。
        'SourceType': '1',              # 语音数据来源。0:语音 URL;1:语音数据(post body)
        'VoiceFormat': 'wav',           # 识别音频的音频格式。mp3、wav。
        'UsrAudioKey': 'session_chang',    # 用户端对此任务的唯一标识,用户自助生成
        # 语音数据,当SourceType 值为1(本地语音数据上传)时必须填写, 值为base64编码的string
        'Data': the_sound_base64,
        # 下面是其他必选公共参数
        # 'Region': 'ap-beijing',       # 本接口不需要传递此参数!
        'Nonce': random.randint(1, 100000),
        'SecretId': secret_id,
        'Timestamp': int(time.time()),
        'Version': '2019-06-14',
    }
    # ------------ 注意这里使用的是POST方法 ------------
    s = get_string_to_sign("POST", endpoint, data)
    data["Signature"] = sign_str(secret_key, s, hashlib.sha1)
    print("Signature: ", data["Signature"])
    # 此处会实际调用,成功后可能产生计费
    # 请求方法为 HTTP POST , Content-Type为"application/json; charset=utf-8"
    headers_dic = {
        "Content-Type": "application/json; charset=utf-8",
    }
    resp = requests.post("https://" + endpoint, data=data, headers=headers_dic)
    # 输出一下拼出来的参数
    print("asr resp:", resp)
    # 输出一下返回, 注意, 如果腾讯接口报错, 可以打断点, resp下的reason属性值, 就是报错原因
    # 是无法执行resp.json()方法的
    print(resp.json())

    # 直接返回腾讯给的原始二进制数据
    rsp_dic = resp.json()
    says_text = rsp_dic["Response"]["Result"]
    return says_text

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
腾讯云提供了一种名为“腾讯云语音识别(ASR)”的服务,可用于将语音转换为文字。您可以使用Python编程语言与腾讯云的ASR API进行交互,实现语音识别功能。 要使用腾讯云ASR服务,您需要完成以下步骤: 1. 在腾讯云官网注册账号并登录。 2. 在腾讯云控制台创建一个新的ASR实例,并获取相应的API密钥和密钥ID。 3. 安装Python SDK,例如 TencentCloud SDK for Python腾讯云官方提供)。 4. 使用Python编写代码,调用ASR API实现语音识别功能。 以下是一个简单的示例代码,展示了如何使用Python腾讯云SDK进行语音识别: ```python from tencentcloud.common import credential from tencentcloud.common.profile.client_profile import ClientProfile from tencentcloud.common.profile.http_profile import HttpProfile from tencentcloud.asr.v20190614 import asr_client, models # 设置腾讯云API密钥和密钥ID cred = credential.Credential("your-secret-id", "your-secret-key") # 设置HTTP配置和区域 httpProfile = HttpProfile() httpProfile.endpoint = "asr.tencentcloudapi.com" clientProfile = ClientProfile() clientProfile.httpProfile = httpProfile # 创建客户端对象 client = asr_client.AsrClient(cred, "ap-guangzhou", clientProfile) # 构造请求对象 req = models.CreateRecTaskRequest() req.EngineModelType = "8k_zh" req.ChannelNum = 1 req.ResTextFormat = 0 req.SourceType = 0 req.Data = "your-audio-data" # 发送请求,获取识别结果 resp = client.CreateRecTask(req) # 解析结果 if hasattr(resp, "Data"): print(resp.Data) ``` 请注意,上述代码的"your-secret-id"和"your-secret-key"需要替换为您实际的腾讯云API密钥和密钥ID。另外,"your-audio-data"需要替换为待识别的语音数据。此外,您还可以根据需要调整其他参数,例如语音采样率、语音格式等。 希望这可以帮到您!如有更多问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值