PROCESSINGで音声合成を行うには(Windows編)

◆PROCESSING 逆引きリファレンス

rocket カテゴリー:ゲーム作成

PROCESSINGで音声合成を行うには(Windows編)

【解説】

最近のスマホはよく出来ていて、人間の話し言葉を理解して、音声で受け答えしてくれます。

このような機能としてはAppleのSiriが有名ですね。

他にもGoogleのGoogleアシスタント、MicrosoftのZoやりんななど、最近のAIブームを反映して様々なものが出てきています。

人工知能はともかく、まずはPROCESSINGに喋ってもらう方法(音声合成)について、以下の条件を元に探してみました。

  • 無償で利用できる事(これ、最重要:笑)
  • 日本語の読み上げ・発音に対応している事(これも必須)
  • 読み上げ可能な文字数に、できるだけ制限がない事(こうだと嬉しい)
  • PROCESSING(Java)から利用可能な事
  • Windowsから(可能であればMACやLinuxでも)利用可能な事
  • ライブラリ経由(JarファイルやDLLなど)で手軽に利用できる事

ところが上記条件を満たす仕組みは、(Androidはともかく)ほとんど見当たりませんでした(都合が良すぎたかも……汗)。

幾つかの条件を満たさなくても良いのであれば、以下の仕組みが利用できるようです。

それぞれ下記のサイト様などで紹介されています。

●Open JTalk
人工知能に関する断創録
takayanの雑記帳

●FreeTTS
マイナビニュース 「Java API、使ってますか?」 記事様
ヅラッシュ! by NI-Lab.

