@kajidog/voicevox-client 0.0.3-pre.4 → 0.3.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 (95) hide show
  1. package/LICENSE +15 -0
  2. package/README.md +174 -10
  3. package/dist/api.d.ts +8 -3
  4. package/dist/api.d.ts.map +1 -1
  5. package/dist/api.js +42 -20
  6. package/dist/api.js.map +1 -1
  7. package/dist/client.d.ts +73 -120
  8. package/dist/client.d.ts.map +1 -1
  9. package/dist/client.js +301 -178
  10. package/dist/client.js.map +1 -1
  11. package/dist/error.d.ts +29 -31
  12. package/dist/error.d.ts.map +1 -1
  13. package/dist/error.js +54 -48
  14. package/dist/error.js.map +1 -1
  15. package/dist/index.d.ts +11 -7
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +21 -4
  18. package/dist/index.js.map +1 -1
  19. package/dist/playback/index.d.ts +4 -0
  20. package/dist/playback/index.d.ts.map +1 -0
  21. package/dist/playback/index.js +10 -0
  22. package/dist/playback/index.js.map +1 -0
  23. package/dist/playback/playback-service.d.ts +56 -0
  24. package/dist/playback/playback-service.d.ts.map +1 -0
  25. package/dist/playback/playback-service.js +128 -0
  26. package/dist/playback/playback-service.js.map +1 -0
  27. package/dist/playback/playback-strategy.d.ts +33 -0
  28. package/dist/playback/playback-strategy.d.ts.map +1 -0
  29. package/dist/playback/playback-strategy.js +382 -0
  30. package/dist/playback/playback-strategy.js.map +1 -0
  31. package/dist/playback/types.d.ts +49 -0
  32. package/dist/playback/types.d.ts.map +1 -0
  33. package/dist/playback/types.js +3 -0
  34. package/dist/playback/types.js.map +1 -0
  35. package/dist/queue/audio-generator.d.ts +32 -4
  36. package/dist/queue/audio-generator.d.ts.map +1 -1
  37. package/dist/queue/audio-generator.js +53 -3
  38. package/dist/queue/audio-generator.js.map +1 -1
  39. package/dist/queue/event-manager.d.ts +1 -1
  40. package/dist/queue/event-manager.d.ts.map +1 -1
  41. package/dist/queue/event-manager.js +5 -5
  42. package/dist/queue/event-manager.js.map +1 -1
  43. package/dist/queue/file-manager.d.ts +1 -0
  44. package/dist/queue/file-manager.d.ts.map +1 -1
  45. package/dist/queue/file-manager.js +52 -58
  46. package/dist/queue/file-manager.js.map +1 -1
  47. package/dist/queue/index.d.ts +6 -6
  48. package/dist/queue/index.d.ts.map +1 -1
  49. package/dist/queue/index.js +2 -2
  50. package/dist/queue/index.js.map +1 -1
  51. package/dist/queue/prefetch-manager.d.ts +48 -0
  52. package/dist/queue/prefetch-manager.d.ts.map +1 -0
  53. package/dist/queue/prefetch-manager.js +84 -0
  54. package/dist/queue/prefetch-manager.js.map +1 -0
  55. package/dist/queue/queue-service.d.ts +129 -0
  56. package/dist/queue/queue-service.d.ts.map +1 -0
  57. package/dist/queue/queue-service.js +391 -0
  58. package/dist/queue/queue-service.js.map +1 -0
  59. package/dist/queue/types.d.ts +12 -12
  60. package/dist/queue/types.d.ts.map +1 -1
  61. package/dist/queue/types.js.map +1 -1
  62. package/dist/state/index.d.ts +5 -0
  63. package/dist/state/index.d.ts.map +1 -0
  64. package/dist/state/index.js +11 -0
  65. package/dist/state/index.js.map +1 -0
  66. package/dist/state/item-state-machine.d.ts +48 -0
  67. package/dist/state/item-state-machine.d.ts.map +1 -0
  68. package/dist/state/item-state-machine.js +101 -0
  69. package/dist/state/item-state-machine.js.map +1 -0
  70. package/dist/state/queue-state-machine.d.ts +71 -0
  71. package/dist/state/queue-state-machine.d.ts.map +1 -0
  72. package/dist/state/queue-state-machine.js +250 -0
  73. package/dist/state/queue-state-machine.js.map +1 -0
  74. package/dist/state/types.d.ts +87 -0
  75. package/dist/state/types.d.ts.map +1 -0
  76. package/dist/state/types.js +27 -0
  77. package/dist/state/types.js.map +1 -0
  78. package/dist/types.d.ts +34 -0
  79. package/dist/types.d.ts.map +1 -1
  80. package/dist/utils.d.ts.map +1 -1
  81. package/dist/utils.js +13 -13
  82. package/dist/utils.js.map +1 -1
  83. package/package.json +82 -84
  84. package/dist/player.d.ts +0 -97
  85. package/dist/player.d.ts.map +0 -1
  86. package/dist/player.js +0 -177
  87. package/dist/player.js.map +0 -1
  88. package/dist/queue/audio-player.d.ts +0 -31
  89. package/dist/queue/audio-player.d.ts.map +0 -1
  90. package/dist/queue/audio-player.js +0 -256
  91. package/dist/queue/audio-player.js.map +0 -1
  92. package/dist/queue/manager.d.ts +0 -136
  93. package/dist/queue/manager.d.ts.map +0 -1
  94. package/dist/queue/manager.js +0 -474
  95. package/dist/queue/manager.js.map +0 -1
