@kajidog/voicevox-client 0.4.1 → 0.6.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 (114) hide show
  1. package/LICENSE +14 -14
  2. package/dist/accent-utils.d.ts +93 -0
  3. package/dist/accent-utils.d.ts.map +1 -0
  4. package/dist/accent-utils.js +211 -0
  5. package/dist/accent-utils.js.map +1 -0
  6. package/dist/api.d.ts +40 -2
  7. package/dist/api.d.ts.map +1 -1
  8. package/dist/api.js +90 -0
  9. package/dist/api.js.map +1 -1
  10. package/dist/cache-policy.d.ts +21 -0
  11. package/dist/cache-policy.d.ts.map +1 -0
  12. package/dist/cache-policy.js +31 -0
  13. package/dist/cache-policy.js.map +1 -0
  14. package/dist/client.d.ts +28 -119
  15. package/dist/client.d.ts.map +1 -1
  16. package/dist/client.js +48 -417
  17. package/dist/client.js.map +1 -1
  18. package/dist/effect/config.d.ts +43 -0
  19. package/dist/effect/config.d.ts.map +1 -0
  20. package/dist/effect/config.js +45 -0
  21. package/dist/effect/config.js.map +1 -0
  22. package/dist/effect/context.d.ts +33 -0
  23. package/dist/effect/context.d.ts.map +1 -0
  24. package/dist/effect/context.js +10 -0
  25. package/dist/effect/context.js.map +1 -0
  26. package/dist/effect/errors.d.ts +130 -0
  27. package/dist/effect/errors.d.ts.map +1 -0
  28. package/dist/effect/errors.js +121 -0
  29. package/dist/effect/errors.js.map +1 -0
  30. package/dist/effect/index.d.ts +34 -0
  31. package/dist/effect/index.d.ts.map +1 -0
  32. package/dist/effect/index.js +67 -0
  33. package/dist/effect/index.js.map +1 -0
  34. package/dist/effect/queue-manager.d.ts +34 -0
  35. package/dist/effect/queue-manager.d.ts.map +1 -0
  36. package/dist/effect/queue-manager.js +59 -0
  37. package/dist/effect/queue-manager.js.map +1 -0
  38. package/dist/effect/services/api-service.d.ts +58 -0
  39. package/dist/effect/services/api-service.d.ts.map +1 -0
  40. package/dist/effect/services/api-service.js +90 -0
  41. package/dist/effect/services/api-service.js.map +1 -0
  42. package/dist/effect/services/audio-generator-service.d.ts +78 -0
  43. package/dist/effect/services/audio-generator-service.d.ts.map +1 -0
  44. package/dist/effect/services/audio-generator-service.js +187 -0
  45. package/dist/effect/services/audio-generator-service.js.map +1 -0
  46. package/dist/effect/services/audio-player-service.d.ts +101 -0
  47. package/dist/effect/services/audio-player-service.d.ts.map +1 -0
  48. package/dist/effect/services/audio-player-service.js +297 -0
  49. package/dist/effect/services/audio-player-service.js.map +1 -0
  50. package/dist/effect/services/event-manager-service.d.ts +96 -0
  51. package/dist/effect/services/event-manager-service.d.ts.map +1 -0
  52. package/dist/effect/services/event-manager-service.js +208 -0
  53. package/dist/effect/services/event-manager-service.js.map +1 -0
  54. package/dist/effect/services/file-manager-service.d.ts +91 -0
  55. package/dist/effect/services/file-manager-service.d.ts.map +1 -0
  56. package/dist/effect/services/file-manager-service.js +215 -0
  57. package/dist/effect/services/file-manager-service.js.map +1 -0
  58. package/dist/effect/utils.d.ts +118 -0
  59. package/dist/effect/utils.d.ts.map +1 -0
  60. package/dist/effect/utils.js +186 -0
  61. package/dist/effect/utils.js.map +1 -0
  62. package/dist/error.js.map +1 -1
  63. package/dist/index.d.ts +3 -1
  64. package/dist/index.d.ts.map +1 -1
  65. package/dist/index.js +3 -1
  66. package/dist/index.js.map +1 -1
  67. package/dist/playback/node-playback-strategy.d.ts.map +1 -1
  68. package/dist/playback/node-playback-strategy.js +2 -6
  69. package/dist/playback/node-playback-strategy.js.map +1 -1
  70. package/dist/player.d.ts +110 -0
  71. package/dist/player.d.ts.map +1 -0
  72. package/dist/player.js +183 -0
  73. package/dist/player.js.map +1 -0
  74. package/dist/queue/audio-player.d.ts +44 -0
  75. package/dist/queue/audio-player.d.ts.map +1 -0
  76. package/dist/queue/audio-player.js +344 -0
  77. package/dist/queue/audio-player.js.map +1 -0
  78. package/dist/queue/file-manager.js +9 -9
  79. package/dist/queue/file-manager.js.map +1 -1
  80. package/dist/queue/manager.d.ts +134 -0
  81. package/dist/queue/manager.d.ts.map +1 -0
  82. package/dist/queue/manager.js +564 -0
  83. package/dist/queue/manager.js.map +1 -0
  84. package/dist/queue/queue-service.d.ts.map +1 -1
  85. package/dist/queue/queue-service.js +20 -6
  86. package/dist/queue/queue-service.js.map +1 -1
  87. package/dist/queue/types.d.ts +3 -1
  88. package/dist/queue/types.d.ts.map +1 -1
  89. package/dist/queue/types.js.map +1 -1
  90. package/dist/services/dictionary-service.d.ts +35 -0
  91. package/dist/services/dictionary-service.d.ts.map +1 -0
  92. package/dist/services/dictionary-service.js +188 -0
  93. package/dist/services/dictionary-service.js.map +1 -0
  94. package/dist/services/speech-service.d.ts +43 -0
  95. package/dist/services/speech-service.d.ts.map +1 -0
  96. package/dist/services/speech-service.js +236 -0
  97. package/dist/services/speech-service.js.map +1 -0
  98. package/dist/shared-queue-manager.d.ts +119 -0
  99. package/dist/shared-queue-manager.d.ts.map +1 -0
  100. package/dist/shared-queue-manager.js +487 -0
  101. package/dist/shared-queue-manager.js.map +1 -0
  102. package/dist/state/queue-state-machine.d.ts.map +1 -1
  103. package/dist/state/queue-state-machine.js +13 -0
  104. package/dist/state/queue-state-machine.js.map +1 -1
  105. package/dist/state/types.d.ts +2 -0
  106. package/dist/state/types.d.ts.map +1 -1
  107. package/dist/state/types.js.map +1 -1
  108. package/dist/types.d.ts +28 -0
  109. package/dist/types.d.ts.map +1 -1
  110. package/dist/utils.d.ts +16 -0
  111. package/dist/utils.d.ts.map +1 -1
  112. package/dist/utils.js +36 -0
  113. package/dist/utils.js.map +1 -1
  114. package/package.json +1 -1
