Skip to content

Latest commit

 

History

History
100 lines (69 loc) · 4.15 KB

README_JP.md

File metadata and controls

100 lines (69 loc) · 4.15 KB

OpenJTalk For Unity

OpenJTalkをUnity上で使うためのプラグインです。 動的に文字を読み上げることが出来ます。


検証環境

  • Windows 10 20H2
  • Unity Editor 2020.3.12f1 (LTS)

使い方

  1. OpenJTalkForUnity.unitypackageをインポートします。

  1. Edit > Project Settings > Other Settings > Configuration > Api Compatibility Levelを「.NET 4.x」に変更します。

  1. プログラムを書きます。Assets\OpenJTalkForUnity\Sceneを参考にしてください。

※Package Managerを使いたい場合

Window>Package Manager で Add package from git URL...を選択し、https://github.com/rarafy/OpenJTalkForUnity.git?path=_Project/Packages/OpenJTalkForUnity と入力してください。

image

サンプルプログラムもインポートしましょう。サンプルプログラムはAssets/Samples/OpenJTalkForUnity/1.1.13/Sampleに配置されます。



API

いくつかのAPIが用意されています。基本的にはAssets\OpenJTalkForUnity\Sceneを参考にしながら書いてみると良いと思います。

  • OpenJTalk.VoiceTypeInfo() :どの声が使えるかを調べ、Debug.Logとして出力します。
  • OpenJTalk.SpeakRandomVoice(string text, double speed=1.0) :ランダムな声で喋ります。
  • OpenJTalk.Speak(string text = "こんにちは", string VoiceName = "tohoku-f01-neutral", double speed = 1.0) :指定した声と速度で任意の文字列を読み上げます。
  • OpenJTalk.SpeakRandomVoiceStoppable(string text = "こんにちは", double speed = 1.0) :ランダムな声で喋ります。(Taskなので非同期処理です)
  • OpenJTalk.SpeakStoppable(string text = "こんにちは", string VoiceName = "tohoku-f01-neutral", double speed = 1.0) :指定した声と速度で任意の文字列を読み上げます。
  • OpenJTalk.StopSpeaking() :喋るのを途中でやめます。

Q&A

  • 謎のエラーが出ます

アンマネージドDLLの不具合っぽいです。実使用に支障はありません。
どうしても気になる場合は該当のファイルを削除すると良いでしょう(Windowsネイティブの機能が使えなくなりますが実使用には影響ありません)。 e1


  • 違う音声を使いたい

Assets\OpenJTalkForUnity\dll\voice よりも下の階層に置かれたhtsvoiceであれば使うことが出来ます。Speak()の第二引数で名前を指定します。

例:takumi_happy.htsvoiceを使いたい場合

void Start(){ OpenJTalkForUnity.Speak("今日は良い天気ですね。", "takumi_happy"); }


  • アプリが読み上げ中に止まってしまうんですけど

非同期(Task)という機能を使うと解決できます。例えば

void Start()
{
  Task.Run(() => OpenJTalk.Speak("こんにちは。良い天気ですね。"));
}

↑ このようにタスクを使えばアプリが動作中に停止しないようになります。


  • OpenJTalk、もっとパラメータあったよね?(高度)

Assets\OpenJTalkForUnity\Scripts\OpenJTalk.csを編集することで、それらのパラメータを解禁できます。
例えば、Speedパラメータを追加したい場合、tts.SpeakAsync(text);の前の行にtts.Speed = 1.0;を加えると良いでしょう。
もちろん、最初の宣言部分を
JTalkTTS tts = new JTalkTTS { VoiceName = "tohoku-f01-neutral", Speed = 1.0 }
と書き換えることでも実現できます。


参照文献

jtalkdll(GitHub)