package/LICENSE ADDED
@@ -0,0 +1,15 @@
1
+ ISC License
2
+
3
+ Copyright (c) 2024 kajidog
4
+
5
+ Permission to use, copy, modify, and/or distribute this software for any
6
+ purpose with or without fee is hereby granted, provided that the above
7
+ copyright notice and this permission notice appear in all copies.
8
+
9
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
10
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
12
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
14
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15
+ PERFORMANCE OF THIS SOFTWARE.
package/README.md CHANGED
@@ -21,10 +21,17 @@ const client = new VoicevoxClient({
21
21
  });
22
22
 
23
23
  // Simple text-to-speech
24
- await client.speak('こんにちは');
24
+ await client.speak('Hello, world!');
25
+
26
+ // With options
27
+ await client.speak('Hello, world!', {
28
+ speaker: 3,
29
+ speedScale: 1.2,
30
+ waitForEnd: true // Wait for playback to complete
31
+ });
25
32
 
26
33
  // Generate audio file
27
- const filePath = await client.generateAudioFile('テストメッセージ', './output.wav');
34
+ const filePath = await client.generateAudioFile('Test message', './output.wav');
28
35
 
29
36
  // Get available speakers
30
37
  const speakers = await client.getSpeakers();
@@ -34,6 +41,7 @@ const speakers = await client.getSpeakers();
34
41
 
35
42
  - **Text-to-Speech Synthesis**: Convert text to speech with multiple speaker voices
36
43
  - **Audio Queue Management**: Efficient queue-based audio processing and playback
44
+ - **Streaming Playback**: Direct buffer playback via ffplay (no temp files)
37
45
  - **Cross-platform Audio Playback**: Native audio playback support without external dependencies
38
46
  - **macOS**: Uses built-in `afplay` command
39
47
  - **Windows**: Uses PowerShell MediaPlayer with optimized timing
@@ -41,6 +49,7 @@ const speakers = await client.getSpeakers();
41
49
  - **File Generation**: Generate WAV audio files from text
42
50
  - **Speaker Management**: Get information about available speakers and voices
43
51
  - **Flexible Input**: Support for single text, text arrays, and speech segments
52
+ - **Advanced Playback Control**: Immediate playback, synchronous/asynchronous control
44
53
  - **Lightweight**: No external audio dependencies - uses platform-native tools
45
54
 
46
55
  ## API Reference
@@ -50,18 +59,160 @@ const speakers = await client.getSpeakers();
50
59
  Main client class for interacting with VOICEVOX engine.
51
60
 
52
61
  #### Constructor
62
+
53
63
  ```typescript
54
64
  new VoicevoxClient(config: VoicevoxConfig)
55
65
  ```
56
66
 
67
+ **VoicevoxConfig:**
68
+
69
+ ```typescript
70
+ interface VoicevoxConfig {
71
+ url: string; // VOICEVOX engine URL
72
+ defaultSpeaker?: number; // Default speaker ID (default: 1)
73
+ defaultSpeedScale?: number; // Default playback speed (default: 1.0)
74
+ defaultPlaybackOptions?: PlaybackOptions; // Default playback options
75
+ }
76
+ ```
77
+
57
78
  #### Methods
