UNPKG

uniapp-text-to-speech

Version:

uniapp 文本转语音

196 lines (195 loc) 4.09 kB
/** * 语音合成工具类 * @class SpeechSynthesisUtil * @description 用于处理文字转语音的工具类,包含音频播放、合成等功能 */ export declare enum EventType { STATE_CHANGE = "stateChange", SYNTHESIS_START = "synthesisStart", SYNTHESIS_END = "synthesisEnd", AUDIO_PLAY = "audioPlay", AUDIO_END = "audioEnd", ERROR = "error", PROGRESS = "progress", PAUSE = "pause", RESUME = "resume" } interface State { isInterrupted: boolean; isStartPlayQueue: boolean; isPlaying: boolean; isEnded: boolean; isError: boolean; isPaused: boolean; isSynthesizing: boolean; needsUserInteraction: boolean; } interface SpeechSynthesisOptions { API_KEY: string; GroupId: string; MAX_QUEUE_LENGTH?: number; modelConfig?: any; } declare class SpeechSynthesisUtil { private API_KEY; private GroupId; private modelConfig; private audioContext; private audioQueue; private audioTextQueue; private state; private fileManager; private pendingAudioUrl; private eventListeners; private timer; private modelContent; private MAX_QUEUE_LENGTH; private totalAudioCount; constructor(options: SpeechSynthesisOptions); /** * 文字转语音方法 * @param text - 需要转换的文本 */ textToSpeech(text: string): Promise<void>; /** * 请求语音合成 * @param text - 需要合成的文本 * @private */ private requestSynthesis; /** * 处理音频响应数据 * @param response - 响应数据 * @param text - 对应的文本内容 * @private */ private processAudioResponse; /** * 写入音频文件 * @param filePath - 文件路径 * @param buffer - 音频数据 * @private */ private writeAudioFile; /** * 开始播放音频队列 * @private */ private playAudioQueue; /** * 安全播放方法 * @private */ private safePlay; /** * 手动触发播放 */ manualPlay(): Promise<void>; /** * 绑定音频事件 * @private */ private bindAudioEvents; /** * 处理音频播放开始事件 * @private */ private handleAudioPlay; /** * 处理音频播放结束事件 * @private */ private handleAudioEnd; /** * 处理音频错误事件 * @private */ private handleAudioError; /** * 销毁音频上下文 * @private */ private destroyAudioContext; /** * 设置状态 * @private */ private setState; /** * 获取当前状态 */ getState(): State; /** * 重置所有状态 */ reset(): void; /** * 添加事件监听 */ on(event: EventType, callback: Function): void; /** * 移除事件监听 */ off(event: EventType, callback: Function): void; /** * 触发事件 * @private */ private emit; /** * 开始计时 * @private */ private startTimer; /** * 结束计时并返回时(毫秒) * @private */ private endTimer; /** * 批量处理文本 */ processText(text: string): Promise<void>; /** * 处理文本分段 * @private */ private processContent; /** * 强制处理剩余文本 */ flushRemainingText(): Promise<void>; /** * 重置文本处理状态 */ resetTextProcessor(): void; /** * 暂停播放 */ pause(): void; /** * 恢复播放 */ resume(): void; /** * 切换播放/暂停状态 */ togglePlay(): void; /** * 如果需要,开始播放音频 * @private */ private startPlayingIfNeeded; /** * 处理错误 * @private */ private handleError; private calculateProgress; /** * 判断是否是合适的分段点 * @private */ private isGoodSplitPoint; } export default SpeechSynthesisUtil;