Javaにこだわらなくても良いなら

  • Microsoft Speech Platform や Windows Speech Application Programming Interfaceを使う(C#、VB.NET、VC++用)
  • ブラウザで Web Speech API を使う(JavaScript用)

などがあります。

無償だけど読み上げる字数に制限があっても構わない、あるいは有償でも良いなら、選択肢はもっと広がります。興味がある方は「音声合成」などのキーワードで検索してみると良いでしょう。

●Web Speech API の使い方については
YoheiM.NET
Qiita 様:kyotaさんの記事
などの記事が参考となります。

今回はブラウザからではなくアプリケーションから利用したかったので、Windowsに標準搭載されている(MACとLinuxユーザーの皆様、すいません:汗)Speech Application Programming Interface( Windows SAPI ) を使って文章を読み上げてみる事にしました。

以下が動作条件となります。

  • Windows8 以降のOS上から利用する事
  • 利用環境にJRE1.8以降がインストールされている事
  • 利用環境に.NET FrameWork 4.0 以降がインストールされている事
  • 利用環境にMicrosoft Visual C++ 2015ランタイムがインストールされている事

上記でよろしければ、下記に公開したライブラリを利用する事で、あなたのPROCESSING(Java)から「Microsoftハルカ」ちゃんに喋ってもらう事ができるようになります!(笑)。

OSはWindows8 以降を利用してください。
PROCESSINGからのみ利用するのであれば、JREのインストールは不要です。

Microsoft Visual C++ 2015 Redistributable のランタイムがインストールされていない場合は、下記のMicrosoft公式サイトからダウンロードし、インストールしてください。

またWindows8 以降のOSには、最初から.NET FrameWork4.0以降がインストールされている筈ですので、.NET FrameWorkに関する特別な操作は必要ないと思います。

PROCESSING、JRE、VisualC++ランタイムのbit数は全て統一してください(重要)。Javaアプリケーションから使う場合は、Eclipseなどのbit数も合わせてくださいね。

一部でも x86 と x64 が混在していると動作しないので、注意が必要です。

またWindows7 で日本語を喋らせたいという方は、下記コラム に紹介した方法で日本語音声合成エンジンと日本語音声データをインストールしてからお試しください。この操作はWindows8以降では必要ありません。

Windows7 に日本語音声合成エンジンと日本語音声データをインストールしなくても喋らせることは可能ですが、その場合は英語のみの対応となります。

 

ライブラリの入手と利用条件について

下記からダウンロードしていただけるプログラムとドキュメント(以下、本APと呼称)の著作権はMSLABOにあります。

本APは、以下のクリエィティブ・コモンズライセンスに従い提供されています。
利用にあたっては、必ず自己責任でお願い致します。

本APの不具合については極力善処を行う予定ですが、これを保証するものではありません。

また本APに関する情報はすべてMSLABOのHPから一方的に公開するものとし、原則として、個別の問い合わせや要望は受け付けません。

上記事項に同意頂ける方のみ、下記よりダウンロードする事が可能です。

WinSAPI

WindowsのSAPI機能をPROCESSINGから使うためのライブラリです。Javaアプリケーションから利用することも可能です。2017/05/02:64bit版を追加しました。

クリエイティブ・コモンズ・ライセンス
MSLABO 作『WinSAPI』はクリエイティブ・コモンズ 表示 – 継承 4.0 国際 ライセンスで提供されています。

ダウンロードすると「WinSAPI_20170502.zip」というファイルが出来上がります。
以下はダウンロードファイルの構成です。

64bit版を利用される方は、code フォルダではなくx64フォルダのものを利用してください。

インストールについて

●PROCESSINGの場合
PROCESSINGから本APを利用するには、以下の手順で作業してください。

1:PROCESSINGで新規スケッチファイルを作成します。
2:空のままで良いので、スケッチを一度保存します。
3:保存したスケッチ(例:C:\processing-3.3\src\sketch_170501a)配下に、上記を解凍するとできあがる codeフォルダを、フォルダごと複写してください。
4:64bitのPROCESSINGを利用される方は、x64フォルダの方を複写し、複写後にフォルダ名を code に変更してください。

●Javaアプリケーションの場合
Javaアプリケーションから利用する場合は、code配下に出来上がるjarファイルを、あなたのプロジェクトに外部ライブラリとして追加してください。


また、WinSAPICPP.dllをパスの通った場所に配置してください。実行時の構成でPATH環境変数を指定してもOKです。

64bitのJavaアプリケーションから利用される方は、codeフォルダではなくx64フォルダの中にある jar ファイルをご利用ください。またDLLファイルは WinSAPICPP64.dll を利用してください。

下記は32bit版の例です。c:¥pleiades32¥lib に WinSAPICPP.dll が置いてある場合の環境変数設定例です。

 

ライブラリの動作原理について

WindowsのSAPI はC#やVB.NET、VC++から利用する前提で作られているため、Javaから直接呼び出すことはできません。

今回はVC++のCLI / DLLを用意し、それを JNR 経由でJavaから呼び出す仕組みとしています。

さらっと書きましたが、JNRもVC++も慣れていなかったため、ものすごく苦労しました(汗)。

JNRについては、下記サイト様などを参考とさせて頂きました。ありがとうございます。

 

使い方

ダウンロードしたファイルを解凍すると出来上がる doc フォルダ配下に、リファレンス(index.html)があります。

また下記サンプルプログラムも参考としてください。

 

【関連記事】

 


サンプルプログラム

日本語を喋らせる例:

Microsoftハルカが使える前提です。ハルカちゃんに早口言葉を喋ってもらえます(笑)。

<出力サンプル>

 

SSMLで制御する例:

通常の文章以外に、SSML記号を与えることで読み方を制御できます。
もっとも、利用可能なSSMLは1.0仕様ですので、ちょっと物足りませんがしょうがありません(汗)。

上記ではハルカちゃんが、少しずつ間隔を開けながら喋ってくれます。

<出力サンプル>

 

英語を喋らせる例:

Microsoft Zira(アメリカ人)が、それっぽく聞こえる英語で喋ってくれます。Windows8以降のOSには、HarukaとZiraが標準搭載されています。

本例では、音声をスピーカーではなくWAVファイルに出力しています。

<出力サンプル>

 


コラム:Windows7で日本語を喋らせるには

以下の手順で作業を行います。

途中でレジストリなども変更するため、PCの操作に自信のない方や初心者の方には、オススメできません。PCやレジストリのバックアップを採取するなど、必要な事前準備を行った上で作業してください。

また以下の手順は、MSLABOやMicrosoftが公式に動作保証するものではありません

たまたま私の環境ではうまくいきましたが、作業する場合は必ず自己責任で行うようにお願いします。

日本語音声合成エンジンと日本語音声データをダウンロードする

以下のMicrosoft公式サイトからダウンロードします。
・エンジン
Microsoft Speech Platform – Runtime (Version 11)
・音声データ
Microsoft Speech Platform – Runtime Languages (Version 11)

エンジンには32bit版と64bit版がありますが、作りたいアプリケーションに応じたものをダウンロードしてください

32bit版のPROCESSINGから使うのであれば x86版を、64bit版のPROCESSINGから使うのであれば x64 版をダウンロードしてインストールします。

音声データには日本語以外にも沢山の種類が公開されています。日本語を喋らせたい場合は、「MSSpeech_TTS_ja-JP_Haruka.msi」をダウンロードしてください。これが「Microsoftハルカ」の音声データになります。

 

インストールする

エンジンをインストールし、続いて音声データをインストールします。特に難しいことはないと思います。

 

レジストリを書き換える

ここがポイントです。PROCESSINGで音声合成を行おうか・・・という読者の皆様は、ある程度PCの操作には慣れている事だとは思いますが、慎重に作業をしてください。

やるべきことは下記の2つです。

1番目:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech Server\v11.0\Voices\Tokens
上記配下にある音声情報「TTS_MS_ja-JP_Haruka_11.0」を、配下のキーを含めて丸ごと
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens
の下に複写する。

2番目:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Speech Server\v11.0\Voices\Tokens
上記配下にある音声情報「TTS_MS_ja-JP_Haruka_11.0」を、配下のキーを含めて丸ごと
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Speech\Voices\Tokens
の下に複写する。

参考URL:電脳スピーチ blog

くれぐれも場所を間違わないように・・・してくださいね。

 

基本動作確認する

ここまで出来たら、一度Windowsの標準機能で「Microsoftハルカ」に喋ってもらいましょう。

コントロールパネルから「音声認識」を開き、音声合成を選択します。
音声の選択から「ja-JP, Haruka」を選択します。


もしも音声の選択欄に「Microsoft Anna – English(United States)」しか表示されていないようなら、上記のどこかで失敗しています。

「次のテキストを使って・・・」と書かれた場所に適当な日本語を入力して、音声の再生ボタンを押してください。

無事に「Windowsハルカ」が喋ってくれれば、ひとまずはOKです。

 


PROCESSING逆引きリファレンス一覧 へ戻る


本ページで利用しているアイコン画像は、下記サイト様より拝借しております。各画像の著作権は、それぞれのサイト様および作者にあります。