OpenJTalk.js は、OpenJTalk のコマンドを Node.js で扱いやすくするためのライブラリです。
Sorry, this readme is Japanese only. Please translation with your browser or Google Translation.
- Mac OS
- Ubuntu 24 系
- Windows (Shift JIS 環境のみ)
open_jtalk のバイナリーは、Windows は Shift_JIS 版、それ以外では UTF-8 版を使用しています。
- Node.js
- ffplay (Windows のみ talk()メソッドを使う場合に必要)
$ npm i openjtalk.js//openjtalk.jsをインポート
const openjtalk = require('openjtalk.js');
//talk関数で音声の生成と再生を実行
openjtalk.talk('こんにちは、世界!');const openjtalk = require('openjtalk.js');
const text = 'こんにちは、これはOpenJTalkによって生成された音声です。';
//デフォルトで搭載されているHTSボイスファイルのパスを取得
const mei_normal = openjtalk.getSpeaker('mei_normal');
const option = {
speaker: mei_normal, //ここにはHTSボイスファイルのパスを指定します
formant: 0.55,
pitch: 0,
speed: 1,
intonation: 1,
};
openjtalk.talk(text, option).catch(console.error);Discord ボットで音声読み上げをしたい時などに利用できます
const openjtalk = require('openjtalk.js');
const fs = require('fs');
const path = require('path');
const { execFile } = require('child_process');
//ストリームの取得
const audioStream = openjtalk.stream('こんにちは、世界!');
//音声ファイルの生成
const wavPath = path.join(__dirname, './test.wav');
const outFile = fs.createWriteStream(wavPath);
audioStream.pipe(outFile);
//音声ファイルの生成が終了したら実行
audioStream.on('close', () => {
switch (process.platform) {
case 'darwin':
playAndRefresh('afplay', wavPath);
break;
case 'linux':
playAndRefresh('aplay', wavPath);
break;
default:
console.error('Playback on this OS is not supported.');
break;
}
});
function playAndRefresh(com, path) {
execFile(com, [path], () => {
fs.unlinkSync(path);
});
}インストール時に open_jtalk をビルドしていましたが、リポジトリーを移してプリビルドしたものを利用するように変更しました。一部の環境(特に Ubuntu 24 系 以外の Linux ディストリビューション)では、このバイナリーが動かない可能性があります。
MIT License (see LICENSE file).