华为云语音交互服务SIS的智能化--SIS一句话语音识别

举报
华为云classroom 发表于 2023/12/13 15:34:26 2023/12/13
【摘要】 云服务、API、SDK,调试,查看,我都行 阅读短文您可以学习到:人工智能AI之SIS的实时、识别、分析、分类1      Classroom和Toolkit的关系1.1      Classroom的简介classroom是基于华为云的云上软件教学服务,支持初级开发者和高校师生实现备课、上课、作业、考试、实验、实训等全教学流程的线上教学,提供多类习题自动判题、企业级DevOps实训、免费在...

云服务、APISDK,调试,查看,我都行

阅读短文您可以学习到:人工智能AISIS的实时、识别、分析、分类

1      Classroom和Toolkit的关系

1.1      Classroom的简介

classroom是基于华为云的云上软件教学服务,支持初级开发者和高校师生实现备课、上课、作业、考试、实验、实训等全教学流程的线上教学,提供多类习题自动判题、企业级DevOps实训、免费在线习题库等众多高级特性辅助进行数字化教学转型。

1.2      Toolkit插件之华为云API实战课程


2      IntelliJ IDEA 之API插件介绍

API插件支持 VS Code IDEIntelliJ IDEA等平台、以及华为云自研 CodeArts IDE,基于华为云服务提供的能力,帮助开发者更高效、便捷的搭建应用。API插件关联华为云服务下的 API ExplorerDevStarCodeLabsSDK 中心和 CLI 中心产品,致力于为开发者提供更稳定、快速、安全的编程体验。

在本插件中,我们提供了但不局限于如下的功能:

对接华为云API开放平台,支持用户检索API、查看API文档、调试API、以及提供SDK示例代码供用户学习如何使用API

提供华为云SDK代码片段补全功能,SDK依赖包自动引入,加速用户集成华为云API

对接华为云开发体验馆Codelabs,提供500+云服务代码示例,向导式教程帮助用户快速学习。

说明:

IntelliJ IDEA等系列平台和VS Code IDE,华为云API插件的名称是Huawei Cloud API。而在CodeArts IDEAPI插件是IDE原生内置的,名称是华为云API开发套件。

API插件在IntelliJ IDEA等系列平台和VS Code IDE的使用依赖底座插件,请提前安装底座插件。

3      API插件安装--IntelliJ IDEA

3.1    IntelliJ IDEA等平台

安装准备:下载并安装JDK1.8或更高版本。下载并安装IntelliJ IDEA 2020.2或更高版本。

须知:IntellIj平台同时支撑包括GolandPycharm等在内的IDE,若在其它相关IDE上开发,请下载配置好对应语言的编译器或者解释器。这里以IDEA为例介绍IntelliJ平台插件的安装流程,其他IntelliJ系列的IDE请参考IDEA

开始安装:

您可以在直接在IDE插件市场或者直接在JetBrains插件市场下载离线包安装。

IDE安装

  1. IntelliJ IDEA顶部菜单栏中选择File > Settings,在Settings对话框的左侧导航栏中单击Plugins
  2. Plugins区域单击Marketplace,在搜索栏中输入Huawei Cloud API
  3. Search Results区域会出现Huawei Cloud API,单击Install,完成后重启IDE


离线包安装:

  1. 进入插件市场搜索Huawei Cloud API,进入插件详情页,在Versions页签下选择想要版本的API插件,点击Download下载离线的插件压缩包保存到本地。。
  2. IntelliJ IDEA顶部菜单栏中选择File > Settings,在Settings对话框的左侧导航栏中单击Plugins
  3. Plugins区域单击 ,再单击Install Plugin from Disk...
  4. Choose Plugin File对话框中选择离线安装包(不用解压),并按照IntelliJ IDEA安装页面的提示,完成后续安装步骤。


说明:若当前您想要安装插件的IntelliJ IDE已经在桌面打开,则进入插件市场搜索Huawei Cloud API,进入插件详情页,在右上角会识别到本地已经打开的IDE,点击相应按钮,在弹出的IDE窗口中点击ok,则IDE后台会开始安装相应版本的API插件。

