@coeiro-operator/cli 1.2.1 → 1.3.1
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/dist/say-coeiroink.d.ts +3 -2
- package/dist/say-coeiroink.d.ts.map +1 -1
- package/dist/say-coeiroink.js +95 -160
- package/dist/say-coeiroink.js.map +1 -1
- package/package.json +4 -4
package/dist/say-coeiroink.d.ts
CHANGED
|
@@ -8,9 +8,10 @@ import type { Config } from '@coeiro-operator/audio';
|
|
|
8
8
|
declare class SayCoeiroinkCLI {
|
|
9
9
|
private sayCoeiroink;
|
|
10
10
|
private config;
|
|
11
|
+
private program;
|
|
11
12
|
constructor(sayCoeiroink: SayCoeiroink, config: Config);
|
|
12
|
-
|
|
13
|
-
private
|
|
13
|
+
private setupCommander;
|
|
14
|
+
private handleCommand;
|
|
14
15
|
private getInputText;
|
|
15
16
|
run(args: string[]): Promise<void>;
|
|
16
17
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"say-coeiroink.d.ts","sourceRoot":"","sources":["../src/say-coeiroink.ts"],"names":[],"mappings":";AAEA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"say-coeiroink.d.ts","sourceRoot":"","sources":["../src/say-coeiroink.ts"],"names":[],"mappings":";AAEA;;;GAGG;AAKH,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAGtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAcrD,cAAM,eAAe;IACnB,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAU;gBAEb,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM;IAOtD,OAAO,CAAC,cAAc;YA8DR,aAAa;YAoEb,YAAY;IAuCpB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAGzC;AAoDD,eAAe,eAAe,CAAC"}
|
package/dist/say-coeiroink.js
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { readFile, access } from 'fs/promises';
|
|
7
7
|
import { constants } from 'fs';
|
|
8
|
+
import { Command } from 'commander';
|
|
8
9
|
import { SayCoeiroink } from '@coeiro-operator/audio';
|
|
9
10
|
import { ConfigManager, getConfigDir } from '@coeiro-operator/core';
|
|
10
11
|
import { LoggerPresets } from '@coeiro-operator/common';
|
|
@@ -12,34 +13,37 @@ import { BUFFER_SIZES } from '@coeiro-operator/audio';
|
|
|
12
13
|
class SayCoeiroinkCLI {
|
|
13
14
|
sayCoeiroink;
|
|
14
15
|
config;
|
|
16
|
+
program;
|
|
15
17
|
constructor(sayCoeiroink, config) {
|
|
16
18
|
this.sayCoeiroink = sayCoeiroink;
|
|
17
19
|
this.config = config;
|
|
20
|
+
this.program = new Command();
|
|
21
|
+
this.setupCommander();
|
|
18
22
|
}
|
|
19
|
-
|
|
23
|
+
setupCommander() {
|
|
20
24
|
const defaultRate = this.config?.audio?.defaultRate ? `${this.config.audio.defaultRate} WPM` : '話者固有速度';
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
低レイテンシストリーミング音声合成・再生(macOS sayコマンド互換)
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
- 数値: 絶対速度(200 =
|
|
29
|
-
- %付き: 話者速度の相対倍率(150% = 1.5
|
|
30
|
-
- 未指定: 話者固有の自然な速度
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
25
|
+
this.program
|
|
26
|
+
.name('say-coeiroink')
|
|
27
|
+
.description('低レイテンシストリーミング音声合成・再生(macOS sayコマンド互換)')
|
|
28
|
+
.version('1.0.0', '-V, --version')
|
|
29
|
+
.argument('[text...]', 'Text to speak')
|
|
30
|
+
.option('-v, --voice <voice>', 'Specify voice (voice ID or name, use "?" to list available voices)', process.env.COEIROINK_VOICE || '')
|
|
31
|
+
.option('-r, --rate <rate>', `Speech rate: number (WPM) or percentage (e.g., 150%) (default: ${defaultRate})\n` +
|
|
32
|
+
' - 数値: 絶対速度(200 = 標準話速)\n' +
|
|
33
|
+
' - %付き: 話者速度の相対倍率(150% = 1.5倍速)\n' +
|
|
34
|
+
' - 未指定: 話者固有の自然な速度')
|
|
35
|
+
.option('-o, --output-file <file>', 'Write audio to file instead of playing (WAV format)')
|
|
36
|
+
.option('-f, --input-file <file>', 'Read text from file (use "-" for stdin)')
|
|
37
|
+
.option('--style <style>', 'Specify voice style (e.g., "のーまる", "セクシー")')
|
|
38
|
+
.option('--chunk-mode <mode>', 'Text splitting mode: punctuation|none|small|medium|large', 'punctuation')
|
|
39
|
+
.option('--buffer-size <size>', `Audio buffer size in bytes: ${BUFFER_SIZES.MIN}-${BUFFER_SIZES.MAX}`, BUFFER_SIZES.DEFAULT.toString())
|
|
40
|
+
.option('--debug', 'Enable debug logging')
|
|
41
|
+
.addHelpText('after', `
|
|
38
42
|
Chunk Modes:
|
|
39
|
-
none
|
|
40
|
-
small
|
|
41
|
-
medium
|
|
42
|
-
large
|
|
43
|
+
none No text splitting (best for long text, natural speech)
|
|
44
|
+
small 30 chars (low latency, interactive use)
|
|
45
|
+
medium 50 chars (balanced)
|
|
46
|
+
large 100 chars (stability focused)
|
|
43
47
|
punctuation Sentence-based splitting (default, natural Japanese)
|
|
44
48
|
|
|
45
49
|
Buffer Sizes:
|
|
@@ -65,133 +69,29 @@ Examples:
|
|
|
65
69
|
say-coeiroink --chunk-mode none "長文を分割せずにスムーズに読み上げ"
|
|
66
70
|
say-coeiroink --chunk-mode small --buffer-size 256 "低レイテンシ再生"
|
|
67
71
|
say-coeiroink --buffer-size 2048 "高品質・安定再生"
|
|
68
|
-
echo "テキスト" | say-coeiroink -f -`)
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
voice: process.env.COEIROINK_VOICE || '',
|
|
73
|
-
rate: this.config?.audio?.defaultRate, // undefined = 話者固有速度
|
|
74
|
-
inputFile: '',
|
|
75
|
-
outputFile: '',
|
|
76
|
-
text: '',
|
|
77
|
-
chunkMode: 'punctuation',
|
|
78
|
-
bufferSize: BUFFER_SIZES.DEFAULT,
|
|
79
|
-
};
|
|
80
|
-
// args が undefined や null の場合はデフォルト値を返す
|
|
81
|
-
if (!args || !Array.isArray(args)) {
|
|
82
|
-
return options;
|
|
83
|
-
}
|
|
84
|
-
for (let i = 0; i < args.length; i++) {
|
|
85
|
-
const arg = args[i];
|
|
86
|
-
switch (arg) {
|
|
87
|
-
case '-h':
|
|
88
|
-
case '--help':
|
|
89
|
-
await this.showUsage();
|
|
90
|
-
throw new Error('HELP_REQUESTED');
|
|
91
|
-
case '-v':
|
|
92
|
-
if (args[i + 1] === '?') {
|
|
93
|
-
await this.sayCoeiroink.listVoices();
|
|
94
|
-
throw new Error('VOICE_LIST_REQUESTED');
|
|
95
|
-
}
|
|
96
|
-
options.voice = args[i + 1];
|
|
97
|
-
i++;
|
|
98
|
-
break;
|
|
99
|
-
case '-r':
|
|
100
|
-
case '--rate': {
|
|
101
|
-
const rateValue = args[i + 1];
|
|
102
|
-
// %で終わる場合は文字列として保持、そうでなければ数値に変換
|
|
103
|
-
if (rateValue.endsWith('%')) {
|
|
104
|
-
options.rate = rateValue; // "150%" のような文字列
|
|
105
|
-
}
|
|
106
|
-
else {
|
|
107
|
-
const parsed = parseInt(rateValue);
|
|
108
|
-
if (isNaN(parsed)) {
|
|
109
|
-
throw new Error(`Invalid rate value: ${rateValue}. Must be a number (WPM) or percentage (e.g., 150%)`);
|
|
110
|
-
}
|
|
111
|
-
options.rate = parsed;
|
|
112
|
-
}
|
|
113
|
-
i++;
|
|
114
|
-
break;
|
|
115
|
-
}
|
|
116
|
-
case '-o':
|
|
117
|
-
case '--output-file':
|
|
118
|
-
options.outputFile = args[i + 1];
|
|
119
|
-
i++;
|
|
120
|
-
break;
|
|
121
|
-
case '-f':
|
|
122
|
-
case '--input-file':
|
|
123
|
-
options.inputFile = args[i + 1];
|
|
124
|
-
i++;
|
|
125
|
-
break;
|
|
126
|
-
case '--style':
|
|
127
|
-
options.style = args[i + 1];
|
|
128
|
-
i++;
|
|
129
|
-
break;
|
|
130
|
-
case '--chunk-mode': {
|
|
131
|
-
const chunkMode = args[i + 1];
|
|
132
|
-
if (!['none', 'small', 'medium', 'large', 'punctuation'].includes(chunkMode)) {
|
|
133
|
-
throw new Error(`Invalid chunk mode: ${chunkMode}. Must be one of: none, small, medium, large, punctuation`);
|
|
134
|
-
}
|
|
135
|
-
options.chunkMode = chunkMode;
|
|
136
|
-
i++;
|
|
137
|
-
break;
|
|
138
|
-
}
|
|
139
|
-
case '--buffer-size': {
|
|
140
|
-
const bufferSize = parseInt(args[i + 1]);
|
|
141
|
-
if (isNaN(bufferSize) || bufferSize < BUFFER_SIZES.MIN || bufferSize > BUFFER_SIZES.MAX) {
|
|
142
|
-
throw new Error(`Invalid buffer size: ${args[i + 1]}. Must be a number between ${BUFFER_SIZES.MIN} and ${BUFFER_SIZES.MAX}`);
|
|
143
|
-
}
|
|
144
|
-
options.bufferSize = bufferSize;
|
|
145
|
-
i++;
|
|
146
|
-
break;
|
|
147
|
-
}
|
|
148
|
-
default:
|
|
149
|
-
if (arg.startsWith('-')) {
|
|
150
|
-
throw new Error(`Unknown option ${arg}`);
|
|
151
|
-
}
|
|
152
|
-
else if (arg) { // 空文字列は無視
|
|
153
|
-
options.text = options.text ? `${options.text} ${arg}` : arg;
|
|
154
|
-
}
|
|
155
|
-
break;
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
return options;
|
|
72
|
+
echo "テキスト" | say-coeiroink -f -`)
|
|
73
|
+
.action(async (textArgs, options) => {
|
|
74
|
+
await this.handleCommand(textArgs, options);
|
|
75
|
+
});
|
|
159
76
|
}
|
|
160
|
-
async
|
|
161
|
-
|
|
162
|
-
if (options.
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
for await (const chunk of process.stdin) {
|
|
166
|
-
chunks.push(chunk);
|
|
167
|
-
}
|
|
168
|
-
text = Buffer.concat(chunks).toString('utf8').trim();
|
|
169
|
-
}
|
|
170
|
-
else {
|
|
171
|
-
try {
|
|
172
|
-
await access(options.inputFile, constants.F_OK);
|
|
173
|
-
text = (await readFile(options.inputFile, 'utf8')).trim();
|
|
174
|
-
}
|
|
175
|
-
catch {
|
|
176
|
-
throw new Error(`File '${options.inputFile}' not found`);
|
|
177
|
-
}
|
|
178
|
-
}
|
|
77
|
+
async handleCommand(textArgs, options) {
|
|
78
|
+
// 音声リスト表示の特別処理
|
|
79
|
+
if (options.voice === '?') {
|
|
80
|
+
await this.sayCoeiroink.listVoices();
|
|
81
|
+
return;
|
|
179
82
|
}
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
83
|
+
// テキストの取得
|
|
84
|
+
const text = await this.getInputText(textArgs, options);
|
|
85
|
+
// バッファサイズのバリデーション
|
|
86
|
+
const bufferSize = parseInt(options.bufferSize);
|
|
87
|
+
if (isNaN(bufferSize) || bufferSize < BUFFER_SIZES.MIN || bufferSize > BUFFER_SIZES.MAX) {
|
|
88
|
+
throw new Error(`Invalid buffer size: ${options.bufferSize}. Must be a number between ${BUFFER_SIZES.MIN} and ${BUFFER_SIZES.MAX}`);
|
|
186
89
|
}
|
|
187
|
-
|
|
188
|
-
|
|
90
|
+
// チャンクモードのバリデーション
|
|
91
|
+
const validChunkModes = ['none', 'small', 'medium', 'large', 'punctuation'];
|
|
92
|
+
if (!validChunkModes.includes(options.chunkMode)) {
|
|
93
|
+
throw new Error(`Invalid chunk mode: ${options.chunkMode}. Must be one of: ${validChunkModes.join(', ')}`);
|
|
189
94
|
}
|
|
190
|
-
return text;
|
|
191
|
-
}
|
|
192
|
-
async run(args) {
|
|
193
|
-
const options = await this.parseArguments(args);
|
|
194
|
-
const text = await this.getInputText(options);
|
|
195
95
|
// ファイル出力の場合はウォームアップ不要
|
|
196
96
|
if (!options.outputFile) {
|
|
197
97
|
// オーディオドライバーのウォームアップ
|
|
@@ -199,8 +99,8 @@ Examples:
|
|
|
199
99
|
}
|
|
200
100
|
// rate文字列をパースして適切な形式に変換
|
|
201
101
|
let speedOptions = {};
|
|
202
|
-
if (options.rate !== undefined) {
|
|
203
|
-
if (
|
|
102
|
+
if (options.rate !== undefined && options.rate !== '') {
|
|
103
|
+
if (options.rate.endsWith('%')) {
|
|
204
104
|
// パーセント指定 → factor
|
|
205
105
|
const percent = parseFloat(options.rate.slice(0, -1));
|
|
206
106
|
if (!isNaN(percent)) {
|
|
@@ -209,7 +109,7 @@ Examples:
|
|
|
209
109
|
}
|
|
210
110
|
else {
|
|
211
111
|
// 数値指定 → rate(WPM)
|
|
212
|
-
const rateNum =
|
|
112
|
+
const rateNum = parseFloat(options.rate);
|
|
213
113
|
if (!isNaN(rateNum)) {
|
|
214
114
|
speedOptions.rate = rateNum;
|
|
215
115
|
}
|
|
@@ -222,7 +122,7 @@ Examples:
|
|
|
222
122
|
outputFile: options.outputFile || null,
|
|
223
123
|
style: options.style || undefined,
|
|
224
124
|
chunkMode: options.chunkMode,
|
|
225
|
-
bufferSize
|
|
125
|
+
bufferSize,
|
|
226
126
|
});
|
|
227
127
|
if (options.outputFile) {
|
|
228
128
|
console.error(`Audio saved to: ${options.outputFile}`);
|
|
@@ -230,6 +130,48 @@ Examples:
|
|
|
230
130
|
// すべてのタスクの完了を待つ
|
|
231
131
|
await this.sayCoeiroink.waitCompletion();
|
|
232
132
|
}
|
|
133
|
+
async getInputText(textArgs, options) {
|
|
134
|
+
let text = '';
|
|
135
|
+
if (options.inputFile) {
|
|
136
|
+
if (options.inputFile === '-') {
|
|
137
|
+
// stdinから読み込み
|
|
138
|
+
const chunks = [];
|
|
139
|
+
for await (const chunk of process.stdin) {
|
|
140
|
+
chunks.push(chunk);
|
|
141
|
+
}
|
|
142
|
+
text = Buffer.concat(chunks).toString('utf8').trim();
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
// ファイルから読み込み
|
|
146
|
+
try {
|
|
147
|
+
await access(options.inputFile, constants.F_OK);
|
|
148
|
+
text = (await readFile(options.inputFile, 'utf8')).trim();
|
|
149
|
+
}
|
|
150
|
+
catch {
|
|
151
|
+
throw new Error(`File '${options.inputFile}' not found`);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
else if (textArgs && textArgs.length > 0) {
|
|
156
|
+
// コマンドライン引数からテキストを結合
|
|
157
|
+
text = textArgs.join(' ');
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
// 引数がない場合はstdinから読み込み
|
|
161
|
+
const chunks = [];
|
|
162
|
+
for await (const chunk of process.stdin) {
|
|
163
|
+
chunks.push(chunk);
|
|
164
|
+
}
|
|
165
|
+
text = Buffer.concat(chunks).toString('utf8').trim();
|
|
166
|
+
}
|
|
167
|
+
if (!text) {
|
|
168
|
+
throw new Error('No text to speak');
|
|
169
|
+
}
|
|
170
|
+
return text;
|
|
171
|
+
}
|
|
172
|
+
async run(args) {
|
|
173
|
+
await this.program.parseAsync(args, { from: 'node' });
|
|
174
|
+
}
|
|
233
175
|
}
|
|
234
176
|
// プロセス終了ハンドリング(テスト環境では無効化)
|
|
235
177
|
if (process.env.NODE_ENV !== 'test') {
|
|
@@ -244,7 +186,7 @@ if (process.env.NODE_ENV !== 'test') {
|
|
|
244
186
|
}
|
|
245
187
|
// メイン実行関数
|
|
246
188
|
async function main() {
|
|
247
|
-
//
|
|
189
|
+
// デバッグモード判定(commander解析前に簡易チェック)
|
|
248
190
|
const isDebugMode = process.argv.includes('--debug');
|
|
249
191
|
// CLIモードでは通常ログレベル(info)を使用、デバッグモードではdebugレベル
|
|
250
192
|
if (isDebugMode) {
|
|
@@ -261,7 +203,7 @@ async function main() {
|
|
|
261
203
|
await sayCoeiroink.buildDynamicConfig();
|
|
262
204
|
const config = await configManager.getFullConfig();
|
|
263
205
|
const cli = new SayCoeiroinkCLI(sayCoeiroink, config);
|
|
264
|
-
await cli.run(process.argv
|
|
206
|
+
await cli.run(process.argv);
|
|
265
207
|
}
|
|
266
208
|
// メイン実行(テスト環境では実行しない)
|
|
267
209
|
if (process.env.NODE_ENV !== 'test') {
|
|
@@ -270,15 +212,8 @@ if (process.env.NODE_ENV !== 'test') {
|
|
|
270
212
|
process.exit(0);
|
|
271
213
|
})
|
|
272
214
|
.catch(error => {
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
error.message === 'VOICE_LIST_REQUESTED') {
|
|
276
|
-
process.exit(0);
|
|
277
|
-
}
|
|
278
|
-
else {
|
|
279
|
-
console.error(`Error: ${error.message}`);
|
|
280
|
-
process.exit(1);
|
|
281
|
-
}
|
|
215
|
+
console.error(`Error: ${error.message}`);
|
|
216
|
+
process.exit(1);
|
|
282
217
|
});
|
|
283
218
|
}
|
|
284
219
|
export default SayCoeiroinkCLI;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"say-coeiroink.js","sourceRoot":"","sources":["../src/say-coeiroink.ts"],"names":[],"mappings":";AAEA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAatD,MAAM,eAAe;IACX,YAAY,CAAe;IAC3B,MAAM,CAAS;
|
|
1
|
+
{"version":3,"file":"say-coeiroink.js","sourceRoot":"","sources":["../src/say-coeiroink.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@coeiro-operator/cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.1",
|
|
4
4
|
"description": "CLI tools for COEIRO Operator",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -25,9 +25,9 @@
|
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"commander": "^14.0.1",
|
|
28
|
-
"@coeiro-operator/
|
|
29
|
-
"@coeiro-operator/core": "1.2.
|
|
30
|
-
"@coeiro-operator/
|
|
28
|
+
"@coeiro-operator/common": "1.0.2",
|
|
29
|
+
"@coeiro-operator/core": "1.2.1",
|
|
30
|
+
"@coeiro-operator/audio": "1.2.1"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"@types/commander": "^2.12.5",
|