@coze/api
Version:
Official Coze Node.js SDK for seamless AI integration into your applications | 扣子官方 Node.js SDK,助您轻松集成 AI 能力到应用中
77 lines (76 loc) • 2.32 kB
TypeScript
import { type WsChatEventData } from '../types';
import { type AudioCodec, type ConversationAudioSentenceStartEvent } from '../../index';
/**
* 音字同步器配置选项
*/
export interface SentenceSynchronizerOptions {
/**
* 事件发射器,用于向外部发送事件
*/
eventEmitter: (eventName: string, eventData: WsChatEventData) => void;
}
/**
* 音字同步器 - 负责管理音频播放与文本显示的同步
*/
export declare class SentenceSynchronizer {
/** 输出音频采样率 */
private outputAudioSampleRate;
/** 输出音频编码格式 */
private outputAudioCodec;
/** 句子列表队列 */
private sentenceList;
/** 首个音频delta的时间戳(用于计算实际经过的时间)*/
private firstAudioDeltaTime;
private currentSentenceIndex;
private sentenceSwitchTimer;
private eventEmitter;
/**
* 构造函数
* @param options 同步器配置选项
*/
constructor(options: SentenceSynchronizerOptions);
/**
* 设置首个句子首个音频 Delta 时间
*/
setFirstAudioDeltaTime(): void;
/**
* 处理音频完成事件,标记最后一个句子
*/
handleAudioCompleted(): void;
/**
* 处理句子开始事件
* @param event 句子开始事件
*/
handleSentenceStart(event: ConversationAudioSentenceStartEvent): void;
/**
* 更新指定句子的音频时长
* @param sentenceId 句子ID
* @param duration 音频时长增量
*/
updateAudioDuration(sentenceId: string, duration: number): void;
/**
* 更新最后一个句子的音频时长
* @param duration 音频时长增量
* @returns 是否更新成功
*/
updateLatestSentenceAudioDuration(contentLength: number): boolean;
/**
* 安排句子切换
*/
private scheduleSentenceSwitch;
/**
* 发送客户端句子开始事件
* @param sentenceItem 句子开始事件
*/
private emitSentenceStart;
/**
* 发送客户端句子结束事件
*/
private emitSentenceEnd;
/**
* 重置句子同步状态
*/
resetSentenceSyncState(): void;
setOutputAudioConfig(outputAudioSampleRate: number, outputAudioCodec: AudioCodec): void;
}
export default SentenceSynchronizer;