完成语音交互API服务调用【玩转华为云】

举报
龙哥手记 发表于 2022/06/18 16:49:00 2022/06/18
【摘要】 用华为云EI语音交互服务,完成语音合成和语音识别任务
本文的主要内容有:
  • 一 语音交互是啥
  • 二 完成录音文件识别
  • 三 实验前准备好
  • 四 获取AK,SK及项目ID
  • 五 最后调服务

一 语音交互是啥

1.1 是个啥?

语音交互服务,简称为SIS,它是一种人机交互方式,用户能通过实时访问和调用API来获取语音交互结果。例如用户通过语音识别功能,将口述音频或者语音文件识别成可编辑的文本,同时也能支持通过语音合成功能将文本转换成逼真的语音等。适用场景如语音客服质检、会议记录、语音短消息、有声读物、电话回访等;

不信你用下就知道,识别很准确:https://www.huaweicloud.com/ei/experiencespace/sis.html

7.png

敲黑板:你可以调用API接口,把语音文件识别成可编辑的文本,然后返回JSON格式的识别结果,用户需要通过编码将识别结果对接到业务系统或保存为TXT、Excel等格式,如果熟悉Java,python更好上手;

1.2 支持哪些语言呢

支持中文普通话的识别和合成,其中语音识别还支持带方言口音的普通话识别以及方言(四川话、粤语和上海话)的识别;

  • 文本时间戳

    为音频转换结果生成特定的时间戳,从而通过搜索文本即可快速找到对应的原始音频;

  • 智能断句

    通过提取上下文相关语义特征,并结合语音特征,智能划分断句及添加标点符号,提升输出文本的可阅读性;

  • 中英文混合识别

    支持在中文句子识别中夹带英文字母、数字等,从而实现中、英文以及数字的混合识别;

  • 即时输出识别结果

    连续识别语音流内容,即时输出结果,并可根据上下文语言模型自动校正;

  • 自动静音检测

    对输入语音流进行静音检测,识别效率和准确率更高;

1.3 产品有啥优势

  • 识别准确率高

    采用最新一代语音识别技术,基于深度神经网络(Deep Neural Networks,简称DNN)技术,大大提高了抗噪性能,使识别准确率显著提升

  • 识别速度快

    把语言模型、词典和声学模型统一集成为一个大的神经网络,同时在工程上进行了大量的优化,大幅提升解码速度,使识别速度在业内处于领先地位

  • 多种识别模式

    支持多种实时语音识别模式,如流式识别、连续识别和实时识别模式,灵活适应不同应用场景

  • 定制化服务

    可定制特定垂直领域的语言层模型,可识别更多专有词汇和行业术语,进一步提高识别准确率

1.4 还能进行语音合成

语音合成支持多种音色,可调节语调,语速,音量。

产品优势

  • 多语种多音色

    中文普通话、男声、女声、童声自由切换,可以调整音量,语速;

  • 效果出色

    文本转换自然清晰,近乎真人发音,能够符合多样的应用场景;

1.5 语音交互的监控指标

本节说下语音交互服务上报云监控服务的监控指标的命名空间,包含监控指标列表和维度定义,用户可以通过云监控服务提供管理控制台或API接口来检索SIS服务产生的监控指标与告警信息;

8.png

二 完成录音文件识别

2.1 大致原理

录音文件识别接口,这个用于识别长录音文件,录音文件放在OBS(对象存储服务)或公网可访问的服务器上面,由于录音文件识别通常会需要较长的时间,所以识别是异步的,就是说接口分为创建识别任务和查询任务状态两个接口。或者创建识别任务接口创建任务完成后返回job_id参数,然后用户通过调用录音文件识别状态查询接口来获得转写状态和结果;

2.2 接口约束怎样

  • 录音时长不超过5小时,文件大小不超过300M
  • 需要将识别的录音文件存放在某服务上,可以通过URL访问
    • 推荐使用华为云OBS:授权配置请参见配置OBS服务,优先推荐使用与请求服务同一region的私有桶文件,如果region不一致,可考虑使用obs签名
    • 您也可以把录音文件放在自行搭建服务器上,提供下载文件的地址。URL不能使用IP地址,只能使用域名,请尽量避免中文
  • 音频转写时长受音频时长和排队任务数量影响,音频时长和理论返回时间可参见表 音频转写时长参考表。如果转写耗时比理论时延长,大概率表示当前时间段出现转写高峰,请耐心等待,我们承诺最大转写时长不超过6小时;

9.png

识别过后,结果只能保存72小时(从识别完成的时间算起)。那72小时后如果再访问,将会返回 "task id is not found"错误;

2.2 请求实例下面这样

敲黑板“endpoint”就是调用API的请求地址,不同服务不同区域的“endpoint”不同;

POST https://{endpoint}/v1/1609d8170cd86660a81281e5a3a03f8b/asr/transcriber/jobs

Request Header:
Content-Type: application/json
X-Auth-Token: MIINRwYJKoZIhvcNAQcCoIINODCCDTQCAQExDTALBglghkgBZQMEAgEwgguVBgkqhkiG...

Request Body:
{
  "config":
  {
    "audio_format": "auto",
    "property": "chinese_8k_common",
    "add_punc": "yes",
    "need_analysis_info":
    {
      "diarization": true,
      "channel": "LEFT_AGENT",
      "emotion": true
    },
    "need_word_info": "yes"
  },
  "data_url":"https://****_voip.obs.cn-north-4.myxxxcloud.com/VOIP/***.wav"
}