安装验证:在IntelliJ系列平台上安装插件成功后在左侧的导航栏中可以看到Huawei Cloud Toolkit图标,点击后面板会出现Huawei Cloud API的字样,则说明安装成功。

3.2      API列表


左侧展示API列表,可以查询所有API,目前云服务206APIs9213


4      实时语音识别

基于websocket接口对输入的音频流进行识别,实时返回识别结果。

前提条件

1、在保证华为云账号余额充足或已购买套餐包的情况下,语音交互服务无需申请即可使用。

https://support.huaweicloud.com/sdkreference-sis/sis_05_0003.html

2、进行 AK/SK 认证,并妥善保管 AK/SK 信息。

https://support.huaweicloud.com/sdkreference-sis/sis_05_0004.html#sis_05_0004__table47650414583

3、下载相应的 Python SDK

https://support.huaweicloud.com/sdkreference-sis/sis_05_0056.html

4、确保已按照 Python 环境配置细则配置完毕,注意Python SDK 仅支持Python3

5、准备好待识别的音频文件。

示例代码

以下示例代码对应SDK中的\cn_demo\rasr_demo.py,可进入 SDK 直接运行。

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

from huaweicloud_sis.client.rasr_client import RasrClient

from huaweicloud_sis.bean.rasr_request import RasrRequest

from huaweicloud_sis.bean.callback import RasrCallBack

from huaweicloud_sis.bean.sis_config import SisConfig

import json

# 鉴权信息

ak = ''             # 用户的ak

sk = ''             # 用户的sk

region = 'cn-north-4'         # region,如cn-north-4

project_id = ''     # region一一对应,参考https://support.huaweicloud.com/api-sis/sis_03_0008.html

 

"""

    todo 请正确填写音频格式和模型属性字符串

  1. 音频格式一定要相匹配.

         例如音频是pcm格式,并且采样率为8k,则格式填写pcm8k16bit

         如果返回audio_format is invalid 说明该文件格式不支持。具体支持哪些音频格式,需要参考一些api文档。

 

     2.音频采样率要与属性字符串的采样率要匹配。

         例如格式选择pcm16k16bit,属性字符串却选择chinese_8k_common, 则会返回'audio_format' is not match model

"""

 

# 实时语音识别参数

path = ''                               # 需要发送音频路径,如D:/test.pcm, 同时sdk也支持byte流发送数据。

audio_format = 'pcm16k16bit'            # 音频支持格式,如pcm16k16bit,详见api文档

property = 'chinese_16k_general'        # 属性字符串,language_sampleRate_domain, chinese_16k_general, 采样率要和音频一致。详见api文档

 

 

class MyCallback(RasrCallBack):

    """ 回调类,用户需要在对应方法中实现自己的逻辑,其中on_response必须重写 """

    def on_open(self):

        """ websocket连接成功会回调此函数 """

        print('websocket connect success')

 

    def on_start(self, message):

        """

            websocket 开始识别回调此函数

        :param message: 传入信息

        :return: -

        """

        print('webscoket start to recognize, %s' % message)

 

    def on_response(self, message):

        """

            websockert返回响应结果会回调此函数

        :param message: json格式

        :return: -

        """

        print(json.dumps(message, indent=2, ensure_ascii=False))

 

    def on_end(self, message):

        """

            websocket 结束识别回调此函数

        :param message: 传入信息

        :return: -

        """

        print('websocket is ended, %s' % message)

 

    def on_close(self):

        """ websocket关闭会回调此函数 """

        print('websocket is closed')

 

    def on_error(self, error):

        """

            websocket出错回调此函数

        :param error: 错误信息

        :return: -

        """

        print('websocket meets error, the error is %s' % error)

 

 

