Dear!くろうどぃあ!

このブログでは、私、くろうどの趣味に関する事を記述します。
当面は、「RPGツクールMV」をメインにします。

【RPGツクールMZ】音声合成プラグインを作ったよ

2023-07-10 18:38:31 | RPGツクールMZ
お久しぶりです。くろうどです。
今回は最近作った「音声出力(音声合成)プラグイン」の解説をしたいと思います。

音声合成というのは文章を元にして音声を出力する機能です。
だいたいの場合、機械音声などと呼ばれるような音声が出力されます。

このプラグインは以下のリンク先で公開しています。

このプラグインは Web Speech API を使用しています。
なので、Web Speech API に対応したブラウザでないと動作しません。
ただし、この記事を書いている時点では主要なブラウザでは対応されていると思います。
また、ブラウザないしOSが持っている音声合成機能を使いますので、環境によって出力される声は変わります。

ここからは技術的な解説です。

まず、このプラグインのメイン処理です。
synth.speak(utterThis);
という行がありますので探してください。
これが音声合成でしゃべってもらう記述です。

他の記述はそのための準備であったり、RPGツクールMZのプラグインとしての体裁と整えるためのものです。

では、少し上の記述を見てみましょう。
const synth = window.speechSynthesis;
const utterThis = new SpeechSynthesisUtterance(text);
utterThis.lang = language;
これが、最低限必要と思われる準備です。

window.speechSynthesis
これが音声合成をコントロールするインターフェイスです。
この中に、前述のspeakメソッドがあります。
speakメソッドを使うことで音声合成が始まります。

他にもcancelやpause、resumeといったメソッドがあります。
これらの処理が必要な場合はメソッドを呼びましょう。

new SpeechSynthesisUtterance(text);
SpeechSynthesisUtterance のインスタンスを生成して使える状態にしています。
引数textに音声合成する文章が入っています。

utterThis.lang = language;
SpeechSynthesisUtteranceのプロパティであるlangに設定しています。
languageには言語コードと国コードが書かれている文字列を入れておきます。
日本語&日本の場合は「ja-JP」です。
このプラグインではデフォルトを「ja-JP」にしているので、特に気にしなくていいと思います。

SpeechSynthesisUtteranceのプロパティには他にpitch、rateなどがあります。
これらの値を変えたい場合はそれぞれのプロパティに値を入れることになります。

というわけで、まとめると、
window.speechSynthesisのメソッドで動作を行い、
SpeechSynthesisUtteranceのプロパティに値を設定する
という形になっています。

今回は以上です。それでは~。