@coeiro-operator/audio 1.0.1 → 1.0.3

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.
Files changed (46) hide show
  1. package/LICENSE +21 -0
  2. package/dist/audio-player.d.ts +134 -0
  3. package/dist/audio-player.d.ts.map +1 -0
  4. package/dist/audio-player.js +707 -0
  5. package/dist/audio-player.js.map +1 -0
  6. package/dist/audio-stream-controller.d.ts +52 -0
  7. package/dist/audio-stream-controller.d.ts.map +1 -0
  8. package/dist/audio-stream-controller.js +121 -0
  9. package/dist/audio-stream-controller.js.map +1 -0
  10. package/dist/audio-synthesizer.d.ts +86 -0
  11. package/dist/audio-synthesizer.d.ts.map +1 -0
  12. package/dist/audio-synthesizer.js +437 -0
  13. package/dist/audio-synthesizer.js.map +1 -0
  14. package/dist/chunk-generation-manager.d.ts +77 -0
  15. package/dist/chunk-generation-manager.d.ts.map +1 -0
  16. package/dist/chunk-generation-manager.js +178 -0
  17. package/dist/chunk-generation-manager.js.map +1 -0
  18. package/dist/constants.d.ts +180 -0
  19. package/dist/constants.d.ts.map +1 -0
  20. package/dist/constants.js +219 -0
  21. package/dist/constants.js.map +1 -0
  22. package/dist/index.d.ts +77 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +194 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/speech-queue.d.ts +52 -0
  27. package/dist/speech-queue.d.ts.map +1 -0
  28. package/dist/speech-queue.js +143 -0
  29. package/dist/speech-queue.js.map +1 -0
  30. package/dist/synthesis-processor.d.ts +39 -0
  31. package/dist/synthesis-processor.d.ts.map +1 -0
  32. package/dist/synthesis-processor.js +131 -0
  33. package/dist/synthesis-processor.js.map +1 -0
  34. package/dist/test-helpers.d.ts +19 -0
  35. package/dist/test-helpers.d.ts.map +1 -0
  36. package/dist/test-helpers.js +167 -0
  37. package/dist/test-helpers.js.map +1 -0
  38. package/dist/types.d.ts +63 -0
  39. package/dist/types.d.ts.map +1 -0
  40. package/dist/types.js +5 -0
  41. package/dist/types.js.map +1 -0
  42. package/dist/voice-resolver.d.ts +25 -0
  43. package/dist/voice-resolver.d.ts.map +1 -0
  44. package/dist/voice-resolver.js +141 -0
  45. package/dist/voice-resolver.js.map +1 -0
  46. package/package.json +16 -13
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 COEIRO Operator
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio-player.d.ts","sourceRoot":"","sources":["../src/audio-player.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,OAAO,KAAK,EAAE,WAAW,EAAS,MAAM,EAAe,MAAM,YAAY,CAAC;AAY1E,eAAO,MAAM,QAAQ;yBACU,GAAG;CACjC,CAAC;AAEF,qBAAa,WAAW;IACtB,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,YAAY,CAAiC;IACrD,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,qBAAqB,CAAkB;IAC/C,OAAO,CAAC,qBAAqB,CAAoD;IACjF,OAAO,CAAC,oBAAoB,CAAmD;IAC/E,OAAO,CAAC,aAAa,CAA0C;IAC/D,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,MAAM,CAAS;IAEvB;;OAEG;gBACS,MAAM,EAAE,MAAM;IAK1B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA0C7B;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAgBlC;;OAEG;IACH,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAI7C;;OAEG;IACH,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAI3C;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIzC;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,GAAE,MAAuC,GAAG,IAAI;IAK7F;;OAEG;YACW,oBAAoB;IAW5B,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAkBpC;;OAEG;IACG,eAAe,CAAC,WAAW,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiCnF;;;OAGG;YACW,0BAA0B;IAiDxC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAwD/B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAmB9B;;OAEG;IACH,OAAO,CAAC,6BAA6B;IAoBrC;;OAEG;IACG,kBAAkB,CACtB,WAAW,EAAE,cAAc,CAAC,WAAW,CAAC,EACxC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IAehB;;OAEG;IACG,0BAA0B,CAAC,WAAW,EAAE,cAAc,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAkCzF;;OAEG;YACW,aAAa;IAuI3B;;;OAGG;YACW,WAAW;IA2CzB;;OAEG;IACG,SAAS,CAAC,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ5E;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAqCjC;;OAEG;YACW,0BAA0B;IAqCxC;;OAEG;IACH,iBAAiB,CAAC,SAAS,EAAE,WAAW,GAAG,UAAU;IA2BrD;;OAEG;IACH,cAAc,CACZ,OAAO,EAAE,UAAU,EACnB,cAAc,EAAE,MAAM,EACtB,YAAY,GAAE,OAAe,GAC5B,UAAU;IA4Bb;;OAEG;IACH,OAAO,CAAC,UAAU;IAMlB;;;;;OAKG;IACH,iBAAiB,CACf,UAAU,GAAE,MAAY,EACxB,UAAU,GAAE,MAA+B,GAC1C,UAAU;IAMb;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBxC;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAgB/B"}