@coeiro-operator/audio 1.0.3 → 1.2.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.
Files changed (62) hide show
  1. package/README.md +48 -0
  2. package/dist/audio-player.d.ts +32 -11
  3. package/dist/audio-player.d.ts.map +1 -1
  4. package/dist/audio-player.js +236 -210
  5. package/dist/audio-player.js.map +1 -1
  6. package/dist/audio-stream-controller.d.ts +27 -7
  7. package/dist/audio-stream-controller.d.ts.map +1 -1
  8. package/dist/audio-stream-controller.js +143 -40
  9. package/dist/audio-stream-controller.js.map +1 -1
  10. package/dist/audio-synthesizer.d.ts +5 -4
  11. package/dist/audio-synthesizer.d.ts.map +1 -1
  12. package/dist/audio-synthesizer.js +36 -23
  13. package/dist/audio-synthesizer.js.map +1 -1
  14. package/dist/chunk-generation-manager.d.ts +34 -2
  15. package/dist/chunk-generation-manager.d.ts.map +1 -1
  16. package/dist/chunk-generation-manager.js +237 -15
  17. package/dist/chunk-generation-manager.js.map +1 -1
  18. package/dist/debug-error-test.d.ts +5 -0
  19. package/dist/debug-error-test.d.ts.map +1 -0
  20. package/dist/debug-error-test.js +91 -0
  21. package/dist/debug-error-test.js.map +1 -0
  22. package/dist/index.d.ts +18 -6
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +30 -4
  25. package/dist/index.js.map +1 -1
  26. package/dist/open-promise.d.ts +18 -0
  27. package/dist/open-promise.d.ts.map +1 -0
  28. package/dist/open-promise.js +42 -0
  29. package/dist/open-promise.js.map +1 -0
  30. package/dist/queue/speech-queue.d.ts +34 -0
  31. package/dist/queue/speech-queue.d.ts.map +1 -0
  32. package/dist/queue/speech-queue.js +36 -0
  33. package/dist/queue/speech-queue.js.map +1 -0
  34. package/dist/queue/task-queue.d.ts +52 -0
  35. package/dist/queue/task-queue.d.ts.map +1 -0
  36. package/dist/queue/task-queue.js +259 -0
  37. package/dist/queue/task-queue.js.map +1 -0
  38. package/dist/queue/types.d.ts +42 -0
  39. package/dist/queue/types.d.ts.map +1 -0
  40. package/dist/queue/types.js +5 -0
  41. package/dist/queue/types.js.map +1 -0
  42. package/dist/speech-queue.d.ts +4 -49
  43. package/dist/speech-queue.d.ts.map +1 -1
  44. package/dist/speech-queue.js +3 -140
  45. package/dist/speech-queue.js.map +1 -1
  46. package/dist/speed-utils.d.ts +25 -0
  47. package/dist/speed-utils.d.ts.map +1 -0
  48. package/dist/speed-utils.js +77 -0
  49. package/dist/speed-utils.js.map +1 -0
  50. package/dist/synthesis-processor.d.ts.map +1 -1
  51. package/dist/synthesis-processor.js +34 -10
  52. package/dist/synthesis-processor.js.map +1 -1
  53. package/dist/test-helpers.d.ts +0 -9
  54. package/dist/test-helpers.d.ts.map +1 -1
  55. package/dist/test-helpers.js +1 -80
  56. package/dist/test-helpers.js.map +1 -1
  57. package/dist/types.d.ts +41 -10
  58. package/dist/types.d.ts.map +1 -1
  59. package/dist/voice-resolver.d.ts.map +1 -1
  60. package/dist/voice-resolver.js +33 -3
  61. package/dist/voice-resolver.js.map +1 -1
  62. package/package.json +4 -6
@@ -1,52 +1,7 @@
1
1
  /**
2
- * src/say/speech-queue.ts: 音声合成キュー管理
3
- * 非同期音声タスクのキューイングと順次処理を担当
2
+ * src/speech-queue.ts: 音声合成キュー管理
3
+ * 後方互換性のためのエクスポート
4
4
  */
