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