语音交互服务 SIS
语音交互服务 SIS
- 最新动态
- 服务公告
- 产品介绍
- 快速入门
- 用户指南
- SDK参考
- API参考
-
常见问题
- 产品咨询类
- 计费类
-
API使用类
- 如何查看接口调用量
- 为什么WebSocket一直连接不成功
- 为什么会出现识别结果非常差的情况
- 如何使用Websocket调用实时语音识别
- 有哪些途径可以使用语音交互的API
- 返回状态正常,但识别结果为空
- Token消息体中user name,domain name和project name分别指的是什么
- 如何调整并发
- 为什么录音文件识别出现重复转写结果
- 调用语音交互的API显示auth failed
- 调用语音交互的API超时怎么处理(connect timeout)
- 为什么服务端返回OBS链接不可用(data url is unreachable)
- 语音合成的base64编码如何使用
- 录音文件识别多久可以返回结果
- 语音合成能不能支持返回立体音(双声道)格式的音频
- 如何解决“The silence time is too long, and the audio will not be recognized”报错
- Token怎么获取
- 如何申请公测
- 如何修改发音人
- 实时语音识别多人同时使用,如何区分各自识别结果
- 使用HTML5 Websocket API发送websocket请求如何携带token
- 如何查看实时语音识别的中间结果
- SDK使用类
- 错误码类
- 部署类
- 区域与可用区
- 权限类
- 服务声明类
- 文档下载
- 通用参考
链接复制成功!
使用实时语音合成
前提条件
- 确保已按照配置CPP环境(Windows)配置完毕。
- 请参考SDK(websocket)获取最新版本SDK包。
初始化Client
初始化RttsClient,其参数包括AuthInfo
请求参数
请求类为RttsRequest,详见表 RttsRequest。
通过set方法可以设置具体参数,详见表 RttsRequest设置参数
方法名称 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
SetAudioFormat |
否 |
String |
设置语音格式,默认pcm。 |
SetAudioProperty |
否 |
String |
设置语音合成特征字符串,{language}_{speaker}_{domain},即“语种_人员标识_领域”。默认chinese_xiaoyan_common 。详见API文档。 |
SetSampleRate |
否 |
String |
设置采样率:8000、16000,默认8000。 |
SetPitch |
否 |
Integer |
设置音高,-500~500,默认0。 |
SetVolume |
否 |
Integer |
设置音量,0~100,默认50。 |
SetSpeed |
否 |
Integer |
设置语速,-500~500,默认0。 |
示例代码
如下示例仅供参考,最新代码请前往SDK(websocket)章节获取并运行。
#include "IoUtil.h" #include "RttsClient.h" #include "RttsRequest.h" void OnRttsConnect() { std::cout << "now rtts client Connect success" << std::endl; } void OnRttsStart(std::string text) { std::cout << "now rtts client receive start response: " << text << std::endl; } void OnRttsEnd(std::string text) { std::cout << "now rtts client receive end response: " << text << std::endl; } void OnRttsClose() { std::cout << "now rtts client receive Close" << std::endl; } void OnRttsError(std::string text) { std::cout << "now rtts client receive error: " << text << std::endl; } void OnRttsBinary(std::string binaryData) { // data content can be avaliable by data() method, data length can be avaliable by size() method // const char* data = binaryData.data(); // int dataLength = binaryData.size(); std::cout << "now rtts client receive binary data " << binaryData.size() << std::endl; } void RttsTest() { // 1. config parameter // 1.1 init authInfo // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; // 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK std::string ak = GetEnv("HUAWEICLOUD_SDK_AK"); std::string sk = GetEnv("HUAWEICLOUD_SDK_SK"); std::string region = ""; std::string projectId = ""; AuthInfo authInfo(ak, sk, region, projectId); // 1.2 config Connect parameter HttpConfig httpConfig; httpConfig.SetReadTimeout(20000); httpConfig.SetConnectTimeout(20000); // 1.3 config callback, callback function are optional, if not set, it will use function in RttsListner WebsocketService::ptr websocketServicePtr = websocketpp::lib::make_shared<WebsocketService>(); websocketServicePtr->SetOnConnectFunc(OnRttsConnect); // Connect success callback websocketServicePtr->SetOnStartFunc(OnRttsStart); // receive start response callback websocketServicePtr->SetOnEndFunc(OnRttsEnd); // receive end response callback websocketServicePtr->SetOnCloseFunc(OnRttsClose); // Close callback websocketServicePtr->SetOnErrorFunc(OnRttsError); // receive error callback websocketServicePtr->SetOnBinaryFunc(OnRttsBinary); // receive binary callback // 1.3 option, use RttsListener, which can save file; You can edit RttsListener.h to finish your own business //WebsocketService::ptr websocketServicePtr = websocketpp::lib::make_shared<WebsocketService>(); //RttsListener rttsListener; //rttsListener.SetSaved(true); //rttsListener.SetFilePath("d:/test5.pcm"); //websocketServicePtr->SetRttsListener(rttsListener); // 1.4 config request parameter std::string text = AnsiToUtf8("华为致力于把数字世界带入每个人每个家庭每个组织,构建万物互联的智能世界。"); RttsRequest request(text); request.SetAudioFormat("pcm"); request.SetVolume(50); request.SetSpeed(0); request.SetPitch(0); request.SetSampleRate("8000"); request.SetAudioProperty("chinese_xiaoyan_common"); // 2. init client RttsClient* rttsClient = new RttsClient(authInfo, websocketServicePtr, httpConfig); // 3. send request rttsClient->Synthesis(request); // wait for save file, if setSaved false in rttsListener or don't use rttsListener, it can be removed. std::this_thread::sleep_for(std::chrono::milliseconds(2000)); delete rttsClient; } int main(){ RttsTest(); return 0; }
父主题: CPP SDK(Windows)