文档首页 > > SDK参考> Python SDK> 使用录音文件识别

使用录音文件识别

分享
更新时间: 2019/12/25 GMT+08:00

前提条件

  • 确保已按照配置Python环境配置完毕,Python SDK仅支持Python3。
  • 确保已存在待识别的音频文件并上传OBS,示例音频可参考下载SDK压缩包文件,同时确保服务已授权访问OBS,可参考配置OBS服务

初始化Client

初始化AsrCustomizationClient详见表 AsrCustomizationClient初始化参数

表1 AsrCustomizationClient初始化参数

参数名称

是否必选

参数类型

描述

ak

String

用户的ak,可参考AK/SK认证

sk

String

用户的sk,可参考AK/SK认证

region

String

区域,如:cn-north-1。具体请参考终端节点

project_id

String

项目ID,同region一一对应,参考获取项目ID

service_endpoint

String

终端节点,一般使用默认即可。

sis_config

Object

详见表 SisConfig数据结构

表2 SisConfig数据结构

参数名称

是否必选

参数类型

描述

connect_timeout

String

连接超时,默认10,单位s。

read_timeout

String

读取超时,默认10,单位s。

proxy

List

[host, port] 或 [host, port, username, password]。

请求参数

请求类为AsrCustomLongRequest,详见表 AsrCustomLongRequest数据结构

表3 AsrCustomLongRequest数据结构

参数名称

是否必选

参数类型

描述

data_url

String

OBS音频链接,目前华为云仅支持来自OBS的链接,注意OBS的region要与AsrCustomizationClient的region保持一致,同时需要确保链接为用户个人的OBS的音频连接,不支持访问其他用户的公共读的OBS音频链接。

audio_format

String

音频格式,具体信息请参见《API参考》中录音文件识别章节。

model_property

String

属性字符串,语言_采样率_模型,如chinese_8k_common。具体信息请参见《API参考》中录音文件识别章节。

add_punc

String

识别结果是否添加标点,yes或no,默认no。

need_analysis_info

Boolean

是否选择分析信息。

如果选择false,则声道、话者分离、情绪检测、速度信息均无效。默认false。

diarization

Boolean

是否需要话者分离,表示识别结果会包含role项,默认true。

channel

String

语音文件声道信息,可以为MONO(缺省), LEFT_AGENT, RIGHT_AGENT。默认MONO。

emotion

Boolean

是否需要做情绪检测,默认true。

speed

Boolean

是否需要输出语速信息,默认true。

vocabulary_id

String

热词表id,不使用则不填写。

创建热词表请参考《API参考》中创建热词表章节。

响应参数

Python SDK响应结果为Json格式,详见表 响应结果数据结构

表4 响应结果数据结构

参数名称

是否必选

参数类型

描述

status

String

当前识别状态。具体状态如下所示:

WAITING 等待识别。

FINISHED 识别已经完成。

ERROR 识别过程中发生错误。

create_time

String

任务创建时间, 遵循 RFC 3339格式。

格式示例:2018-12-04T13:10:29.310Z。

start_time

String

开始识别时间, 遵循 RFC 3339格式。

当status为FINISHED或ERROR时存在。

格式示例:2018-12-04T13:10:29.310Z。

finish_time

String

识别完成时间, 遵循 RFC 3339格式。

当status为FINISHED或ERROR时存在。

格式示例:2018-12-04T13:10:29.310Z。

segments

Array of objects

识别结果, 多句结果的数组。

数据结构参见表 segment数据结构

表5 segment数据结构

参数名

是否必选

参数类型

说明

start_time

Integer

一句的起始时间戳,单位ms。

end_time

Integer

一句的结束时间戳,单位ms。

result

Object

调用成功表示识别结果,调用失败时无此字段。详见表 result数据结构

表6 result数据结构

参数名

是否必选

参数类型

说明

text

String

识别结果文本。

analysis_info

Object

每一句的质检分析结果对象。

仅在识别配置中的need_analysis_info不为null时存在该返回结果。详见表 analysis_info数据结构