package/dist/client.d.ts CHANGED
@@ -1,150 +1,59 @@
1
+ import type { NormalizedDictionaryWord } from './accent-utils.js';
1
2
  import { QueueService } from './queue/queue-service.js';
2
- import type { AudioQuery, PlaybackOptions, SpeakResult, SpeechSegment, VoicevoxConfig } from './types.js';
3
+ import type { DictionaryWordInput as DictionaryWordInputBase, DictionaryWordUpdateInput as DictionaryWordUpdateInputBase } from './services/dictionary-service.js';
4
+ import type { SpeechServiceSpeakOptions } from './services/speech-service.js';
5
+ import type { AccentPhrase, AudioQuery, SpeakResult, SpeechSegment, VoicevoxConfig } from './types.js';
3
6
  /**
4
7
  * 話者オプション(統一API用)
5
8
  */
6
- export interface SpeakOptions extends PlaybackOptions {
7
- /** 話者ID */
8
- speaker?: number;
9
- /** 再生速度 */
10
- speedScale?: number;
11
- /** 音高 (-0.15 ~ 0.15) */
12
- pitchScale?: number;
13
- /** 抑揚 (0.0 ~ 2.0) */
14
- intonationScale?: number;
15
- /** 音量 (0.0 ~ 2.0) */
16
- volumeScale?: number;
17
- /** 音声の前の無音時間(秒) */
18
- prePhonemeLength?: number;
19
- /** 音声の後の無音時間(秒) */
20
- postPhonemeLength?: number;
9
+ export interface SpeakOptions extends SpeechServiceSpeakOptions {
10
+ }
11
+ /**
12
+ * 辞書単語追加入力
13
+ */
14
+ export interface DictionaryWordInput extends DictionaryWordInputBase {
15
+ }
16
+ /**
17
+ * 辞書単語更新入力
18
+ */
19
+ export interface DictionaryWordUpdateInput extends DictionaryWordUpdateInputBase {
21
20
  }
22
21
  export declare class VoicevoxClient {
23
22
  private readonly queueService;
24
23
  private readonly api;
25
- private readonly defaultSpeaker;
26
- private readonly defaultSpeedScale;
27
- private readonly defaultVolumeScale?;
28
- private readonly defaultPitchScale?;
29
- private readonly defaultPrePhonemeLength?;
30
- private readonly defaultPostPhonemeLength?;
31
24
  private readonly defaultPlaybackOptions;
32
- private readonly maxSegmentLength;
25
+ private readonly dictionaryService;
26
+ private readonly speechService;
33
27
  constructor(config: VoicevoxConfig);
34
- /**
35
- * テキストを音声に変換して再生します(統一API)
36
- * @param input テキスト、テキスト配列、またはセグメント配列
37
- * @param options 再生オプション(speaker, speedScale, immediate, waitForStart, waitForEnd)
38
- * @returns 処理結果
39
- */
40
28
  speak(input: string | string[] | SpeechSegment[], options?: SpeakOptions): Promise<SpeakResult>;
41
- /**
42
- * 入力を統一フォーマット(SpeechSegment[])に変換
43
- * @private
44
- */
45
- private normalizeInput;
46
- /**
47
- * テキストから音声合成用クエリを生成します
48
- * @param text 変換するテキスト
49
- * @param speaker 話者ID(オプション)
50
- * @param speedScale 再生速度(オプション)
51
- * @returns 音声合成用クエリ
52
- */
53
29
  generateQuery(text: string, speaker?: number, speedScale?: number): Promise<AudioQuery>;
54
- /**
55
- * テキストから直接音声ファイルを生成します
56
- * @param textOrQuery テキストまたは音声合成用クエリ
57
- * @param outputPath 出力ファイルパス(オプション、省略時は一時ファイル)
58
- * @param speaker 話者ID(オプション)
59
- * @param speedScale 再生速度(オプション)
60
- * @returns 生成した音声ファイルのパス
61
- */
62
30
  generateAudioFile(textOrQuery: string | AudioQuery, outputPath?: string, speaker?: number, speedScale?: number): Promise<string>;
63
- /**
64
- * テキストを音声ファイル生成キューに追加します(統一API)
65
- * @param input テキスト、テキスト配列、セグメント配列、またはAudioQuery
66
- * @param options 再生オプション
67
- * @returns 処理結果
68
- */
69
31
  enqueueAudioGeneration(input: string | string[] | SpeechSegment[] | AudioQuery, options?: SpeakOptions): Promise<SpeakResult>;
70
- /**
71
- * 話者IDを取得(指定がない場合はデフォルト値を使用)
72
- * @private
73
- */
74
- private getSpeakerId;
75
- /**
76
- * 再生速度を取得(指定がない場合はデフォルト値を使用)
77
- * @private
78
- */
79
- private getSpeedScale;
80
- /**
81
- * AudioQueryにSpeakOptionsの音声パラメータを適用
82
- * @private
83
- */
84
- private applyAudioOptions;
85
- /**
86
- * SpeakResultを生成
87
- * @private
88
- */
89
- private createSpeakResult;
90
- /**
91
- * テキストプレビューを生成
92
- * @private
93
- */
94
- private createTextPreview;
95
32
  private validateConfig;
96
- /**
97
- * キューをクリア
98
- */
33
+ getDictionary(): Promise<NormalizedDictionaryWord[]>;
34
+ addDictionaryWord(input: DictionaryWordInput): Promise<NormalizedDictionaryWord[]>;
35
+ addDictionaryWords(inputs: DictionaryWordInput[]): Promise<NormalizedDictionaryWord[]>;
36
+ updateDictionaryWord(input: DictionaryWordUpdateInput): Promise<NormalizedDictionaryWord[]>;
37
+ updateDictionaryWords(inputs: DictionaryWordUpdateInput[]): Promise<NormalizedDictionaryWord[]>;
38
+ deleteDictionaryWord(wordUuid: string): Promise<NormalizedDictionaryWord[]>;
39
+ getAccentNotation(text: string, speaker?: number): Promise<{
40
+ notation: string;
41
+ accentPhrases: AccentPhrase[];
42
+ }>;
99
43
  clearQueue(): Promise<void>;
100
- /**
101
- * スピーカー一覧を取得します
102
- * @returns スピーカー情報の配列
103
- */
104
44
  getSpeakers(): Promise<import("./types.js").Speaker[]>;
105
- /**
106
- * スピーカーの情報を取得
107
- * @param uuid スピーカーUUID
108
- * @returns スピーカー情報
109
- */
110
- getSpeakerInfo(uuid: string): Promise<import("./types.js").Speaker>;
111
- /**
112
- * VOICEVOX Engine の接続状態をチェック
113
- * @returns 接続情報(connected, version, url)
114
- */
45
+ getSpeakerInfo(uuid: string): Promise<import("./types.js").SpeakerInfo>;
115
46
  checkHealth(): Promise<{
116
47
  connected: boolean;
117
48
  version?: string;
118
49
  url: string;
119
50
  }>;
120
- /**
121
- * QueueServiceインスタンスを取得
122
- * 高度な操作のため公開
123
- */
124
51
  getQueueService(): QueueService;
125
- /**
126
- * 再生を開始
127
- */
128
52
  startPlayback(): void;
129
- /**
130
- * 再生を一時停止
131
- */
132
53
  pausePlayback(): void;
133
- /**
134
- * 再生を再開
135
- */
136
54
  resumePlayback(): void;
137
- /**
138
- * キュー内のアイテム数を取得
139
- */
140
55
  getQueueLength(): number;
141
- /**
142
- * キューが空かどうかを確認
143
- */
144
56
  isQueueEmpty(): boolean;
145
- /**
146
- * キューが再生中かどうかを確認
147
- */
148
57
  isPlaying(): boolean;
149
58
  }
150
59
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}