@kajidog/mcp-tts-voicevox
Version:
VOICEVOX integration for MCP - Text-to-Speech server using VOICEVOX engine
111 lines • 3.61 kB
TypeScript
import { VoicevoxApi } from "../api";
import { AudioQuery } from "../types";
import { QueueItem, QueueItemStatus, QueueEventType, QueueEventListener, QueueManager } from "./types";
import { AudioFileManager } from "./file-manager";
import { AudioGenerator } from "./audio-generator";
/**
* VOICEVOXキュー管理クラス
* 音声合成タスクのキュー管理と実行を担当
*/
export declare class VoicevoxQueueManager implements QueueManager {
private queue;
private isPlaying;
private isPaused;
private prefetchSize;
private currentPlayingItem;
private api;
private fileManager;
private eventManager;
private audioGenerator;
private audioPlayer;
/**
* コンストラクタ
* @param apiInstance VOICEVOX APIクライアントのインスタンス
* @param prefetchSize 事前生成するアイテム数
*/
constructor(apiInstance: VoicevoxApi, prefetchSize?: number);
/**
* キューに新しいテキストを追加
*/
enqueueText(text: string, speaker: number): Promise<QueueItem>;
/**
* キューに音声合成用クエリを追加
* @param query 音声合成用クエリ
* @param speaker 話者ID
* @returns 作成されたキューアイテム
*/
enqueueQuery(query: AudioQuery, speaker: number): Promise<QueueItem>;
/**
* キューからアイテムを削除
* @param itemId 削除するアイテムのID
* @returns 削除に成功したかどうか
*/
removeItem(itemId: string): Promise<boolean>;
/**
* キューをクリア
*/
clearQueue(): Promise<void>;
startPlayback(): Promise<void>;
pausePlayback(): Promise<void>;
resumePlayback(): Promise<void>;
/**
* 次のアイテムを再生する
* 最初のREADY状態のアイテムを再生します
*/
playNext(): Promise<void>;
/**
* イベントリスナーを追加
*/
addEventListener(event: QueueEventType, listener: QueueEventListener): void;
/**
* イベントリスナーを削除
*/
removeEventListener(event: QueueEventType, listener: QueueEventListener): void;
/**
* 現在のキュー内のアイテムを取得
*/
getQueue(): QueueItem[];
/**
* 特定のアイテムの状態を取得
*/
getItemStatus(itemId: string): QueueItemStatus | null;
/**
* キュー処理実行
* キューにある音声の生成と再生を処理
*/
private processQueue;
/**
* 次のアイテムの音声を事前に生成 (プリフェッチ)
* @private
*/
private prefetchAudio;
/**
* アイテムの状態を更新し、イベントを発火
* @param item 状態を更新するアイテム
* @param status 新しい状態
* @private
*/
private updateItemStatus;
/**
* バイナリーデータを一時ファイルに保存
* @param audioData 音声バイナリーデータ
* @returns 保存した一時ファイルのパス
*/
saveTempAudioFile(audioData: ArrayBuffer): Promise<string>;
/**
* AudioGeneratorインスタンスを取得
* @returns AudioGeneratorインスタンス
*/
getAudioGenerator(): AudioGenerator;
/**
* FileManagerインスタンスを取得
* @returns AudioFileManagerインスタンス
*/
getFileManager(): AudioFileManager;
/**
* API インスタンスを取得
* @returns VoicevoxApi インスタンス
*/
getApi(): VoicevoxApi;
}
//# sourceMappingURL=manager.d.ts.map