表7 analysis_info数据结构

参数名

是否必选

参数类型

说明

role

String

角色类型,目前仅支持 AGENT(座席),USER(用户)。

emotion

String

情绪类型,目前仅支持NORMAL(正常),ANGRY(愤怒)。

在识别配置中emotion为true时存在。

speed

Float

语速信息,单位是"每秒字数"。

在识别配置中speed为true时存在。

代码示例

# -*- coding: utf-8 -*-

from huaweicloud_sis.client.asr_client import AsrCustomizationClient
from huaweicloud_sis.bean.asr_request import AsrCustomShortRequest
from huaweicloud_sis.bean.asr_request import AsrCustomLongRequest
from huaweicloud_sis.exception.exceptions import ClientException
from huaweicloud_sis.exception.exceptions import ServerException
from huaweicloud_sis.utils import io_utils
from huaweicloud_sis.bean.sis_config import SisConfig
import json
import time

# 鉴权参数
ak = ''             # 参考https://support.huaweicloud.com/sdkreference-sis/sis_05_0003.html
sk = ''             # 参考https://support.huaweicloud.com/sdkreference-sis/sis_05_0003.html
region = ''         # region,如cn-north-4
project_id = ''     # 同region一一对应,参考https://support.huaweicloud.com/api-sis/sis_03_0008.html

# 录音文件识别参数,音频文件以obs连接方式传入(即先需要将音频传送到华为云的obs)
obs_url = ''                # 音频obs连接
obs_audio_format = ''       # 音频格式,详见api文档
obs_property = ''           # language_sampleRate_domain, 如chinese_8k_common,详见api文档


def asrc_long_example():
    """ 录音文件识别示例 """
    # step1 初始化客户端
    config = SisConfig()
    config.set_connect_timeout(5)       # 设置连接超时
    config.set_read_timeout(10)         # 设置读取超时
    # 设置代理,使用代理前一定要确保代理可用。 代理格式可为[host, port] 或 [host, port, username, password]
    # config.set_proxy(proxy)
    asr_client = AsrCustomizationClient(ak, sk, region, project_id,  sis_config=config)

    # step2 构造请求
    asrc_request = AsrCustomLongRequest(obs_audio_format, obs_property, obs_url)
    # 所有参数均可不设置,使用默认值
    # 设置是否添加标点,yes or no,默认no
    asrc_request.set_add_punc('yes')
    # 设置 是否需要分析信息,True or False, 默认False。 只有need_analysis_info生效,diarization、channel、emotion、speed才会生效
    # 目前仅支持8k模型,详见api文档
    asrc_request.set_need_analysis_info(True)
    # 设置是否需要话者分离,默认True,需要need_analysis_info设置为True才生效。
    asrc_request.set_diarization(True)
    # 设置声道信息, 一般都是单声道,默认为MONO,需要need_analysis_info设置为True才生效,详见api文档。
    asrc_request.set_channel('MONO')
    # 设置是否返回感情信息, 默认True,需要need_analysis_info设置为True才生效。
    asrc_request.set_emotion(True)
    # 设置是否需要返回语速信息,默认True,需要need_analysis_info设置为True才生效。
    asrc_request.set_speed(True)
    # 设置是否添加热词表id,没有则不填
    # asrc_request.set_vocabulary_id(None)

    # step3 发送请求,获取job_id
    job_id = asr_client.submit_job(asrc_request)

    # step4 根据job_id轮询,获取结果。
    status = 'WAITING'
    count = 0   # 每2s查询一次,最多尝试100次,即200s
    while status != 'FINISHED' and count < 100:
        print(count, ' query')
        result = asr_client.get_long_response(job_id)
        status = result['status']
        if status == 'ERROR':
            print('录音文件识别执行失败, %s' % json.dump(result))
            break
        time.sleep(2)
        count += 1
    print(json.dumps(result, indent=2, ensure_ascii=False))


if __name__ == '__main__':
    try:
        asrc_long_example()         # 录音文件识别
    except ClientException as e:
        print(e)
    except ServerException as e:
        print(e)

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区