import 'dart:async'; /// 语音合成服务接口 abstract class TtsService { /// 当前选择的语音 String get currentVoice; /// 当前是否正在播放 bool get isSpeaking; /// TTS事件流,用于监听语音合成事件 Stream get onEvent; /// 初始化语音合成服务 Future initialize({ List? supportedLanguages, }); /// 设置语音 Future setVoice(String voiceName); /// 单次播放文本,完成后返回 Future speakOnce(String text); /// 将文本加入播放队列,支持连续播放多段文本 Future speakStream(String text); /// 播放队列中剩余文本 Future flushStream(); /// 停止播放 Future stop(); /// 释放资源 Future dispose(); /// 切换音频输出设备 Future setAudioOutputDevice(int type); } /// TTS事件类型 enum TtsEventType { /// 开始播放 started, /// 播放完成 completed, /// 播放取消 canceled, /// 播放错误 error, } /// TTS事件 class TtsEvent { /// 事件类型 final TtsEventType type; /// 错误信息(仅在 error 类型中有效) final String error; TtsEvent({ required this.type, this.error = '', }); /// 创建错误事件的快捷构造函数 factory TtsEvent.error(String errorMessage) { return TtsEvent( type: TtsEventType.error, error: errorMessage, ); } /// 检查是否为错误 bool get isError => type == TtsEventType.error; @override String toString() { return 'TtsEvent{type: $type, error: $error}'; } }