5
- import type { SpeechTask, SynthesizeOptions, SynthesizeResult } from './types.js';
6
- export declare class SpeechQueue {
7
- private processCallback;
8
- private speechQueue;
9
- private isProcessing;
10
- private taskIdCounter;
11
- private errors;
12
- constructor(processCallback: (task: SpeechTask) => Promise<void>);
13
- /**
14
- * 音声タスクをキューに追加(同期的)
15
- */
16
- enqueue(text: string, options?: SynthesizeOptions): SynthesizeResult;
17
- /**
18
- * 音声タスクをキューに追加して完了を待つ
19
- */
20
- enqueueAndWait(text: string, options?: SynthesizeOptions): Promise<SynthesizeResult>;
21
- /**
22
- * キューに入っているすべてのタスクの完了を待つ
23
- * @returns エラーが発生した場合はエラーリストを含む結果を返す
24
- */
25
- waitForAllTasks(): Promise<{
26
- errors: Array<{
27
- taskId: number;
28
- error: Error;
29
- }>;
30
- }>;
31
- /**
32
- * キューの処理を開始
33
- */
34
- private processQueue;
35
- /**
36
- * タスクの処理を実行
37
- */
38
- private processTask;
39
- /**
40
- * キューの状態を取得
41
- */
42
- getStatus(): {
43
- queueLength: number;
44
- isProcessing: boolean;
45
- nextTaskId: number | null;
46
- };
47
- /**
48
- * キューをクリア
49
- */
50
- clear(): void;
51
- }
5
+ export { SpeechQueue } from './queue/speech-queue.js';
6
+ export type { SpeechTask } from './queue/speech-queue.js';
52
7
  //# sourceMappingURL=speech-queue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"speech-queue.d.ts","sourceRoot":"","sources":["../src/speech-queue.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAkB,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGlG,qBAAa,WAAW;IAOpB,OAAO,CAAC,eAAe;IANzB,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,YAAY,CAAkB;IACtC,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,MAAM,CAA6C;gBAGjD,eAAe,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC;IAG9D;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,gBAAgB;IAuBxE;;OAEG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA0B9F;;;OAGG;IACG,eAAe,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,KAAK,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,KAAK,CAAA;SAAC,CAAC,CAAA;KAAE,CAAC;IAiBnF;;OAEG;YACW,YAAY;IA0C1B;;OAEG;YACW,WAAW;IAKzB;;OAEG;IACH,SAAS;;;;;IAQT;;OAEG;IACH,KAAK,IAAI,IAAI;CAId"}
