import Foundation /** * TTS事件类型枚举 */ @objc public enum TtsEventType: Int { /** 开始合成 */ case synthesisStarted /** 合成完成 */ case synthesisCompleted /** 合成取消 */ case synthesisCanceled /** 发生错误 */ case error } /** * TTS事件数据类 */ @objc public class TtsEvent: NSObject { public let type: TtsEventType public let params: [String: Any] public init(type: TtsEventType, params: [String: Any] = [:]) { self.type = type self.params = params } } /** * TTS事件监听协议 */ @objc public protocol TtsEventListener { /** * 当发生TTS事件时调用 * * @param event TTS事件 */ @objc(onTtsEvent:) func onEvent(_ event: TtsEvent) } /** * 音频数据监听协议 */ @objc public protocol AudioDataListener { /** * 当接收到音频数据时调用 * * @param data 音频数据字节数组 */ func onAudioData(_ data: Data) } /** * TTS服务通用协议 * * 定义了语音合成服务的标准接口,可用于不同提供商的实现,如微软Azure、火山语音等 */ @objc public protocol ITtsService { /** * 初始化语音合成服务 * * @param ttsAppId 服务应用ID * @param ttsAppToken 服务访问令牌/订阅密钥 * @param ttsResource 服务资源ID/区域(可选) * @param language 语言代码,如"zh-CN" * @return 是否初始化成功 */ func initialize(ttsAppId: String, ttsAppToken: String, ttsResource: String, language: String) -> Bool /** * 设置语音角色 * * @param voiceName 语音角色名称(不同服务的语音角色命名可能不同) * @return 是否设置成功 */ func setVoice(_ voiceName: String) -> Bool /** * 单次播放文本(非流式) * * @param text 要合成的文本 * @return 是否成功开始合成 */ func speakOnce(_ text: String) -> Bool /** * 流式合成 * 在流式场景下合成并播放文本,适用于连续的文本输入 * * @param text 要合成的文本片段 * @return 是否成功处理 */ func speakStream(_ text: String) -> Bool /** * 刷新并播放流式文本缓冲区中的剩余内容 * * @return 是否成功处理 */ func flushStream() -> Bool /** * 停止当前合成和播放 * * @return 是否成功停止 */ func stop() -> Bool /** * 释放资源 * 在不再需要服务时调用,释放底层资源 */ func dispose() /** * 添加TTS事件监听器 * * @param listener 事件监听器 */ func addListener(_ listener: TtsEventListener) /** * 移除TTS事件监听器 * * @param listener 要移除的事件监听器 */ func removeListener(_ listener: TtsEventListener) /** * 添加音频数据监听器 * * @param listener 音频数据监听器 */ func addAudioDataListener(_ listener: AudioDataListener) /** * 移除音频数据监听器 * * @param listener 要移除的音频数据监听器 */ func removeAudioDataListener(_ listener: AudioDataListener) }