响应示例

状态码:200,成功后如下这样

{
"job_id": "567e6536-a89c-13c3-a882-826321939656"
}

状态码:400,失败响应如下这样

{
"error_code":"SIS.0002",
"error_msg":"***"
}

三 实验前准备好

本实验需用到语音交互服务中的语音合成API和实时语音识别API,在账户余额充足的情况下,无需开通即可直接调用接口并按需计费;

① 华为云控制台页面右上角账号处点击【我的凭证】

② 然后你记录下你对应区域的项目ID

③ 接着依次点击【访问密钥】、及【新增访问密钥】

四 获取AK,SK及项目ID

  • ④ 最后完成后会生成credentials.csv文件,然后点击“立即下载”,文件会下载到/home/user/Downloads/路径下,下载完成后,右击文件选择“用‘Pycharm’打开” ,可查看对应的AK、SK信息,这样咱们就能用,如下这样

5.png

6.png

五 最后调服务

5.1 首先下载工程

下包含语音交互Python版SDK的样例工程压缩文件至本地,然后并解压下。备注:里面的语音交互软件开发工具包,就是个SDK它是对语音交互服务提供的REST API进行的封装,来简化用户的开发工作。并且咱们用户直接调用 SIS SDK提供的接口函数即可将语音交互服务的各项能力集成到业务应用里面;

现在咱们双击实验操作桌面上的“Xfce终端”打开Terminal,执行如下命令,下就行了啊

wget https://sandbox-expriment-files.obs.cn-north-1.myhuaweicloud.com/huaweicloud-python-sdk-sis-1.0.0.rar 

然后执行如下命令,将SDK解压到本地

unrar x huaweicloud-python-sdk-sis-1.0.0.rar

5.2 导入工程

导入 Python SDK 这个工程,打开桌面预置的Pycharm软件,然后在左侧“File”页面单击“New Project”

Location>“huaweicloud-python-sdk-sis-1.0.0”, environment Location> “huaweicloud-python-sdk-sis-1.0.0/venv”找到这个定位

然后单击“Create”,弹出窗口单击“Create from Existing Sources”;

单然后单击Pycharm中的Terminal,输入下面指令来安装Python包管理工具setuptools,requests以及websocket-client
pip install --user setuptools requests websocket-client 

然后在该目录中,执行python setup.py install --user命令来安装Python SDK到开发环境;

python setup.py install --user

然后添加程序配置文件,“Add Configuration”->“+”->Name:“python”-> Path:“Python SDK默认解压目录路径:/home/user/huaweicloud-python-sdk-sis-1.0.0”-> OK

5.3 语音合成服务测试

就是种定制语音合成,是把一种将文本转换成逼真语音的服务。你能通过实时访问和调用API获取语音合成结果,把用户输入的文字合成为音频。然后通过音色选择、自定义音量、语速,为企业和个人提供个性化的发音服务,我的小爱简直直呼内行了啊!

首先打开 “demo”文件夹下“tts_customization_demo.py”, 从修改鉴权参数中的ak, sk,region和project_id,将其后面的内容改为步骤2“获取AK、SK、项目ID”中拿到的ak, sk和project_id,以及region改为“cn-north-4”;
同时配置数据和保存路径,文本为“I like you, do you like me?”,调用语音合成API在当前目录的demo/data 文件夹下生成“result.wav”文件
test=’I like you, do you like me?’
path=’data/result.wav’
点击黄色提示Install requirements, 切勿点击ignore否则导致实验失败

② 点击main函数旁运行按钮,就会弹出窗口并点击运行该文件如下这样

然后调用语音合成API,trace_id代表服务内部的令牌,可用在日志中追溯具体流程,调用失败无此字段,在某些错误情况下可能没有此令牌字符串;result代表调用成功,表示识别结果,调用失败时无此字段。data代表语音数据,base64编码格式返回就行;

然后就保存的语音数据如下这样:

5.4 语音识别服务测试

一句话识别接口,用于短语音的同步识别,这样能一次性上传整个音频,然后响应中即返回了识别结果了哈

你可以在Pycharm中打开 “demo”文件夹下“asr_customization_demo.py”, 修改代码中的ak, sk,region和project_id,将其后面的内容改为步骤2“获取AK、SK、项目ID”中拿到的ak, sk和project_id,以及region改为“cn-north-4”;

然后双击实验操作桌面上的“Xfce终端”打开Terminal,然后执行下面命令,并下载语音识别测试样例test.wav, 默认下载在home目录下

wget https://sandbox-expriment-files.obs.cn-north-1.myhuaweicloud.com/语音交互-test.wav -O 语音交互-test.wav

然后同时设置语音识别的音频文件的路径“/home/user/语音交互-test.wav”, 音频格式“wav”和识别语言“chinese_8k_common”如下这样

本实验不涉及OBS文件调用,所以在main函数处注释掉录音文件识别的函数,点击main函数边旁运行按钮,弹出窗口点击运行该文件如下,调用一句话语音识别API如下这样

出现如上结果,即表示调用语音识别API服务成功,将音频文件识别为”how do you do?”
(trace_id代表服务内部的令牌,可用于在日志中追溯具体流程,调用失败无此字段,在某些错误情况下可能没有此令牌字符串;result代表调用成功表示识别结果,调用失败时无此字段;text代表调用成功表示识别出的内容;score代表调用成功表示识别出的置信度(0-1之间),但是目前该值并没有参考意义;

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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