58
79
 
59
- - `speak(text: string | string[] | SpeechSegment[], speaker?: number, speedScale?: number): Promise<string>`
60
- - `generateQuery(text: string, speaker?: number, speedScale?: number): Promise<AudioQuery>`
61
- - `generateAudioFile(textOrQuery: string | AudioQuery, outputPath?: string, speaker?: number, speedScale?: number): Promise<string>`
62
- - `getSpeakers(): Promise<Speaker[]>`
63
- - `getSpeakerInfo(uuid: string): Promise<SpeakerInfo>`
64
- - `clearQueue(): Promise<void>`
80
+ ##### speak
81
+
82
+ Convert text to speech and play it.
83
+
84
+ ```typescript
85
+ speak(
86
+ input: string | string[] | SpeechSegment[],
87
+ options?: SpeakOptions
88
+ ): Promise<string>
89
+ ```
90
+
91
+ **SpeakOptions:**
92
+
93
+ ```typescript
94
+ interface SpeakOptions {
95
+ speaker?: number; // Speaker ID
96
+ speedScale?: number; // Playback speed
97
+ immediate?: boolean; // Start playback immediately (default: true)
98
+ waitForStart?: boolean; // Wait for playback to start (default: false)
99
+ waitForEnd?: boolean; // Wait for playback to end (default: false)
100
+ }
101
+ ```
102
+
103
+ **Examples:**
104
+
105
+ ```typescript
106
+ // Simple text
107
+ await client.speak('Hello');
108
+
109
+ // Multiple texts as array
110
+ await client.speak(['Hello', 'How are you?']);
111
+
112
+ // Speech segments with different speakers
113
+ await client.speak([
114
+ { text: 'Hello', speaker: 1 },
115
+ { text: 'Nice to meet you', speaker: 3 }
116
+ ]);
117
+
118
+ // With options
119
+ await client.speak('Important message', {
120
+ speaker: 2,
121
+ speedScale: 1.5,
122
+ immediate: true,
123
+ waitForEnd: true
124
+ });
125
+ ```
126
+
127
+ ##### generateQuery
128
+
129
+ Generate an AudioQuery for voice synthesis.
130
+
131
+ ```typescript
132
+ generateQuery(
133
+ text: string,
134
+ speaker?: number,
135
+ speedScale?: number
136
+ ): Promise<AudioQuery>
137
+ ```
138
+
139
+ ##### generateAudioFile
140
+
141
+ Generate an audio file from text or AudioQuery.
142
+
143
+ ```typescript
144
+ generateAudioFile(
145
+ textOrQuery: string | AudioQuery,
146
+ outputPath?: string,
147
+ speaker?: number,
148
+ speedScale?: number
149
+ ): Promise<string>
150
+ ```
151
+
152
+ ##### enqueueAudioGeneration
153
+
154
+ Add text or query to the audio generation queue.
155
+
156
+ ```typescript
157
+ enqueueAudioGeneration(
158
+ input: string | string[] | SpeechSegment[] | AudioQuery,
159
+ options?: SpeakOptions
160
+ ): Promise<string>
161
+ ```
162
+
163
+ ##### Other Methods
164
+
165
+ - `getSpeakers(): Promise<Speaker[]>` - Get list of available speakers
166
+ - `getSpeakerInfo(uuid: string): Promise<SpeakerInfo>` - Get speaker details
167
+ - `clearQueue(): Promise<void>` - Clear the playback queue
168
+ - `startPlayback(): void` - Start queue playback
169
+ - `pausePlayback(): void` - Pause queue playback
170
+ - `resumePlayback(): void` - Resume queue playback
171
+ - `getQueueLength(): number` - Get number of items in queue
172
+ - `isQueueEmpty(): boolean` - Check if queue is empty
173
+ - `isPlaying(): boolean` - Check if currently playing
174
+
175
+ ## Playback Options
176
+
177
+ ### Immediate Playback (`immediate: true`)
178
+
179
+ Clear existing queue and play audio immediately:
180
+
181
+ ```typescript
182
+ // Stops current playback, clears queue, and plays new audio
183
+ await client.speak('Urgent notification', {
184
+ immediate: true,
185
+ waitForEnd: true
186
+ });
187
+ ```
188
+
189
+ ### Synchronous Playback (`waitForEnd: true`)
190
+
191
+ Wait for playback to complete before continuing:
192
+
193
+ ```typescript
194
+ // Step-by-step audio guide
195
+ await client.speak('Step 1: Open the file', { waitForEnd: true });
196
+ await client.speak('Step 2: Click the button', { waitForEnd: true });
197
+ ```
198
+
199
+ ### Queue-based Playback (`immediate: false`)
200
+
201
+ Add to queue without auto-starting:
202
+
203
+ ```typescript
204
+ client.speak('First message', { immediate: false });
205
+ client.speak('Second message', { immediate: false });
206
+ client.startPlayback(); // Start playing queue
207
+ ```
208
+
209
+ ## Streaming Playback
210
+
211
+ When `ffplay` is available, the library can play audio directly from memory without creating temporary files:
212
+
213
+ - Faster first audio playback (no disk I/O)
214
+ - Reduced disk usage
215
+ - Can be disabled via environment variable: `VOICEVOX_STREAMING_PLAYBACK=false`
65
216
 
