文章目录
- 前言
- 1.场景简介
- 2.代码解析
- 2.1语音合成
- 2.2 语音识别
前言
华为modelarts训练,能够面向三类用户提供解决AI开发支持。对于无AI基础的业务开发员,可以使用自动学习模型。全程无需写代码,一键启动训练&部署。对于AI初学者,使用预置的算法,少量的代码即可调用。对于AI深度玩家,可以使用modlearts内置的notebook,自研的MoXingSDK,简化代码。
modlearts内置了很多算法,这些算法我们可以直接调用。只需要少量的代码,即可实现功能。
如上图所示
华为云平台提供了一些使用场景。这些场景覆盖了图像处理,语音处理,和自然语言的处理。多个场景
1.场景简介
华为云上的语音交互服务中,有语音合成和语音识别服务,本实验的内容是定制版语音合成和定制版的一句话识别服务。
语音合成(Text To Speech,TTS),又称文语转换,是一种将文本转换成逼真语音的服务。语音合成以开放API(Application Programming Interface,应用程序编程接口)的方式提供给用户,用户通过实时访问和调用API获取语音合成结果,将用户输入的文字合成为音频。通过音色选择、自定义音量、语速,为企业和个人提供个性化的发音服务。
语音识别(Automatic Speech Recognition,ASR),将口述音频转换为文本。语音识别以开放API(Application Programming Interface,应用程序编程接口)的方式提供给用户,用户通过实时访问和调用API获取语音识别结果。当前语音识别提供了短语音识别和长语音识别功能,短语音识别对时长较短的语音识别速度更快,长语音识别对时长较长的录音文件转写效果更好。
一句话识别服务:可以实现1分钟以内、不超过4MB的音频到文字的转换。对于用户上传的完整的录音文件,系统通过处理,生成语音对应文字内容。
2.代码解析
载语音交互服务的
Python SDK data文件夹中的数据我们可以用,代码与data文件夹同级别即可,我们也可以使用自己的数据放在data文件夹中。
2.1语音合成
步骤 1 导入所需要的包
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
步骤 2 配置相关参数
ak = "***" #配置自己的ak
sk = "***" #配置自己的sk
project_id = "***" #配置自己的project_id
region = "cn-north-4" #默认使用北京-4区,对应的区域代码即为cn-north-4
步骤 3 配置数据和保存路径
text = '兽人永不为奴,除非包吃包住' # 待合成文本,不超过500字
path = 'test.wav' # 保存路径,可在设置中选择不保存本地
步骤 4 初始化客户端
config = SisConfig()
config.set_connect_timeout(5) # 设置连接超时,单位s
config.set_read_timeout(10) # 设置读取超时,单位s
ttsc_client = TtsCustomizationClient(ak, sk, region, project_id, sis_config=config)
步骤 5 构造请求
ttsc_request = TtsCustomRequest(text)
# 设置请求,所有参数均可不设置,使用默认参数
# 设置属性字符串, language_speaker_domain, 默认chinese_xiaoyan_common, 参考api文档
ttsc_request.set_property('chinese_xiaoyan_common')
# 设置音频格式,默认wav,可选mp3和pcm
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)
步骤 6 语音合成测试
#发送请求,返回结果。如果设置保存,可在指定路径里查看保存的音频。
result = ttsc_client.get_ttsc_response(ttsc_request)
print(json.dumps(result, indent=2, ensure_ascii=False))
trace_id代表服务内部的令牌,可用于在日志中追溯具体流程,调用失败无此字段,在某些错误情况下可能没有此令牌字符串;result代表调用成功表示识别结果,调用失败时无此字段。data代表语音数据,base64编码格式返回。
保存的语音数据如下:
2.2 语音识别
步骤和之前都是一样
返回结果
result = asr_client.get_short_response(asr_request)
print(json.dumps(result, indent=2, ensure_ascii=False))
输出结果
{
"trace_id": "3144bf30-c06d-42ea-b0ed-adb35751e866",
"result": {
"text": "兽人永不为奴,除非包吃包住。",
"score": 0.7765163653009842
}
}