OpenJTalk.jsは、OpenJTalkのコマンドをNode.jsで扱いやすくするためのライブラリです。
Sorry, this readme is Japanese only. Please translation with your browser or Google Translation.
- MacOS or Linux
- Node.js
$ 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)
})
}
多くの破壊的な変更がありますが、内部処理に関してほとんど変更はありません。そのため、既にv1を使用しているプロジェクトを無理にv2へ移行する必要はありません。
OpenJTalk
クラスを廃止し、代わりに関数をエクスポートする仕様になりました。VoiceOption
クラスを廃止し、代わりにOJTVoiceOption
型のオブジェクトを引数として受け取るようになりました。- オプションの
voiceQuality
プロパティがformant
に改名されました。 OJTVoiceOption
型の引数が任意になりました。これに伴い、関数outFile
の引数の順序が変更されています。- 関数
execute
を追加しました。OJTOption
型の引数を渡すことで、様々な処理が可能になります。
MIT License (see LICENSE
file).