66
217
  ## Audio Requirements
67
218
 
@@ -75,6 +226,19 @@ The package uses platform-native audio tools for playback:
75
226
  - `play` (SoX)
76
227
  - `ffplay` (FFmpeg)
77
228
 
229
+ For streaming playback (optional):
230
+ - Install `ffmpeg` which includes `ffplay`
231
+
232
+ ## Environment Variables
233
+
234
+ - `VOICEVOX_URL`: VOICEVOX engine URL (default: `http://localhost:50021`)
235
+ - `VOICEVOX_DEFAULT_SPEAKER`: Default speaker ID (default: `1`)
236
+ - `VOICEVOX_DEFAULT_SPEED_SCALE`: Default playback speed (default: `1.0`)
237
+ - `VOICEVOX_DEFAULT_IMMEDIATE`: Start playback immediately (default: `true`)
238
+ - `VOICEVOX_DEFAULT_WAIT_FOR_START`: Wait for playback start (default: `false`)
239
+ - `VOICEVOX_DEFAULT_WAIT_FOR_END`: Wait for playback end (default: `false`)
240
+ - `VOICEVOX_STREAMING_PLAYBACK`: Enable streaming playback (default: `true`)
241
+
78
242
  ## Development
79
243
 
80
244
  This package is part of the MCP VOICEVOX project. For development:
@@ -89,10 +253,10 @@ npm run build
89
253
  # Run tests (includes audio playback mocking)
90
254
  npm test
91
255
 
92
- # Type checking
256
+ # Type checking and linting
93
257
  npm run lint
