@coeiro-operator/audio 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,11 @@
1
+ # @coeiro-operator/audio
2
+
3
+ COEIRO Operator音声合成・再生モジュール
4
+
5
+ 内部パッケージです。直接のインストールは推奨されません。
6
+
7
+ COEIROINK APIとの通信、音声ストリーミング、リサンプリング機能を提供します。
8
+
9
+ ## ライセンス
10
+
11
+ MIT
@@ -0,0 +1,134 @@
1
+ /**
2
+ * src/say/audio-player.ts: 音声再生管理
3
+ * speakerライブラリによるネイティブ音声出力を担当
4
+ */
5
+ import type { AudioResult, Config } from './types.js';
6
+ export declare const forTests: {
7
+ mockSpeakerInstance: any;
8
+ };
9
+ export declare class AudioPlayer {
10
+ private synthesisRate;
11
+ private playbackRate;
12
+ private channels;
13
+ private bitDepth;
14
+ private echogardenInitialized;
15
+ private noiseReductionEnabled;
16
+ private lowpassFilterEnabled;
17
+ private lowpassCutoff;
18
+ private isInitialized;
19
+ private audioConfig;
20
+ private config;
21
+ /**
22
+ * AudioPlayerの初期化
23
+ */
24
+ constructor(config: Config);
25
+ /**
26
+ * デフォルトのaudio設定を取得
27
+ */
28
+ private getDefaultAudioConfig;
29
+ /**
30
+ * 動的バッファサイズの計算
31
+ */
32
+ private calculateOptimalBufferSize;
33
+ /**
34
+ * 音声生成時のサンプルレートを設定
35
+ */
36
+ setSynthesisRate(synthesisRate: number): void;
37
+ /**
38
+ * 再生時のサンプルレートを設定
39
+ */
40
+ setPlaybackRate(playbackRate: number): void;
41
+ /**
42
+ * ノイズ除去機能を有効/無効に設定
43
+ */
44
+ setNoiseReduction(enabled: boolean): void;
45
+ /**
46
+ * ローパスフィルターを有効/無効に設定
47
+ */
48
+ setLowpassFilter(enabled: boolean, cutoffFreq?: number): void;
49
+ /**
50
+ * Echogardenの初期化
51
+ */
52
+ private initializeEchogarden;
53
+ initialize(): Promise<boolean>;
54
+ /**
55
+ * 音声ストリームを再生(ストリーミング処理パイプライン)
56
+ */
57
+ playAudioStream(audioResult: AudioResult, bufferSize?: number): Promise<void>;
58
+ /**
59
+ * ストリーミング音声処理パイプライン
60
+ * 処理順序: 1) リサンプリング 2) ローパスフィルター 3) ノイズリダクション 4) Speaker出力
61
+ */
62
+ private processAudioStreamPipeline;
63
+ /**
64
+ * リサンプリング用Transform streamを作成
65
+ */
66
+ private createResampleTransform;
67
+ /**
68
+ * ローパスフィルター用Transform streamを作成
69
+ */
70
+ private createLowpassTransform;
71
+ /**
72
+ * ノイズリダクション用Transform streamを作成
73
+ */
74
+ private createNoiseReductionTransform;
75
+ /**
76
+ * 真のストリーミング音声再生(非同期ジェネレータから直接再生)
77
+ */
78
+ playStreamingAudio(audioStream: AsyncGenerator<AudioResult>, bufferSize?: number): Promise<void>;
79
+ /**
80
+ * 並列ストリーミング再生(最初のチャンクから再生開始、以降は自動継続)
81
+ */
82
+ playStreamingAudioParallel(audioStream: AsyncGenerator<AudioResult>): Promise<void>;
83
+ /**
84
+ * Speakerインスタンスを作成(環境変数によるモック対応)
85
+ */
86
+ private createSpeaker;
87
+ /**
88
+ * PCMデータを直接スピーカーに再生(改善版:Speakerインスタンス使い回し)
89
+ * synthesis/playbackレートが異なる場合は適切なSpeaker設定を使用
90
+ */
91
+ private playPCMData;
92
+ /**
93
+ * 音声ファイルを保存
94
+ */
95
+ saveAudio(audioBuffer: ArrayBuffer, outputFile: string): Promise<void>;
96
+ /**
97
+ * チャンク単位のローパスフィルター処理
98
+ */
99
+ private applyLowpassFilterToChunk;
100
+ /**
101
+ * チャンク単位のノイズリダクション処理
102
+ */
103
+ private applyNoiseReductionToChunk;
104
+ /**
105
+ * WAVヘッダーを除去してPCMデータを抽出
106
+ */
107
+ extractPCMFromWAV(wavBuffer: ArrayBuffer): Uint8Array;
108
+ /**
109
+ * クロスフェード処理を適用(改良版)
110
+ */
111
+ applyCrossfade(pcmData: Uint8Array, overlapSamples: number, isFirstChunk?: boolean): Uint8Array;
112
+ /**
113
+ * より自然なフェード曲線(smoothstep関数)
114
+ */
115
+ private smoothstep;
116
+ /**
117
+ * 無音PCMデータを生成
118
+ * @param durationMs 無音の長さ(ミリ秒)
119
+ * @param sampleRate サンプルレート(デフォルト:24000Hz)
120
+ * @returns 無音のPCMデータ
121
+ */
122
+ generateSilentPCM(durationMs?: number, sampleRate?: number): Uint8Array;
123
+ /**
124
+ * ドライバーウォームアップ用の無音再生
125
+ * 短い無音を再生してSpeakerドライバーを起動・安定化
126
+ */
127
+ warmupAudioDriver(): Promise<void>;
128
+ /**
129
+ * AudioPlayerのクリーンアップ(リソース解放)
130
+ * 長時間運用やシャットダウン時に呼び出し
131
+ */
132
+ cleanup(): Promise<void>;
133
+ }
134
+ //# sourceMappingURL=audio-player.d.ts.map