def rasr_example():

    """ 实时语音识别demo """

    # step1 初始化RasrClient, 暂不支持使用代理

    my_callback = MyCallback()

    config = SisConfig()

    # 设置连接超时,默认是10

    config.set_connect_timeout(10)

    # 设置读取超时, 默认是10

    config.set_read_timeout(10)

    # 设置connect lost超时,一般在普通并发下,不需要设置此值。默认是4

    config.set_connect_lost_timeout(4)

    # websocket暂时不支持使用代理

    rasr_client = RasrClient(ak=ak, sk=sk, use_aksk=True, region=region, project_id=project_id, callback=my_callback,

                             config=config)

 

    # step2 构造请求

    request = RasrRequest(audio_format, property)

    # 所有参数均可不设置,使用默认值

    request.set_add_punc('yes')         # 设置是否添加标点, yes or no, 默认no

    request.set_vad_head(10000)         # 设置有效头部, [0, 60000], 默认10000

    request.set_vad_tail(500)           # 设置有效尾部,[0, 3000], 默认500

    request.set_max_seconds(30)         # 设置一句话最大长度,[0, 60], 默认30

    request.set_interim_results('no')   # 设置是否返回中间结果,yes or no,默认no

    request.set_digit_norm('no')        # 设置是否将语音中数字转写为阿拉伯数字,yes or no,默认yes

    # request.set_vocabulary_id('')     # 设置热词表id,若不存在则不填写,否则会报错

    request.set_need_word_info('no')    # 设置是否需要word_infoyes or no, 默认no

 

    # step3 选择连接模式

    # rasr_client.short_stream_connect(request)       # 流式一句话模式

    # rasr_client.sentence_stream_connect(request)    # 实时语音识别单句模式

    rasr_client.continue_stream_connect(request)    # 实时语音识别连续模式

 

    # step4 发送音频

    rasr_client.send_start()

    # 连续模式下,可多次发送音频,发送格式为byte数组

    with open(path, 'rb') as f:

        data = f.read()

        rasr_client.send_audio(data)    # 可选byte_lensleep_time参数,建议使用默认值

    rasr_client.send_end()

 

    # step5 关闭客户端,使用完毕后一定要关闭,否则服务端20s内没收到数据会报错并主动断开。

    rasr_client.close()

 

 

if __name__ == '__main__':

    rasr_example()

5      语音合成

前提条件

1、在保证华为云账号余额充足或已购买套餐包的情况下,语音交互服务无需申请即可使用。

https://support.huaweicloud.com/sdkreference-sis/sis_05_0003.html

2、进行 AK/SK 认证,并妥善保管 AK/SK 信息。

https://support.huaweicloud.com/sdkreference-sis/sis_05_0004.html#sis_05_0004__table47650414583

3、下载相应的 Python SDK

https://support.huaweicloud.com/sdkreference-sis/sis_05_0056.html

4、确保已按照 Python 环境配置细则配置完毕,注意Python SDK 仅支持Python3

示例代码

以下示例代码对应SDK中的\cn_demo\tts_demo.py,可进入 SDK 直接运行。

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

from huaweicloud_sis.client.tts_client import TtsCustomizationClient

from huaweicloud_sis.bean.tts_request import TtsCustomRequest

from huaweicloud_sis.bean.sis_config import SisConfig

from huaweicloud_sis.exception.exceptions import ClientException

from huaweicloud_sis.exception.exceptions import ServerException

import json

 

 

def ttsc_example():

    """ 语音合成demo """

    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

    text = ''           # 待合成文本,不超过500

    path = ''           # 保存路径,如D:/test.wav。 可在设置中选择不保存本地

 

    # step1 初始化客户端

    config = SisConfig()

    config.set_connect_timeout(10)       # 设置连接超时,单位s

    config.set_read_timeout(10)          # 设置读取超时,单位s

    # 设置代理,使用代理前一定要确保代理可用。 代理格式可为[host, port] [host, port, username, password]

    # config.set_proxy(proxy)

    ttsc_client = TtsCustomizationClient(ak, sk, region, project_id, sis_config=config)

 

    # step2 构造请求

    ttsc_request = TtsCustomRequest(text)

    # 设置请求,所有参数均可不设置,使用默认参数

    # 设置属性字符串, language_speaker_domain, 默认chinese_xiaoyan_common, 参考api文档

    ttsc_request.set_property('chinese_xiaoyan_common')

    # 设置音频格式,默认wav,可选mp3pcm

    ttsc_request.set_audio_format('wav')

    # 设置采样率,8000 or 16000, 默认8000

    ttsc_request.set_sample_rate('8000')

    # 设置音量,[0, 100],默认50

    ttsc_request.set_volume(50)

    # 设置音高, [-500, 500], 默认0

    ttsc_request.set_pitch(0)

    # 设置音速, [-500, 500], 默认0

    ttsc_request.set_speed(0)

    # 设置是否保存,默认False

    ttsc_request.set_saved(True)

    # 设置保存路径,只有设置保存,此参数才生效

    ttsc_request.set_saved_path(path)

 

    # step3 发送请求,返回结果。如果设置保存,可在指定路径里查看保存的音频。

    result = ttsc_client.get_ttsc_response(ttsc_request)

    print(json.dumps(result, indent=2, ensure_ascii=False))