94
258
  ```
95
259
 
96
260
  ## License
97
261
 
98
- MIT License
262
+ MIT License
package/dist/api.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { AudioQuery, Speaker } from "./types";
1
+ import type { AudioQuery, Speaker } from './types';
2
2
  export declare class VoicevoxApi {
3
3
  private readonly baseUrl;
4
4
  constructor(baseUrl: string);
@@ -23,9 +23,14 @@ export declare class VoicevoxApi {
23
23
  */
24
24
  getSpeakerInfo(uuid: string): Promise<Speaker>;
25
25
  /**
26
- * APIリクエストを実行
27
- * @private
26
+ * VOICEVOX Engine の接続状態をチェック
27
+ * @returns 接続情報(connected, version, url)
28
28
  */
29
+ checkHealth(): Promise<{
30
+ connected: boolean;
31
+ version?: string;
32
+ url: string;
33
+ }>;
29
34
  private makeRequest;
30
35
  /**
31
36
  * URLの正規化
package/dist/api.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAG9C,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,OAAO,EAAE,MAAM;IAI3B;;OAEG;IACU,aAAa,CACxB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAAU,GAClB,OAAO,CAAC,UAAU,CAAC;IAetB;;OAEG;IACU,UAAU,CACrB,KAAK,EAAE,UAAU,EACjB,OAAO,GAAE,MAAU,GAClB,OAAO,CAAC,WAAW,CAAC;IAiBvB;;OAEG;IACU,uBAAuB,CAClC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,UAAU,CAAC;IAuBtB;;OAEG;IACU,WAAW,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAkB9C;;OAEG;IACU,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAa3D;;;OAGG;YACW,WAAW;IAuCzB;;;OAGG;IACH,OAAO,CAAC,YAAY;CAGrB"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAElD,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAEhC,YAAY,OAAO,EAAE,MAAM,EAE1B;IAED;;OAEG;IACU,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,SAAI,GAAG,OAAO,CAAC,UAAU,CAAC,CAWzE;IAED;;OAEG;IACU,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,SAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CAe5E;IAED;;OAEG;IACU,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAkB9G;IAED;;OAEG;IACU,WAAW,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAW7C;IAED;;OAEG;IACU,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAW1D;IAED;;;OAGG;IACU,WAAW,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAezF;YAMa,WAAW;IAoCzB;;;OAGG;IACH,OAAO,CAAC,YAAY;CAGrB"}
package/dist/api.js CHANGED
@@ -7,6 +7,7 @@ exports.VoicevoxApi = void 0;
7
7
  const axios_1 = __importDefault(require("axios"));
8
8
  const error_1 = require("./error");
9
9
  class VoicevoxApi {
10
+ baseUrl;
10
11
  constructor(baseUrl) {
11
12
  this.baseUrl = this.normalizeUrl(baseUrl);
12
13
  }
@@ -16,13 +17,13 @@ class VoicevoxApi {
16
17
  async generateQuery(text, speaker = 1) {
17
18
  try {
18
19
  const endpoint = `/audio_query?text=${encodeURIComponent(text)}&speaker=${encodeURIComponent(speaker.toString())}`;
19
- const query = await this.makeRequest("post", endpoint, null, {
20
- "Content-Type": "application/json",
20
+ const query = await this.makeRequest('post', endpoint, null, {
21
+ 'Content-Type': 'application/json',
21
22
  });
22
23
  return query;
23
24
  }
24
25
  catch (error) {
25
- throw (0, error_1.handleError)("音声クエリ生成中にエラーが発生しました", error);
26
+ throw (0, error_1.handleError)('音声クエリ生成中にエラーが発生しました', error);
26
27
  }
27
28
  }
28
29
  /**
@@ -30,13 +31,13 @@ class VoicevoxApi {
30
31
  */
31
32
  async synthesize(query, speaker = 1) {
32
33
  try {
33
- return await this.makeRequest("post", `/synthesis?speaker=${encodeURIComponent(speaker.toString())}`, query, {
34
- "Content-Type": "application/json",
35
- Accept: "audio/wav",
36
- }, "arraybuffer");
34
+ return await this.makeRequest('post', `/synthesis?speaker=${encodeURIComponent(speaker.toString())}`, query, {
35
+ 'Content-Type': 'application/json',
36
+ Accept: 'audio/wav',
37
+ }, 'arraybuffer');
37
38
  }
38
39
  catch (error) {
39
- throw (0, error_1.handleError)("音声合成中にエラーが発生しました", error);
40
+ throw (0, error_1.handleError)('音声合成中にエラーが発生しました', error);
40
41
  }
41
42
  }
42
43
  /**
@@ -48,13 +49,13 @@ class VoicevoxApi {
48
49
  if (coreVersion) {
49
50
  endpoint += `&core_version=${encodeURIComponent(coreVersion)}`;
50
51
  }
51
- const query = await this.makeRequest("post", endpoint, null, {
52
- "Content-Type": "application/json",
52
+ const query = await this.makeRequest('post', endpoint, null, {
53
+ 'Content-Type': 'application/json',
53
54
  });
54
55
  return query;
55
56
  }
56
57
  catch (error) {
57
- throw (0, error_1.handleError)("プリセットを使用した音声クエリ生成中にエラーが発生しました", error);
58
+ throw (0, error_1.handleError)('プリセットを使用した音声クエリ生成中にエラーが発生しました', error);
58
59
  }
59
60
  }
60
61
  /**
@@ -62,14 +63,14 @@ class VoicevoxApi {
62
63
  */
63
64
  async getSpeakers() {
64
65
  try {
65
- const endpoint = "/speakers";
66
- const response = await this.makeRequest("get", endpoint, null, {
67
- "Content-Type": "application/json",
66
+ const endpoint = '/speakers';
67
+ const response = await this.makeRequest('get', endpoint, null, {
68
+ 'Content-Type': 'application/json',
68
69
  });
69
70
  return response;
70
71
  }
71
72
  catch (error) {
72
- throw (0, error_1.handleError)("スピーカー一覧取得中にエラーが発生しました", error);
73
+ throw (0, error_1.handleError)('スピーカー一覧取得中にエラーが発生しました', error);
73
74
  }
74
75
  }
75
76
  /**
@@ -78,20 +79,41 @@ class VoicevoxApi {
78
79
  async getSpeakerInfo(uuid) {
79
80
  try {
80
81
  const endpoint = `/speaker_info?speaker_uuid=${encodeURIComponent(uuid)}`;
81
- const response = await this.makeRequest("get", endpoint, null, {
82
- "Content-Type": "application/json",
82
+ const response = await this.makeRequest('get', endpoint, null, {
83
+ 'Content-Type': 'application/json',
83
84
  });
84
85
  return response;
85
86
  }
86
87
  catch (error) {
87
- throw (0, error_1.handleError)("スピーカー情報取得中にエラーが発生しました", error);
88
+ throw (0, error_1.handleError)('スピーカー情報取得中にエラーが発生しました', error);
89
+ }
90
+ }
91
+ /**
92
+ * VOICEVOX Engine の接続状態をチェック
93
+ * @returns 接続情報(connected, version, url)
94
+ */
95
+ async checkHealth() {
96
+ try {
97
+ // /version エンドポイントを使用(軽量)
98
+ const version = await this.makeRequest('get', '/version');
99
+ return {
100
+ connected: true,
101
+ version,
102
+ url: this.baseUrl,
103
+ };
104
+ }
105
+ catch {
106
+ return {
107
+ connected: false,
108
+ url: this.baseUrl,
109
+ };
88
110
  }
89
111
  }
90
112
  /**
91
113
  * APIリクエストを実行
92
114
  * @private
93
115
  */
94
- async makeRequest(method, endpoint, data = null, headers = {}, responseType = "json") {
116
+ async makeRequest(method, endpoint, data = null, headers = {}, responseType = 'json') {
95
117
  try {
96
118
  const url = `${this.baseUrl}${endpoint}`;
97
119
  const config = {
@@ -120,7 +142,7 @@ class VoicevoxApi {
120
142
  * @private
121
143
  */
122
144
  normalizeUrl(url) {
123
- return url.endsWith("/") ? url.slice(0, -1) : url;
145
+ return url.endsWith('/') ? url.slice(0, -1) : url;
124
146
  }
125
147
  }
126
148
  exports.VoicevoxApi = VoicevoxApi;
package/dist/api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
package/dist/client.d.ts CHANGED
@@ -1,67 +1,33 @@
1
- import { AudioQuery, SpeechSegment, VoicevoxConfig, PlaybackOptions } from "./types";
1
+ import { QueueService } from './queue/queue-service';
2
+ import type { AudioQuery, PlaybackOptions, SpeakResult, SpeechSegment, VoicevoxConfig } from './types';
3
+ /**
4
+ * 話者オプション(統一API用)
5
+ */
6
+ export interface SpeakOptions extends PlaybackOptions {
7
+ /** 話者ID */
8
+ speaker?: number;
9
+ /** 再生速度 */
10
+ speedScale?: number;
11
+ }
2
12
  export declare class VoicevoxClient {
3
- private readonly player;
13
+ private readonly queueService;
4
14
  private readonly api;
5
15
  private readonly defaultSpeaker;
6
16
  private readonly defaultSpeedScale;
17
+ private readonly defaultVolumeScale?;
18
+ private readonly defaultPitchScale?;
19
+ private readonly defaultPrePhonemeLength?;
20
+ private readonly defaultPostPhonemeLength?;
7
21
  private readonly defaultPlaybackOptions;
8
22
  private readonly maxSegmentLength;
9
23
  constructor(config: VoicevoxConfig);
10
24
  /**
11
- * PlaybackOptionsをマージし、undefinedの値を除外します
12
- */
13
- private mergePlaybackOptions;
14
- /**
15
- * テキストを音声に変換して再生します
16
- * @param text 変換するテキスト
17
- * @param speaker 話者ID(オプション)
18
- * @param speedScale 再生速度(オプション)
19
- * @returns 処理結果のメッセージ
20
- */
21
- speak(text: string, speaker?: number, speedScale?: number): Promise<string>;
22
- /**
23
- * テキスト配列を音声に変換して再生します
24
- * @param texts 変換するテキストの配列
25
- * @param speaker 話者ID(オプション、全体のデフォルト)
26
- * @param speedScale 再生速度(オプション)
27
- * @returns 処理結果のメッセージ
28
- */
29
- speak(texts: string[], speaker?: number, speedScale?: number): Promise<string>;
30
- /**
31
- * テキストと話者のペア配列を音声に変換して再生します
32
- * @param segments テキストと話者のペア配列
33
- * @param defaultSpeaker デフォルト話者ID(オプション)
34
- * @param speedScale 再生速度(オプション)
35
- * @returns 処理結果のメッセージ
36
- */
37
- speak(segments: SpeechSegment[], defaultSpeaker?: number, speedScale?: number): Promise<string>;
38
- /**
39
- * テキストを音声に変換して再生します(オプション付き)
40
- * @param text 変換するテキスト
41
- * @param speaker 話者ID(オプション)
42
- * @param speedScale 再生速度(オプション)
43
- * @param options 再生オプション
44
- * @returns 処理結果のメッセージ
25
+ * テキストを音声に変換して再生します(統一API)
26
+ * @param input テキスト、テキスト配列、またはセグメント配列
27
+ * @param options 再生オプション(speaker, speedScale, immediate, waitForStart, waitForEnd)
28
+ * @returns 処理結果
45
29
  */
46
- speak(text: string, speaker?: number, speedScale?: number, options?: PlaybackOptions): Promise<string>;
47
- /**
48
- * テキスト配列を音声に変換して再生します(オプション付き)
49
- * @param texts 変換するテキストの配列
50
- * @param speaker 話者ID(オプション、全体のデフォルト)
51
- * @param speedScale 再生速度(オプション)
52
- * @param options 再生オプション
53
- * @returns 処理結果のメッセージ
54
- */
55
- speak(texts: string[], speaker?: number, speedScale?: number, options?: PlaybackOptions): Promise<string>;
56
- /**
57
- * テキストと話者のペア配列を音声に変換して再生します(オプション付き)
58
- * @param segments テキストと話者のペア配列
59
- * @param defaultSpeaker デフォルト話者ID(オプション)
60
- * @param speedScale 再生速度(オプション)
61
- * @param options 再生オプション
62
- * @returns 処理結果のメッセージ
63
- */
64
- speak(segments: SpeechSegment[], defaultSpeaker?: number, speedScale?: number, options?: PlaybackOptions): Promise<string>;
30
+ speak(input: string | string[] | SpeechSegment[], options?: SpeakOptions): Promise<SpeakResult>;
65
31
  /**
66
32
  * 入力を統一フォーマット(SpeechSegment[])に変換
67
33
  * @private
@@ -85,73 +51,12 @@ export declare class VoicevoxClient {
85
51
  */
86
52
  generateAudioFile(textOrQuery: string | AudioQuery, outputPath?: string, speaker?: number, speedScale?: number): Promise<string>;
87
53
  /**
88
- * テキストを音声ファイル生成キューに追加します
89
- * @param text テキスト
90
- * @param speaker 話者ID(オプション)
91
- * @param speedScale 再生速度(オプション)
92
- * @returns 処理結果のメッセージ
93
- */
94
- enqueueAudioGeneration(text: string, speaker?: number, speedScale?: number): Promise<string>;
95
- /**
96
- * テキスト配列を音声ファイル生成キューに追加します
97
- * @param texts テキスト配列
98
- * @param speaker 話者ID(オプション、全体のデフォルト)
99
- * @param speedScale 再生速度(オプション)
100
- * @returns 処理結果のメッセージ
101
- */
102
- enqueueAudioGeneration(texts: string[], speaker?: number, speedScale?: number): Promise<string>;
103
- /**
104
- * テキストと話者のペア配列を音声ファイル生成キューに追加します
105
- * @param segments テキストと話者のペア配列
106
- * @param defaultSpeaker デフォルト話者ID(オプション)
107
- * @param speedScale 再生速度(オプション)
108
- * @returns 処理結果のメッセージ
109
- */
110
- enqueueAudioGeneration(segments: SpeechSegment[], defaultSpeaker?: number, speedScale?: number): Promise<string>;
111
- /**
112
- * 音声合成用クエリを音声ファイル生成キューに追加します
113
- * @param query 音声合成用クエリ
114
- * @param speaker 話者ID(オプション)
115
- * @param speedScale 再生速度(オプション)
116
- * @returns 処理結果のメッセージ
117
- */
118
- enqueueAudioGeneration(query: AudioQuery, speaker?: number, speedScale?: number): Promise<string>;
119
- /**
120
- * テキストを音声ファイル生成キューに追加します(オプション付き)
121
- * @param text テキスト
122
- * @param speaker 話者ID(オプション)
123
- * @param speedScale 再生速度(オプション)
124
- * @param options 再生オプション
125
- * @returns 処理結果のメッセージ
126
- */
127
- enqueueAudioGeneration(text: string, speaker?: number, speedScale?: number, options?: PlaybackOptions): Promise<string>;
128
- /**
129
- * テキスト配列を音声ファイル生成キューに追加します(オプション付き)
130
- * @param texts テキスト配列
131
- * @param speaker 話者ID(オプション、全体のデフォルト)
132
- * @param speedScale 再生速度(オプション)
54
+ * テキストを音声ファイル生成キューに追加します(統一API)
55
+ * @param input テキスト、テキスト配列、セグメント配列、またはAudioQuery
133
56
  * @param options 再生オプション
134
- * @returns 処理結果のメッセージ
57
+ * @returns 処理結果
135
58
  */
136
- enqueueAudioGeneration(texts: string[], speaker?: number, speedScale?: number, options?: PlaybackOptions): Promise<string>;
137
- /**
138
- * テキストと話者のペア配列を音声ファイル生成キューに追加します(オプション付き)
139
- * @param segments テキストと話者のペア配列
140
- * @param defaultSpeaker デフォルト話者ID(オプション)
141
- * @param speedScale 再生速度(オプション)
142
- * @param options 再生オプション
143
- * @returns 処理結果のメッセージ
144
- */
145
- enqueueAudioGeneration(segments: SpeechSegment[], defaultSpeaker?: number, speedScale?: number, options?: PlaybackOptions): Promise<string>;
146
- /**
147
- * 音声合成用クエリを音声ファイル生成キューに追加します(オプション付き)
148
- * @param query 音声合成用クエリ
149
- * @param speaker 話者ID(オプション)
150
- * @param speedScale 再生速度(オプション)
151
- * @param options 再生オプション
152
- * @returns 処理結果のメッセージ
153
- */
154
- enqueueAudioGeneration(query: AudioQuery, speaker?: number, speedScale?: number, options?: PlaybackOptions): Promise<string>;
59
+ enqueueAudioGeneration(input: string | string[] | SpeechSegment[] | AudioQuery, options?: SpeakOptions): Promise<SpeakResult>;
155
60
  /**
156
61
  * 話者IDを取得(指定がない場合はデフォルト値を使用)
157
62
  * @private
@@ -162,6 +67,16 @@ export declare class VoicevoxClient {
162
67
  * @private
163
68
  */
164
69
  private getSpeedScale;
70
+ /**
71
+ * SpeakResultを生成
72
+ * @private
73
+ */
74
+ private createSpeakResult;
75
+ /**
76
+ * テキストプレビューを生成
77
+ * @private
78
+ */
79
+ private createTextPreview;
165
80
  private validateConfig;
166
81
  /**
167
82
  * キューをクリア
@@ -178,5 +93,43 @@ export declare class VoicevoxClient {
178
93
  * @returns スピーカー情報
179
94
  */
180
95
  getSpeakerInfo(uuid: string): Promise<import("./types").Speaker>;
96
+ /**
97
+ * VOICEVOX Engine の接続状態をチェック
98
+ * @returns 接続情報(connected, version, url)
99
+ */
100
+ checkHealth(): Promise<{
101
+ connected: boolean;
102
+ version?: string;
103
+ url: string;
104
+ }>;
105
+ /**
106
+ * QueueServiceインスタンスを取得
107
+ * 高度な操作のため公開
108
+ */
109
+ getQueueService(): QueueService;
110
+ /**
111
+ * 再生を開始
112
+ */
113
+ startPlayback(): void;
114
+ /**
115
+ * 再生を一時停止
116
+ */
117
+ pausePlayback(): void;
118
+ /**
119
+ * 再生を再開
120
+ */
121
+ resumePlayback(): void;
122
+ /**
123
+ * キュー内のアイテム数を取得
124
+ */
125
+ getQueueLength(): number;
126
+ /**
127
+ * キューが空かどうかを確認
128
+ */
129
+ isQueueEmpty(): boolean;
130
+ /**
131
+ * キューが再生中かどうかを確認
132
+ */
133
+ isPlaying(): boolean;
181
134
  }
182
135
  //# sourceMappingURL=client.d.ts.map