1
+ {"version":3,"file":"speech-queue.d.ts","sourceRoot":"","sources":["../src/speech-queue.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,YAAY,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC"}
@@ -1,143 +1,6 @@
1
1
  /**
2
- * src/say/speech-queue.ts: 音声合成キュー管理
3
- * 非同期音声タスクのキューイングと順次処理を担当
2
+ * src/speech-queue.ts: 音声合成キュー管理
3
+ * 後方互換性のためのエクスポート
4
4
  */
5
- import { logger } from '@coeiro-operator/common';
6
- export class SpeechQueue {
7
- processCallback;
8
- speechQueue = [];
9
- isProcessing = false;
10
- taskIdCounter = Date.now();
11
- errors = [];
12
- constructor(processCallback) {
13
- this.processCallback = processCallback;
14
- }
15
- /**
16
- * 音声タスクをキューに追加(同期的)
17
- */
18
- enqueue(text, options = {}) {
19
- const taskId = this.taskIdCounter++;
20
- const task = {
21
- id: taskId,
22
- type: 'speech',
23
- text,
24
- options,
25
- timestamp: Date.now(),
26
- };
27
- this.speechQueue.push(task);
28
- // キュー処理を開始
29
- setTimeout(() => this.processQueue(), 0);
30
- return {
31
- success: true,
32
- taskId,
33
- queueLength: this.speechQueue.length,
34
- };
35
- }
36
- /**
37
- * 音声タスクをキューに追加して完了を待つ
38
- */
39
- async enqueueAndWait(text, options = {}) {
40
- const taskId = this.taskIdCounter++;
41
- return new Promise((resolve, reject) => {
42
- const task = {
43
- id: taskId,
44
- type: 'speech',
45
- text,
46
- options,
47
- timestamp: Date.now(),
48
- resolve: () => resolve({
49
- success: true,
50
- taskId,
51
- queueLength: this.speechQueue.length,
52
- }),
53
- reject,
54
- };
55
- this.speechQueue.push(task);
56
- // キュー処理を開始
57
- setTimeout(() => this.processQueue(), 0);
58
- });
59
- }
60
- /**
61
- * キューに入っているすべてのタスクの完了を待つ
62
- * @returns エラーが発生した場合はエラーリストを含む結果を返す
63
- */
64
- async waitForAllTasks() {
65
- return new Promise((resolve) => {
66
- const checkQueue = () => {
67
- if (this.speechQueue.length === 0 && !this.isProcessing) {
68
- // エラーリストを返してクリア
69
- const errors = [...this.errors];
70
- this.errors = [];
71
- resolve({ errors });
72
- }
73
- else {
74
- setTimeout(checkQueue, 100);
75
- }
76
- };
77
- checkQueue();
78
- });
79
- }
80
- /**
81
- * キューの処理を開始
82
- */
83
- async processQueue() {
84
- if (this.isProcessing) {
85
- return;
86
- }
87
- if (this.speechQueue.length === 0) {
88
- return;
89
- }
90
- this.isProcessing = true;
91
- while (this.speechQueue.length > 0) {
92
- const task = this.speechQueue.shift();
93
- if (!task)
94
- break;
95
- try {
96
- await this.processTask(task);
97
- logger.verbose(`音声タスク完了: ${task.id} (${task.type})`);
98
- // CLI用完了通知
99
- if (task.resolve) {
100
- task.resolve();
101
- }
102
- }
103
- catch (error) {
104
- logger.error(`音声タスクエラー: ${task.id} (${task.type}), ${error.message}`);
105
- // エラーを保存
106
- this.errors.push({
107
- taskId: task.id,
108
- error: error
109
- });
110
- // CLI用エラー通知
111
- if (task.reject) {
112
- task.reject(error);
113
- }
114
- }
115
- }
116
- this.isProcessing = false;
117
- }
118
- /**
119
- * タスクの処理を実行
120
- */
121
- async processTask(task) {
122
- // 音声合成タスクの処理
123
- await this.processCallback(task);
124
- }
125
- /**
126
- * キューの状態を取得
127
- */
128
- getStatus() {
129
- return {
130
- queueLength: this.speechQueue.length,
131
- isProcessing: this.isProcessing,
132
- nextTaskId: this.speechQueue[0]?.id || null,
133
- };
134
- }
135
- /**
136
- * キューをクリア
137
- */
138
- clear() {
139
- this.speechQueue = [];
140
- this.isProcessing = false;
141
- }
142
- }
5
+ export { SpeechQueue } from './queue/speech-queue.js';
143
6
  //# sourceMappingURL=speech-queue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"speech-queue.js","sourceRoot":"","sources":["../src/speech-queue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"speech-queue.js","sourceRoot":"","sources":["../src/speech-queue.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * speed-utils.ts: 速度変換ユーティリティ
3
+ */
4
+ import type { VoiceConfig } from './types.js';
5
+ /**
6
+ * 速度指定の内部表現(数値のみ)
7
+ */
8
+ export interface SpeedSpecification {
9
+ rate?: number;
10
+ factor?: number;
11
+ }
12
+ /**
13
+ * 速度指定をCOEIROINKのspeedScale値に変換
14
+ * @param spec - 速度指定
15
+ * @param voiceConfig - 音声設定(スタイル別の話速情報を含む)
16
+ * @returns COEIROINKのspeed値(0.5〜2.0)
17
+ */
18
+ export declare function convertToSpeed(spec: SpeedSpecification, voiceConfig: VoiceConfig): number;
19
+ /**
20
+ * rateとfactorの両方が指定された場合の検証
21
+ * @param spec - 速度指定
22
+ * @throws 両方が指定されている場合はエラー
23
+ */
24
+ export declare function validateSpeedParameters(spec: SpeedSpecification): void;
25
+ //# sourceMappingURL=speed-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"speed-utils.d.ts","sourceRoot":"","sources":["../src/speed-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAsCD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,WAAW,GAAG,MAAM,CA8BzF;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI,CAItE"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * speed-utils.ts: 速度変換ユーティリティ
3
+ */
4
+ import { logger } from '@coeiro-operator/common';
5
+ /**
6
+ * WPM基準での標準話速
7
+ */
8
+ const BASE_RATE_WPM = 200;
9
+ const BASE_MORAS_PER_SECOND = 7.5; // 200 WPM時のモーラ/秒
10
+ /**
11
+ * WPMからCOEIROINKのspeed値を計算
12
+ * @param wpm - Words Per Minute
13
+ * @param voiceConfig - 音声設定(スタイル別の話速情報を含む)
14
+ * @returns COEIROINKのspeed値
15
+ */
16
+ function calculateSpeedFromWPM(wpm, voiceConfig) {
17
+ const targetMorasPerSecond = BASE_MORAS_PER_SECOND * (wpm / BASE_RATE_WPM);
18
+ // 話者の実測速度を取得
19
+ let speakerMorasPerSecond = BASE_MORAS_PER_SECOND;
20
+ logger.debug(`voiceConfig.styleMorasPerSecond: ${JSON.stringify(voiceConfig.styleMorasPerSecond)}`);
21
+ logger.debug(`voiceConfig.selectedStyleId: ${voiceConfig.selectedStyleId}`);
22
+ if (voiceConfig.styleMorasPerSecond && voiceConfig.selectedStyleId !== undefined) {
23
+ // 数値のselectedStyleIdで直接アクセス
24
+ speakerMorasPerSecond = voiceConfig.styleMorasPerSecond[voiceConfig.selectedStyleId] || BASE_MORAS_PER_SECOND;
25
+ logger.debug(`話者固有速度を使用: styleId=${voiceConfig.selectedStyleId} → ${speakerMorasPerSecond} モーラ/秒`);
26
+ }
27
+ else {
28
+ logger.debug(`デフォルト速度を使用: ${BASE_MORAS_PER_SECOND} モーラ/秒`);
29
+ }
30
+ const speed = targetMorasPerSecond / speakerMorasPerSecond;
31
+ logger.debug(`WPM変換: ${wpm} WPM → ${targetMorasPerSecond.toFixed(2)}モーラ/秒 ÷ ${speakerMorasPerSecond.toFixed(2)}モーラ/秒 → speed=${speed.toFixed(2)}`);
32
+ return speed;
33
+ }
34
+ /**
35
+ * 速度指定をCOEIROINKのspeedScale値に変換
36
+ * @param spec - 速度指定
37
+ * @param voiceConfig - 音声設定(スタイル別の話速情報を含む)
38
+ * @returns COEIROINKのspeed値(0.5〜2.0)
39
+ */
40
+ export function convertToSpeed(spec, voiceConfig) {
41
+ logger.debug(`convertToSpeed入力 - spec: ${JSON.stringify(spec)}`);
42
+ logger.debug(`convertToSpeed入力 - spec.rate type: ${typeof spec.rate}, value: ${spec.rate}`);
43
+ logger.debug(`convertToSpeed入力 - spec.factor type: ${typeof spec.factor}, value: ${spec.factor}`);
44
+ let speed;
45
+ // factorが優先
46
+ if (spec.factor !== undefined) {
47
+ speed = spec.factor;
48
+ logger.debug(`相対速度: factor=${spec.factor} → speed=${speed}`);
49
+ }
50
+ // rateをWPMとして処理
51
+ else if (spec.rate !== undefined) {
52
+ speed = calculateSpeedFromWPM(spec.rate, voiceConfig);
53
+ logger.debug(`絶対速度: rate=${spec.rate} WPM → speed=${speed.toFixed(2)}`);
54
+ }
55
+ // 未指定
56
+ else {
57
+ speed = 1.0;
58
+ logger.debug('速度未指定: speed=1.0');
59
+ }
60
+ // COEIROINKの制限範囲内に収める
61
+ const clampedSpeed = Math.max(0.5, Math.min(2.0, speed));
62
+ if (clampedSpeed !== speed) {
63
+ logger.warn(`速度を範囲内に制限: ${speed.toFixed(2)} → ${clampedSpeed}`);
64
+ }
65
+ return clampedSpeed;
66
+ }
67
+ /**
68
+ * rateとfactorの両方が指定された場合の検証
69
+ * @param spec - 速度指定
70
+ * @throws 両方が指定されている場合はエラー
71
+ */
72
+ export function validateSpeedParameters(spec) {
73
+ if (spec.rate !== undefined && spec.factor !== undefined) {
74
+ throw new Error('rateとfactorは同時に指定できません。どちらか一方を指定してください。');
75
+ }
76
+ }
77
+ //# sourceMappingURL=speed-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"speed-utils.js","sourceRoot":"","sources":["../src/speed-utils.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"synthesis-processor.d.ts","sourceRoot":"","sources":["../src/synthesis-processor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,OAAO,KAAK,EACV,MAAM,EAEN,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAEpB,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,aAAa;gBAHb,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,gBAAgB,EAClC,aAAa,EAAE,aAAa;IAGtC;;OAEG;IACG,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC;IAyB/C;;OAEG;IACG,OAAO,CACX,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,gBAAgB,CAAC;IAwC5B;;OAEG;IACH,OAAO,CAAC,cAAc;IA+BtB;;OAEG;YACW,wBAAwB;IAStC;;OAEG;YACW,iBAAiB;IAmC/B;;OAEG;YACW,sBAAsB;CA2BrC"}
1
+ {"version":3,"file":"synthesis-processor.d.ts","sourceRoot":"","sources":["../src/synthesis-processor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD,OAAO,KAAK,EACV,MAAM,EAEN,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAEpB,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,aAAa;gBAHb,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,gBAAgB,EAClC,aAAa,EAAE,aAAa;IAGtC;;OAEG;IACG,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC;IAyB/C;;OAEG;IACG,OAAO,CACX,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,gBAAgB,CAAC;IAiD5B;;OAEG;IACH,OAAO,CAAC,cAAc;IAiCtB;;OAEG;YACW,wBAAwB;IAStC;;OAEG;YACW,iBAAiB;IAyC/B;;OAEG;YACW,sBAAsB;CA6BrC"}
@@ -3,6 +3,7 @@
3
3
  */
4
4
  import { logger } from '@coeiro-operator/common';
5
5
  import { BUFFER_SIZES, FILTER_SETTINGS } from './constants.js';
6
+ import { convertToSpeed, validateSpeedParameters } from './speed-utils.js';
6
7
  export class SynthesisProcessor {
7
8
  config;
8
9
  audioPlayer;
@@ -41,13 +42,22 @@ export class SynthesisProcessor {
41
42
  */
42
43
  async process(text, options = {}) {
43
44
  logger.info(`音声合成開始: テキスト="${text.substring(0, 50)}${text.length > 50 ? '...' : ''}"`);
45
+ logger.debug(`process - raw options: ${JSON.stringify(options)}`);
44
46
  // オプション解析
45
47
  const resolvedOptions = this.resolveOptions(options);
48
+ logger.debug(`process - resolved rate: ${resolvedOptions.rate} (type: ${typeof resolvedOptions.rate})`);
46
49
  // サーバー接続確認を最初に行う
47
50
  await this.validateServerConnection();
48
51
  // 音声設定の解決
49
52
  const voiceConfig = await this.voiceResolver.resolveVoiceConfig(resolvedOptions.voice, resolvedOptions.style || undefined, resolvedOptions.allowFallback);
50
- const speed = this.audioSynthesizer.convertRateToSpeed(resolvedOptions.rate);
53
+ // 速度指定を変換(シンプルに両方渡す)
54
+ const speedSpec = {
55
+ rate: typeof resolvedOptions.rate === 'number' ? resolvedOptions.rate : undefined,
56
+ factor: resolvedOptions.factor
57
+ };
58
+ validateSpeedParameters(speedSpec);
59
+ const speed = convertToSpeed(speedSpec, voiceConfig);
60
+ logger.debug(`process - converted speed: ${speed} (type: ${typeof speed})`);
51
61
  // 出力モードに応じた処理
52
62
  if (resolvedOptions.outputFile) {
53
63
  return await this.processFileOutput(text, voiceConfig, speed, resolvedOptions.chunkMode, resolvedOptions.outputFile);
@@ -62,7 +72,8 @@ export class SynthesisProcessor {
62
72
  resolveOptions(options) {
63
73
  const resolved = {
64
74
  voice: options.voice || null,
65
- rate: options.rate || this.config.operator.rate,
75
+ rate: options.rate ?? this.config.audio?.defaultRate,
76
+ factor: options.factor,
66
77
  outputFile: options.outputFile || null,
67
78
  style: options.style || null,
68
79
  chunkMode: options.chunkMode || this.config.audio?.splitMode || 'punctuation',
@@ -93,12 +104,18 @@ export class SynthesisProcessor {
93
104
  */
94
105
  async processFileOutput(text, voiceConfig, speed, chunkMode, outputFile) {
95
106
  logger.info(`ファイル出力モード: ${outputFile}`);
96
- // ストリーミング合成してファイルに保存
107
+ // Step 1: 音声合成(データ生成のみ)
108
+ logger.info('音声データ生成開始...');
109
+ logger.debug(`合成パラメータ - chunkMode: ${chunkMode}, speed: ${speed}`);
110
+ const generator = this.audioSynthesizer.synthesizeStream(text, voiceConfig, speed, chunkMode);
111
+ // Step 2: データ収集(フラットな処理)
112
+ logger.info('音声データ収集中...');
97
113
  const audioChunks = [];
98
- for await (const audioResult of this.audioSynthesizer.synthesizeStream(text, voiceConfig, speed, chunkMode)) {
114
+ for await (const audioResult of generator) {
99
115
  audioChunks.push(audioResult.audioBuffer);
100
116
  }
101
- // 全チャンクを結合
117
+ // Step 3: データ結合
118
+ logger.info('音声データ結合中...');
102
119
  const totalLength = audioChunks.reduce((sum, chunk) => sum + chunk.byteLength, 0);
103
120
  const combinedBuffer = new ArrayBuffer(totalLength);
104
121
  const view = new Uint8Array(combinedBuffer);
@@ -107,7 +124,10 @@ export class SynthesisProcessor {
107
124
  view.set(new Uint8Array(chunk), offset);
108
125
  offset += chunk.byteLength;
109
126
  }
127
+ // Step 4: ファイル保存(フラットな呼び出し)
128
+ logger.info('ファイル保存中...');
110
129
  await this.audioPlayer.saveAudio(combinedBuffer, outputFile);
130
+ logger.info(`ファイル出力完了: ${outputFile}`);
111
131
  return { success: true, outputFile, mode: 'file' };
112
132
  }
113
133
  /**
@@ -115,15 +135,19 @@ export class SynthesisProcessor {
115
135
  */
116
136
  async processStreamingOutput(text, voiceConfig, speed, chunkMode, bufferSize) {
117
137
  logger.info('ストリーミング再生モード');
118
- // 統一されたストリーミング再生
138
+ // Step 1: 音声合成(データ生成のみ)
139
+ logger.info('音声合成開始...');
140
+ logger.debug(`合成パラメータ - chunkMode: ${chunkMode}, speed: ${speed}`);
141
+ const generator = this.audioSynthesizer.synthesizeStream(text, voiceConfig, speed, chunkMode);
142
+ // Step 2: 音声再生(再生のみ) - フラットな呼び出し
143
+ logger.info('音声再生開始...');
144
+ // AudioPlayerの初期化
119
145
  if (!(await this.initializeAudioPlayer())) {
120
146
  logger.error('音声プレーヤーの初期化に失敗');
121
147
  throw new Error('音声プレーヤーの初期化に失敗しました');
122
148
  }
123
- logger.info('音声ストリーミング再生開始...');
124
- logger.debug(`About to call streamSynthesizeAndPlay with chunkMode: ${chunkMode}`);
125
- // 真のストリーミング再生:ジェネレータを直接AudioPlayerに渡す
126
- await this.audioPlayer.playStreamingAudio(this.audioSynthesizer.synthesizeStream(text, voiceConfig, speed, chunkMode), bufferSize);
149
+ // 再生実行
150
+ await this.audioPlayer.playStreamingAudio(generator, bufferSize);
127
151
  logger.info('音声ストリーミング再生完了');
128
152
  return { success: true, mode: 'streaming' };
129
153
  }
@@ -1 +1 @@
1
- {"version":3,"file":"synthesis-processor.js","sourceRoot":"","sources":["../src/synthesis-processor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"synthesis-processor.js","sourceRoot":"","sources":["../src/synthesis-processor.ts"],"names":[],"mappings":"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"}
@@ -3,15 +3,6 @@
3
3
  */
4
4
  import { ConfigManager } from '@coeiro-operator/core';
5
5
  import type { Config } from './types.js';
6
- /**
7
- * Speakerモックインスタンスを作成
8
- * Node.js StreamのWritableインターフェースを完全に実装
9
- */
10
- export declare function createMockSpeakerInstance(): any;
11
- /**
12
- * エラーを発生させるSpeakerモックインスタンスを作成
13
- */
14
- export declare function createErrorMockSpeakerInstance(): any;
15
6
  /**
16
7
  * テスト用のConfigManagerモックを作成
17
8
  */
@@ -1 +1 @@
1
- {"version":3,"file":"test-helpers.d.ts","sourceRoot":"","sources":["../src/test-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC;;;GAGG;AACH,wBAAgB,yBAAyB,QAkDxC;AAED;;GAEG;AACH,wBAAgB,8BAA8B,QAkB7C;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,GAAE,OAAO,CAAC,MAAM,CAAM,GAAG,aAAa,CAoEtF"}
1
+ {"version":3,"file":"test-helpers.d.ts","sourceRoot":"","sources":["../src/test-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,GAAE,OAAO,CAAC,MAAM,CAAM,GAAG,aAAa,CAkEtF"}
@@ -1,83 +1,6 @@
1
1
  /**
2
2
  * テスト用ヘルパー関数とモックファクトリ
3
3
  */
4
- import { vi } from 'vitest';
5
- /**
6
- * Speakerモックインスタンスを作成
7
- * Node.js StreamのWritableインターフェースを完全に実装
8
- */
9
- export function createMockSpeakerInstance() {
10
- const mockInstance = {
11
- write: vi.fn((chunk, encoding, callback) => {
12
- // 引数の数に応じて適切にコールバックを処理
13
- const cb = typeof encoding === 'function' ? encoding : callback;
14
- if (cb)
15
- cb();
16
- return true;
17
- }),
18
- end: vi.fn((chunk, encoding, callback) => {
19
- // 引数の数に応じて適切にコールバックを処理
20
- let cb;
21
- if (typeof chunk === 'function') {
22
- cb = chunk;
23
- }
24
- else if (typeof encoding === 'function') {
25
- cb = encoding;
26
- }
27
- else {
28
- cb = callback;
29
- }
30
- if (cb)
31
- setTimeout(cb, 10);
32
- }),
33
- on: vi.fn(function (event, callback) {
34
- if (event === 'close') {
35
- setTimeout(callback, 10);
36
- }
37
- return this;
38
- }),
39
- once: vi.fn(function (event, callback) {
40
- if (event === 'close') {
41
- setTimeout(callback, 10);
42
- }
43
- return this;
44
- }),
45
- emit: vi.fn(),
46
- removeListener: vi.fn(function () { return this; }),
47
- removeAllListeners: vi.fn(function () { return this; }),
48
- pipe: vi.fn(),
49
- unpipe: vi.fn(),
50
- destroy: vi.fn(),
51
- _writableState: { ended: false },
52
- writable: true,
53
- readable: false,
54
- };
55
- // thisバインディングを修正
56
- mockInstance.on = mockInstance.on.bind(mockInstance);
57
- mockInstance.once = mockInstance.once.bind(mockInstance);
58
- mockInstance.removeListener = mockInstance.removeListener.bind(mockInstance);
59
- mockInstance.removeAllListeners = mockInstance.removeAllListeners.bind(mockInstance);
60
- return mockInstance;
61
- }
62
- /**
63
- * エラーを発生させるSpeakerモックインスタンスを作成
64
- */
65
- export function createErrorMockSpeakerInstance() {
66
- const mockInstance = createMockSpeakerInstance();
67
- mockInstance.on = vi.fn(function (event, callback) {
68
- if (event === 'error') {
69
- setTimeout(() => callback(new Error('Mock speaker error')), 10);
70
- }
71
- return this;
72
- }).bind(mockInstance);
73
- mockInstance.once = vi.fn(function (event, callback) {
74
- if (event === 'error') {
75
- setTimeout(() => callback(new Error('Mock speaker error')), 10);
76
- }
77
- return this;
78
- }).bind(mockInstance);
79
- return mockInstance;
80
- }
81
4
  /**
82
5
  * テスト用のConfigManagerモックを作成
83
6
  */
@@ -88,7 +11,6 @@ export function createMockConfigManager(overrides = {}) {
88
11
  port: '50032',
89
12
  },
90
13
  operator: {
91
- rate: 200,
92
14
  timeout: 14400000,
93
15
  assignmentStrategy: 'random',
94
16
  },
@@ -140,8 +62,7 @@ export function createMockConfigManager(overrides = {}) {
140
62
  };
141
63
  },
142
64
  getAvailableCharacterIds: async () => ['test-speaker-1', 'tsukuyomi'],
143
- getOperatorTimeout: async () => mergedConfig.operator.timeout,
144
- getRate: async () => mergedConfig.operator.rate,
65
+ getOperatorConfig: async () => mergedConfig.operator,
145
66
  getAudioConfig: async () => mergedConfig.audio,
146
67
  getConnectionConfig: async () => mergedConfig.connection,
147
68
  };
@@ -1 +1 @@
1
- {"version":3,"file":"test-helpers.js","sourceRoot":"","sources":["../src/test-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test-helpers.js","sourceRoot":"","sources":["../src/test-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,YAA6B,EAAE;IACrE,MAAM,aAAa,GAAW;QAC5B,UAAU,EAAE;YACV,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,OAAO;SACd;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,QAAQ;YACjB,kBAAkB,EAAE,QAAQ;SAC7B;QACD,KAAK,EAAE;YACL,WAAW,EAAE,UAAU;YACvB,SAAS,EAAE,aAAa;YACxB,UAAU,EAAE,GAAG;YACf,kBAAkB,EAAE;gBAClB,cAAc,EAAE,CAAC;gBACjB,oBAAoB,EAAE,EAAE;gBACxB,gBAAgB,EAAE,CAAC;gBACnB,uBAAuB,EAAE,IAAI;aAC9B;SACF;QACD,UAAU,EAAE,EAAE;KACf,CAAC;IAEF,kBAAkB;IAClB,MAAM,YAAY,GAAG,SAAS,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAEzD,6BAA6B;IAC7B,MAAM,iBAAiB,GAAG;QACxB,aAAa,EAAE,KAAK,IAAI,EAAE,CAAC,YAAY;QACvC,kBAAkB,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;QAClC,kBAAkB,EAAE,KAAK,EAAE,WAAmB,EAAE,EAAE;YAChD,mBAAmB;YACnB,sCAAsC;YACtC,IAAI,WAAW,KAAK,gBAAgB,IAAI,WAAW,KAAK,mBAAmB,EAAE,CAAC;gBAC5E,OAAO;oBACL,SAAS,EAAE,gBAAgB,EAAG,gBAAgB;oBAC9C,IAAI,EAAE,WAAW;oBACjB,YAAY,EAAE,MAAM;oBACpB,eAAe,EAAE,CAAC,MAAM,CAAC;iBAC1B,CAAC;YACJ,CAAC;YACD,yBAAyB;YACzB,IAAI,WAAW,KAAK,WAAW,EAAE,CAAC;gBAChC,OAAO;oBACL,SAAS,EAAE,sCAAsC,EAAE,yBAAyB;oBAC5E,IAAI,EAAE,SAAS;oBACf,YAAY,EAAE,MAAM;oBACpB,eAAe,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC;iBAC1C,CAAC;YACJ,CAAC;YACD,iBAAiB;YACjB,OAAO;gBACL,SAAS,EAAE,WAAW,GAAG,OAAO;gBAChC,IAAI,EAAE,WAAW;gBACjB,YAAY,EAAE,MAAM;gBACpB,eAAe,EAAE,CAAC,MAAM,CAAC;aAC1B,CAAC;QACJ,CAAC;QACD,wBAAwB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,gBAAgB,EAAE,WAAW,CAAC;QACrE,iBAAiB,EAAE,KAAK,IAAI,EAAE,CAAC,YAAY,CAAC,QAAQ;QACpD,cAAc,EAAE,KAAK,IAAI,EAAE,CAAC,YAAY,CAAC,KAAK;QAC9C,mBAAmB,EAAE,KAAK,IAAI,EAAE,CAAC,YAAY,CAAC,UAAU;KAC7B,CAAC;IAE9B,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,SAAS,SAAS,CAAI,MAAS,EAAE,MAAkB;IACjD,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IAE7B,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;YAC9B,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC3F,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CACrB,MAAM,CAAC,GAAG,CAAQ,EAClB,MAAM,CAAC,GAAG,CAAQ,CACnB,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAQ,CAAC;YACnC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}