if __name__ == '__main__':

    try:

        ttsc_example()

    except ClientException as e:

        print(e)

    except ServerException as e:

        print(e)

6      录音文件识别

前提条件

1、在保证华为云账号余额充足或已购买套餐包的情况下,语音交互服务无需申请即可使用。

https://support.huaweicloud.com/sdkreference-sis/sis_05_0003.html

2、进行 AK/SK 认证,并妥善保管 AK/SK 信息。

3、进入语音交互服务控制台服务授权页面,打开授权开关,允许录音文件识别服务使用您存储在对象存储服务上的数据。

https://console.huaweicloud.com/sis/#/sis/auth

4、准备好待识别的录音文件,注意录音时长不超过5小时,文件大小不超过300M

https://console.huaweicloud.com/obs/#/obs/manager/buckets

5、进入对象存储服务控制台,创建桶,并将录音文件上传,记录文件的OBS链接如下图所示:

6、下载相应的 Python SDK

7、确保已按照 Python 环境配置细则配置完毕,注意Python SDK 仅支持Python3

示例代码

以下示例代码对应SDK中的\cn_demo\lasr_demo.py,可进入 SDK 直接运行。

 

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

 

from huaweicloud_sis.client.asr_client import AsrCustomizationClient

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.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

 

"""

    请正确填写音频格式和模型属性字符串

  1. 音频格式一定要相匹配.

         例如wav音频,格式是auto。具体参考api文档。

         例如音频是pcm格式,并且采样率为8k,则格式填写pcm8k16bit

         如果返回audio_format is invalid 说明该文件格式不支持。具体支持哪些音频格式,需要参考一些api文档。

        

      2.音频采样率要与属性字符串的采样率要匹配。

         例如格式选择pcm16k16bit,属性字符串却选择chinese_8k_common, 则会返回'audio_format' is not match model

         例如wav本身是16k采样率,属性选择chinese_8k_common, 同样会返回'audio_format' is not match model

"""

 

 

# 录音文件识别参数,音频文件以obs连接方式传入(即先需要将音频传送到华为云的obs

obs_url = ''                # 音频obs连接

obs_audio_format = ''       # 音频格式,如auto等,详见api文档

obs_property = ''           # language_sampleRate_domain, chinese_8k_common,详见api文档

 

 

def lasr_example():

    """ 录音文件识别示例 """

    # step1 初始化客户端

    config = SisConfig()

    config.set_connect_timeout(10)       # 设置连接超时

    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')

    # 设置是否将语音中数字转写为阿拉伯数字,yes or no,默认yes

    asrc_request.set_digit_norm('yes')

    # 设置 是否需要分析信息,True or False, 默认False。 只有need_analysis_info生效,diarizationchannelemotionspeed才会生效

    # 目前仅支持8k模型,详见api文档

    asrc_request.set_need_analysis_info(True)

    # 设置是否需要话者分离,默认True,需要need_analysis_info设置为True才生效。

    asrc_request.set_diarization(True)

    # 设置声道信息, 一般都是单声道,默认为MONO,需要need_analysis_info设置为True才生效

    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)

    # 设置回调地址,设置后音频转写结果将直接发送至回调地址。请务必保证地址可联通。

    # asrc_request.set_callback_url('')

    # 设置是否添加热词表id,没有则不填

    # asrc_request.set_vocabulary_id(None)

    # 设置是否需要word_infoyes or no, 默认no

    asrc_request.set_need_word_info('no')

 

    # step3 发送请求,获取job_id

    job_id = asr_client.submit_job(asrc_request)

 

    # step4 根据job_id轮询,获取结果。

    status = 'WAITING'

    count = 0   # 2s查询一次,尝试2000次,即4000s。如果音频很长,可适当考虑加长一些。

    while status != 'FINISHED' and count < 2000:

        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

    if status != 'FINISHED':

        print('录音文件识别未在 %d 内获取结果,job_id %s' % (count, job_id))

    # resultjson格式

    print(json.dumps(result, indent=2, ensure_ascii=False))

 

 

