实时语音合成

最近更新时间:2026-02-12 10:36:22

我的收藏

开发准备

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获取详细信息
};
更多信息请参见 语音合成 API 文档

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 支持分批传入文本进行合成。