You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

147 lines
3.3 KiB

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)
}