if __name__ == '__main__':

    try:

        lasr_example()

    except ClientException as e:

        print(e)

    except ServerException as e:

        print(e)

7      一句话识别

前提条件

1、在保证华为云账号余额充足或已购买套餐包的情况下,语音交互服务无需申请即可使用。

 

2、进行 AK/SK 认证,并妥善保管 AK/SK 信息。

 

3、下载相应的 Python SDK

 

4、确保已按照 Python 环境配置细则配置完毕,注意Python SDK 仅支持Python3

 

5、准备好待识别的音频文件。

 

示例代码

以下示例代码对应SDK中的\cn_demo\sasr_demo.py,可进入 SDK 直接运行。

 

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

 

from huaweicloud_sis.client.asr_client import AsrCustomizationClient

from huaweicloud_sis.bean.asr_request import AsrCustomShortRequest

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

 

# 鉴权参数

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

 

"""

    请正确填写音频格式和模型属性字符串

  1. 音频格式一定要相匹配.

         例如wav音频,格式是wav。具体参考api文档。

         例如音频是pcm格式,并且采样率为8k,则格式填写pcm8k16bit

         如果返回audio_format is invalid 说明该文件格式不支持。具体支持哪些音频格式,需要参考一些api文档。

 

      2.音频采样率要与属性字符串的采样率要匹配。

         例如格式选择pcm16k16bit,属性字符串却选择chinese_8k_common, 则会返回'audio_format' is not match model

         例如wav本身是16k采样率,属性选择chinese_8k_common, 同样会返回'audio_format' is not match model

"""

 

# 一句话识别参数,以音频文件的base64编码传入,1min以内音频

path = ''  # 文件位置, 需要具体到文件,如D:/test.wav

path_audio_format = ''  # 音频格式,如wav等,详见api文档

path_property = ''  # language_sampleRate_domain, chinese_8k_common,详见api文档

 

 

def sasr_example():

    """ 一句话识别示例 """

    # step1 初始化客户端

    config = SisConfig()

    config.set_connect_timeout(10)  # 设置连接超时

    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 构造请求

    data = io_utils.encode_file(path)

    asr_request = AsrCustomShortRequest(path_audio_format, path_property, data)

    # 所有参数均可不设置,使用默认值

    # 设置是否添加标点,yes or no,默认no

    asr_request.set_add_punc('yes')

    # 设置是否将语音中数字转写为阿拉伯数字,yes or no,默认yes

    asr_request.set_digit_norm('yes')

    # 设置是否添加热词表id,没有则不填

    # asr_request.set_vocabulary_id(None)

    # 设置是否需要word_infoyes or no, 默认no

    asr_request.set_need_word_info('no')

 

    # step3 发送请求,返回结果,返回结果为json格式

    result = asr_client.get_short_response(asr_request)

    print(json.dumps(result, indent=2, ensure_ascii=False))

 

 

if __name__ == '__main__':

    try:

        sasr_example()

    except ClientException as e:

        print(e)

    except ServerException as e:

        print(e)

8      呈现效果



9      体验插件课程

https://classroom.devcloud.huaweicloud.com/MOOCCourseStudy/join/ef4ebc3dbaa246ff995f75022cac8cb9

识别下方二维码立即体验

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。