开发准备
1. 支持 iOS 9.0 及以上版本。
2. 需要手机能够连接网络(3/4/5G 或 Wi-Fi 网络等)。
3. 语音合成 iOS SDK。
4. 服务端 API文档。
导入 SDK
直接导入
将 SDK 文件夹内的 QCloudRealTTS.xcframework、VoiceCommon.framework 添加到项目的链接库中即可。
CocoaPods 导入
如果已有 podfile 文件,添加补充即可:
pod 'QCloudRealTTS'
如果没有 podfile:
确保已安装 CocoaPods(终端执行
pod --version 检查)。podfile 是 CocoaPods 的配置文件,需要放在项目的根目录(与 .xcodeproj 文件同级目录)。
编辑 podfile 内容,编辑完成后保存。
platform :ios, '9.0' # 设置最低支持的 iOS 版本target 'YourAppTargetName' do # 将 YourAppTargetName 替换为你的实际 Target 名称# 添加 QCloudRealTTS 依赖pod 'QCloudRealTTS'end
执行
pod install。安装完成后,不再使用 .xcodeproj 文件,而是使用新生成的 .xcworkspace 文件打开项目。
接口说明
QCloudRealTTSController
实时语音合成控制器
@protocol QCloudRealTTSController <NSObject>/** 取消合成任务*/-(void)cancel;@end
QCloudRealTTSConfig
实时语音合成配置
@interface QCloudRealTTSConfig : NSObject@property (nonnull) NSString* appID; // 腾讯云 appid@property (nonnull) NSString* secretID; // 腾讯云 secretID@property (nonnull) NSString* secretKey; // 腾讯云 secretKey@property (nonnull) NSString* token; // 临时token,不为空字符时生效,使用临时token时,secretId,secretKey需为临时密钥@property int connectTimeout; // > 0 生效,单位为ms,默认为0/** 设置传入后台的api的参数,参数可参考文档https://cloud.tencent.com/document/product/1073/94308 说明* @param key 参数名称* @param value 参数值,参数值为nil会删除已设置的key*/- (QCloudRealTTSConfig*)setApiParam:(nonnull NSString*)key value:(nullable NSString*)value;- (QCloudRealTTSConfig*)setApiParam:(nonnull NSString*)key ivalue:(NSInteger)value;- (QCloudRealTTSConfig*)setApiParam:(nonnull NSString*)key fvalue:(float)value;- (QCloudRealTTSConfig*)setApiParam:(nonnull NSString*)key bvalue:(BOOL)value;/** 创建实时语音合成控制器* @param listener 用于回调合成任务的接口及中间信息*/- (id<QCloudRealTTSController>)build:(id<QCloudRealTTSListener>)listener;@end
QCloudRealTTSListener
实时语音合成结果回调
@protocol QCloudRealTTSListener <NSObject>/** 合成任务结束*/-(void)onFinish;/** 合成任务出错* @param error 错误信息*/-(void)onError:(nonnull NSError*)error;@optional/** 合成日志* @param value 日志信息* @param level 日志等级*/-(void)onLog:(nonnull NSString*)value level:(int)level;/** 服务端返回的音频数据,可参考文档https://cloud.tencent.com/document/product/1073/94308 说明* @param data 服务端返回的音频数据*/-(void)onData:(nonnull NSData*)data;/** 服务端返回的json数据,可参考文档https://cloud.tencent.com/document/product/1073/94308 说明* @param msg 服务端返回的json数据*/-(void)onMessage:(nonnull NSString*)msg;@end
错误码
合成任务的 NSError 仅通过 QCloudStreamTTSListener 的 onError 回调出来。
enum : NSInteger {REALTTSPARAMETERERROR = 2000, // 参数错误,SDK配置项设置有问题,一般为授权信息没有设置REALTTSWEBSOCKETERROR = 2001, // websocket错误,网络问题REALTTSCANCELERROR = 2002, // 取消错误,成功调用cancel返回此错误REALTTSSERVERERROR = 2003, // 服务端返回错误,可通过取userInfo中的Message获取详细信息};
SDK log 组件设置
用于宿主层对 SDK log 等级设置以及本地逻辑、回调功能实现。导入 <VoiceCommon/QCloudVoiceLogger.h>
// (可选)设置log等级,默认为VOICE_SDK_ERROR_LEVEL[QCloudVoiceLogger setLoggerLevel:VOICE_SDK_DEBUG_LEVEL];// (可选)将log写入本地磁盘,默认为 NO[QCloudVoiceLogger needLogFile:YES];// (可选)注册log回调[QCloudVoiceLogger registerLoggerListener:^(VoiceLoggerLevel loggerLevel, NSString * _Nonnull logInfo) {NSLog(@"[ASR]-%@",logInfo);} withNativeLog:YES];
配置说明
#import <QCloudRealTTS/QCloudRealTTSController.h>//配置接口:- (QCloudRealTTSConfig*)setApiParam:(nonnull NSString*)key value:(nullable NSString*)value;// key常量说明://合成语音的源文本,按 UTF-8 编码统一计算。中文最大支持600个汉字(全角标点符号算一个汉字);英文最大支持1800个字母(半角标点符号算一个字母)。kRealText;//若使用一句话版声音复刻,请填入固定值“200000000”。kRealVoiceType;//音量大小,范围[-10,10],对应音量大小。默认为0,代表正常音量,值越大音量越高。kRealVolume;/**语速,范围:[-2,6],分别对应不同语速:-2:代表0.6倍-1:代表0.8倍0:代表1.0倍(默认)1:代表1.2倍2:代表1.5倍6:代表2.5倍*/kRealSpeed;/**音频采样率:24000:24k(部分音色支持,请参见 音色列表)16000:16k(默认)8000:8k*/kRealSampleRate;/**返回音频格式:pcm:返回二进制 pcm 音频mp3:返回二进制 mp3 音频*/kRealCodec;//是否开启时间戳功能,默认为 false。kRealEnableSubtitle;/**控制合成音频的情感,仅支持多情感音色使用。取值:neutral(中性)、sad(悲伤)、happy(高兴)、angry(生气)、fear(恐惧)、news(新闻)、story(故事)、radio(广播)、poetry(诗歌)、call(客服)、sajiao(撒娇)、disgusted(厌恶)、amaze(震惊)、peaceful(平静)、exciting(兴奋)、aojiao(傲娇)、jieshuo(解说)示例值:neutral*/kRealEmotionCategory;//控制合成音频情感程度,取值范围为 [50,200],默认为 100;只有 EmotionCategory 不为空时生效。kRealEmotionIntensity;/**断句敏感阈值,取值范围:[0,1,2],默认值:0该值越大越不容易断句,模型会更倾向于仅按照标点符号断句。此参数建议不要随意调整,可能会影响合成效果。*/kRealSegmentRate;//一句话版声音复刻音色 ID,使用一句话版声音复刻音色时需填写。kRealFastVoiceType;
说明与注意
1. SDK 仅提供语音合成服务,宿主层接入 SDK 后可自行实现播放器功能,具体示例代码可参考 SDK 附带的 demo。
2. SDK 支持分批传入文本进行合成。