2010年02月28日

PythonでMBROLAを使って日本語をしゃべらせる

MBROLAというシステムを使って日本語をしゃべらせるスクリプトの紹介です。MBROLAはあらゆるプラットフォームに対応していますが、このスクリプトはWindows限定です。

MBROLAというものがあるのを知って、「日本語を音素に分解してくれるPythonスクリプト」というエントリーを書いたのがもう2年以上前になります。MBROLAを調べているうちに日本語を発音させるRubyスクリプトのmuDaTTSというのを知って、その頃いろいろ調べていた pythonでも似たようなことができないかと思って調べて書いたものです。このときは音素に分解するだけで満足してしまって、作業を止めてしまったのですが、最近になって音声出力の部分を完成させてみようという気になりました。まだ完全な形ではないのですが、とりあえずしゃべるようになったので公開しておきます。

現時点では音声の停止ができない、音量などのパラメータの変更ができないなど、まだ基本的な機能もできていないのですが、単独で日本語をしゃべってくれるようになりました。それから今回の作業で2年前の変換スクリプトに数値を正しく読まないなどの問題があったので、そこらへんも修正しておきました。

mudatts.rbを参考にしながら作ったので、以前は pydatts.py という名前にしていましたが、今回の修正を機に mecabとmbrolaを使っているTTSということで、わかりやすく mmtts.py と呼ぶことにしました。

■ 機能
・日本語を棒読みしてくれます。
・数値も読んでくれます。
・ユーザー辞書で特殊な読み方を登録できます。
・音声ファイル(wav)を作成できます。

■ 今後の課題
・音声の停止や、前の声を強制的に終わらせて発音したり、キューに音声をためて発音させたりする機能もほしい。
・抑揚が表現できればいい。その暁にはUnidicのアクセント情報も利用できればいい。せっかくMeCabを使っているのに、品詞情報を利用しない手はない。
・記号の読みの抑制や、辞書変換の抑制などもパラメータで制御できるようにできればいい。
・英語音声で英単語も読めるといい。


■ 仕組み
日本語文字列をMeCabを使って、仮名書きに変換します。
そして、これをMBROLAが処理できるPHO形式に変換します。
そして、これをpho2wav.pydを使ってmbrola.dllの関数を呼び出し、音声ファイルに変換します。
そして、変換された音声ファイルを再生し出力します。


■ 必要なもの
このスクリプトを利用するには以下のものが必要です。

・Windows用 python2.6本体
http://www.python.org/
左のメニューにある「DOWNLOAD」リンクを開き、ダウンロードページを開き、Downloadページにある Python2.6 の Windows installer のリンクをクリックするとダウンロードが始まります。
ダウンロード後インストールしておきます。

・Windows用Mbrolaパッケージ「MbrolaTools」と日本語音素データベース「jp2」
http://tcts.fpms.ac.be/synthesis/mbrola.html
上記ページを開いて、左にあるメニューの中の「Download」リンクを開き、開いたページの「MBROLA binary and voices」リンクを開きます。
ページ下方の 2)Getting the MBROLA Voicesのリストの中の「jp2: Japanese Female (5.6Mb) 」リンクをクリックすると日本語音声データベースのダウンロードが始まります。
ページ上方の 1)Getting the MBROLA binaryのリストの中のPC/Windowsリンクを開きます。開かれたページの「install package (1.8 Mb) for using Mbrola with Windows」リンクをクリックするとWindows向けパッケージのダウンロードが始まります。
MbrolaToolsを実行し、インストールします。jp2のzipファイルはあとで使います。

・Windows用MeCabパッケージ
http://mecab.sourceforge.net/
「Binary package for MS-Windows」の下にある「ダウンロード」リンクをクリックするとダウンロードが始まります。
ダウンロード後インストールしておきます。インストールするとき文字コードの選択画面でSJISを選択します。

・Windows用MeCabをPythonから利用するためのパッケージ(今回ビルドしてみました)
mecab-python-0.98.win32-py2.6.exe
ダウンロード後インストールしておきます。
今回はパッケージを使ってみましたが、ctypesを使って mecab を利用しても問題無いと思います。かえってそちらの方がpythonやmecabのバージョンに煩わされなくていいかもしれません。


■ ダウンロード

モジュール本体
mmtts092.zip
(詳しくは、さらにUnidicを使って、日本語にアクセントをつけてみる

過去のバージョン
mmtts091.zip

内容物:
mmtts.py ... スクリプト本体
userdic.txt ... 追加で読みを登録するためのファイルです
pho2wav.pyd ... スクリプトで利用しているdll (スクリプトと同じ場所に置いてください)
pho2wav.cpp ... そのdllのソース(実行には必要ないので削除してもいいです)


■ 使い方
利用するスクリプトと同じフォルダに置いて使ってください。PythonのLIBフォルダに放り込んでも使えると思います。

簡単なサンプルです。
# -*- coding: sjis -*-
# 3倍速で挨拶をします
import mmtts
mmtts.set_rate(3.0)
mmtts.set_pitch(1.0)
mmtts.set_volume(1.0)
mmtts.speak('こんにちは')

音声を出力する関数はspeak(str)です。文字列を指定します。音声の速さ、ピッチとボリュームを設定する関数 set_rate(num)、set_pitch(num)、set_volume(num)では小数点数で標準状態との比を指定します。ファイル生成系の関数として、makeWAV(str,filename)、makePHO(str,filename) があります。それぞれ文字列を指定すると、それを指定した名前のWAVファイルやPHOファイルに変換してくれます。

mmtts.py を単独で使ったときは、同じフォルダから text.txt という名前のファイルを探して読み上げるようにしています。ためしに text.txt に読ませたい文章を保存して、mmtts.py をダブルクリックをしてみてください。


細かな説明は次回にします。


posted by takayan at 05:08 | Comment(0) | TrackBack(0) | 音声合成 | このブログの読者になる | 更新情報をチェックする

2010年03月06日

さらにUnidicを使って、日本語にアクセントをつけてみる

MBROLAについてのエントリーを書こうと思っていたのですが、Unidicを使ったらどうなるだろうかと好奇心が沸いてしまって、前回作った mmtts.py を修正して使えるようにしてみました。

Unidic というのは、ChaSen や MeCab で使える 形態素解析辞書です。無料でダウンロードして使えるのですが、再配布は不可です。
http://www.tokuteicorpus.jp/dist/

Unidicは、国立国語研究所で規定した「短単位」という揺れがない斉一な単位で設計されているという特徴を持ちますが、今回興味を持ったのはアクセントや音変化の情報が付加されていることです。この情報はGalateaTalkでも利用されているようです。そういうことを知ると、前回作った棒読みスクリプトでもこれが利用できないかと思い、勢いでやってみました。


ダウンロード:
mmtts092.zip


これ単体では動きませんので、前回の記事に書いてあるように、必要なファイルをダウンロードして、手順通りインストールしてください。

内部的には大幅に書き換えていますが、使用する分にはほとんど変わりなく使えると思います。コマンドラインスイッチを増やしたので、--helpで確認してみてください。以前は'-'のみで標準入力指定をしていましたが、それができなくなったので、'-i'スイッチで指定するように変えました。変更点はそのくらいです。


さて、この新しいスクリプトで Unidic を使う方法ですが、やはりMeCab用のUnidicを持ってこないといけません。

まず、次のページに行きます。
形態素解析辞書 UniDic

そして、ダウンロードページに進みます。アカウントを未登録の場合は、「ダウンロード 未登録の方」リンクを選んで、アカウントを作ってから先に進みます。
ダウンロードページのルートから、「1.3.12個別ファイル」、「unidic-mecab」の順にリンクを選んでいくと、文字コード別のファイルが置いてあるので、今回必要なsjis用の「unidic-mecab1312_sjis.zip」をクリックしてダウンロードします。
※ 1.3.12は現時点での最新版のバージョンです。

ダウンロードしたファイルを展開し、展開してできたフォルダの名前を unidicと名前を変えて、mecab の dicフォルダにコピーします。標準的なインストールの場合、MeCabの辞書フォルダは"C:\Program Files\MeCab\dic"になります。ここには既に標準辞書の ipadic のフォルダがあるはずです。

なお、UnidicのダウンロードページにはWindows用パッケージ(フルセット)版も配布されていて、こちらだとChaSen用、MeCab用と必要なファイル全てを簡単にインストールできるのですが、残念なことに文字コードがUTF-8にエンコードされています。今回使用するシフトJISではないので、これでは使えません。また現時点ではこのパッケージはWindows7に対応していません。

mmtts.py の標準設定では unidic があればそれを優先して、そのアクセント情報を使うようにしています。時々は使いたいけれど、unidic を標準で使いたくないときは、42行目付近を default_dic = 0 に書き換えてください。

以上の設定をすると、mmtts.py で抑揚のある日本語を発音してくれます。ただし現在、単語のアクセントとそれに続く助詞のアクセント、そして「?」の直前の語尾上げしか設定していませんので、不完全なアクセントの日本語になってしまっています。Unidicには複合語になったときのアクセントなどの情報もあるようですが、今回は面倒だったのでは使いませんでした。このスクリプトの日本語はまだまだ改善していけると思います。

音素データのパラメータを今回新たに見直したので、棒読みをさせた場合においても以前のバージョンと印象の違う発声になっていると思います。


posted by takayan at 03:41 | Comment(0) | TrackBack(0) | 音声合成 | このブログの読者になる | 更新情報をチェックする

2010年03月08日

そして、Ubuntuに対応してみた。

今までは Windows上でしか動かなかったのですが、LinuxのUbuntuでも動くようにしてみました。

自己責任でご利用ください。
ダウンロード:mmtts093.zip

もともと、参考にした muDaTTS.rb は Linux向けのものだったわけですし、mbrolaはLinuxで使うほうがWindowsよりも使いやすくできていて、意外に簡単にできました。Windowsでもmbrplay.dllが Python からまともに使えれば非同期再生などといったさらに高度な使い方もできるのですが、mbrolaのソフトのメンテナンスが止まっていて、ちょっと残念です。

今回、文字コード関連の修正も加えました。今までこのスクリプトで使う場合、MeCab辞書の文字コードはシフトJIS固定でしたけれど、スクリプトを一箇所修正することでMeCabの文字コードを任意で選べるようにしました。WindowsのMeCabパッケージはインストール時に辞書の文字コードを選ぶようになっています。このとき文字コードとして、シフトJIS、UTF-8、EUC-JP、UTF-16が選べますが、この中のシフトJIS、UTF-8、EUC-JPを選んでも、このmmttsスクリプトでMeCab辞書を使えるようにしました。具体的にはWindowsの場合は31行あたりの mecab_charset への代入文でその文字コードを示す文字列を代入します。Ubuntuの場合は、44行あたりです。
通常の入出力の文字コード、作られるテキストファイルの文字コードも変数 system_charset、text_charset で設定できるようにしてますので、必要に応じて書き換えます。


さて、Ubuntuで使うための準備です。Ubuntuで使う場合も Windowsと同じようにいろいろなパッケージを用意しなくてはいけません。

apt-getやSynaptic などのパッケージ管理ソフトを使って、MBROLA、mecab、mecab-ipadic のパッケージをインストールします。このときインストールされるMeCab辞書はeuc-jp文字コードのものです。UTF-8版辞書が欲しいときはそのパッケージも探してインストールしておきます。また、あとでMeCabのPythonバインディングパッケージをインストールするのですが、そのとき mecab のヘッダファイルが必要になるので、この段階で libmecab-dev もインストールしておきます。

sudo apt-get install MBROLA
sudo apt-get install mecab
sudo apt-get install mecab-ipadic
sudo apt-get install libmecab-dev

次に、MeCabをPythonから使うためのバインディング mecab-python のファイルをMeCabサイトからダウンロードします。
Browse MeCab Files on SourceForge.net

現在の Ubuntuでインストールされるmecabパッケージのバージョンは0.97なので、mecab-python-0.97.tar.gz をダウンロードして、

tar xvfz mecab-python-0.97.tar.gz
cd mecab-python-0.97
sudo python setup.py install
と打ち込みます。
これでLinuxのPythonでも MeCabが使えるようになります。

MBROLAサイトに行って、日本語の音素データベースJP2をダウンロードします。展開し、中に入っているJP2ファイルをmmtts.pyと同じフォルダに置きます。
これで mmtts.py も使えるようになります。

パッケージからMeCabおよびMeCab辞書をインストールした場合、辞書の場所は /var/lib/mecab/dic/ になります。mmtts.pyではこのパスを記入しています。
MeCabおよびMeCab辞書はソースから最新版をインストールすることもできますが、その場合は辞書のインストール先を configure で --with-dicdir=/var/lib/mecab/dic/ipadic-utf8 などとしてUbuntuパッケージ版でインストールされる場所と同じ /var/lib/mecab/dic/*** に合わせるか、デフォルトでインストールされた場所を、mmtts.py の該当行に書き込むなりしなくては、mmtts.py スクリプトは正しく動きません。

ipadic辞書ではアクセント情報がありませんので、せっかくなので Unidic もインストールします。
Unidic サイトに行き、ログインします。アカウントがなければ作ります。
そして、ダウンロードページに入り、個別ファイルのところから unidic-mecab1312_eucj.tar.gz か unidic-mecab1312_utf8.tar.gz をダウンロードします。どちらでもいいですが、先に入れた ipadic と同じ文字コードのほうをインストールします。両方入れてもかまいませんが、euc-jp版のフォルダはunidic、utf8版のフォルダはunidic-utf8という名前にします。
ダウンロードしたら、
tar xvfz unidic-mecab1312_eucj.tar.gz
sudo cp -r unidic-mecab1312_eucj/ /var/lib/mecab/dic/unidic
もしくは
tar xvfz unidic-mecab1312_utf8.tar.gz
sudo cp -r unidic-mecab1312_eucj/ /var/lib/mecab/dic/unidic-utf8
で、MeCabの辞書フォルダにコピーします。MeCabの辞書フォルダが上記と違う場合は、適宜書き換えます。バージョンが進んでいる場合も適宜書き換えます。

Linux用のUnidicパッケージも置いてあるので、それをインストールした場合は、mmtts.py内の辞書のパスの記述を書き換える必要があります。MeCab用Unidicにはソース版も置いてありますが、文字コードをeuc-jpに指定してビルドしようとするとiconv変換エラーが大量に出ました。対処の仕方が分からなかったので、mmtts.pyを書き換えないで済む上記の変換済みの個別ファイルの方が無難だと思います。

必要なファイルのインストールが完了したら、コンソールから、
python mmtts.py -t utf8 -f mmtts.txt
なんて打ち込んで、動作を確認します。


今回は 日ごろ僕が使っているUbuntuだけに対応しましたが、MeCab辞書のインストール先とそのシステムの入出力用の文字コードを設定すれば、他のOSでも使えるのではないかと思います。

まだいろいろ問題あると思いますし、機能不足ですが、これでlinuxで日本語をしゃべらせる選択肢が増えたと思います。


posted by takayan at 03:03 | Comment(0) | TrackBack(0) | 音声合成 | このブログの読者になる | 更新情報をチェックする

2010年03月09日

最終的に mbrola.exe を使うことにする

MBROLAサイトではWindows用のMBROLAバイナリとして、MBROLA toolsというパッケージが公開されています。
Mbrola Tools

このパッケージを実行すると、いくつものファイルがインストールされます。
C:\Program Files\Mbrola Tools には ツールやドキュメント、インターフェイスソースコード、そしてサンプルコードが入ります。また C:\Windows\System32 には mbrola.dll、mbrplay.dll の2つのDLLがコピーされます。

WindowsでのMBROLAのプログラミングをする場合は、英語で書かれたドキュメントをよく読み、サンプルコードを参考にしながらDLLを操作するプログラムを書くことになります。前回までmmtts.pyに同梱していた pho2wav.pyd も mbrola.dll を使って wavファイルを生成するプログラムでした。

この pho2wav.pyd を作るにあたってはいろいろ紆余曲折があります。もう一つのDLLである mbrplay.dll には、MBR_Play、MBR_Stop、MBR_WaitForEnd、MBR_IsPlaying といった便利な関数が定義されています。一般的なTTSを使ったプログラムを書いたことがある人ならば、この関数名を見ただけでわかるでしょう。もちろん、MBR_Play 関数には、非同期再生やコールバック関数の登録機能もあります。これらの機能を使えば簡単に音声合成アプリを作ることができるはずです。本当はこちらのDLLを使うためにpydファイルを作ろうとしました。しかし、これがどうやっても Python2.6 で使えるようにはなりませんでした。VC++2008でコンパイルして実行するとレジストリエラーが出てしまいます。VC++6 だとなんとかうまくコンパイルでき、単体で動かすことができるのですが、それをPythonから呼び出す段になると、やっぱりレジストリエラーが出てしまいます。それで困り果てて、結局諦めて、mbrola.dll を使うプログラムを書くことにしました。こちらを使ったプログラムだとなんとかPythonと組み合わせても動きます。しかし完全ではありません。長文を読ませると、音声にノイズが出てきて、意味不明の音素の組み合わせを読み込んで、エラーで停止してしまいます。 そのため pho2wav.pydの内部では文章を短く区切って対処していました。とりあえずそうやって音素のスクリプトから安定して音声ファイルを作れるようになりました。

ところが、FreeTTSでMBROLAを使う資料を読んでいると、次のやり取りを見つけました。
http://sourceforge.net/projects/freetts/forums/forum/137669/topic/1219083

なーんだ。DOS版が使えたのか。それも linuxのコマンドラインスイッチと同じものが使える。

そういうわけで、pho2wav.pyd を組み込むのは廃止です。代わりに、mbrola.exe を使います。pydファイルの作り方を覚えたので全てが無駄ではありませんでしたが、このpydを作るための悪戦苦闘は何だったのだろう。


mbrola.exeは、MBROLAサイトのダウンロードページにある PC/DOSリンクでダウンロードします。ダウンロードされる mbr301d.zip を展開し、中にある mbrola.exe をmmtts.pyと同じ場所に置くか、パスの通った場所におけば使えます。

mbrola.exe 利用版 mmtts.py
ダウンロード:mmtts094.zip


いろいろ書いてきましたが、MBROLAについてはこの辺で終わりにして、今後はしばらく、できるかどうかわかりませんが、 open jtalkを使って Linux 上の Fire Voxでも日本語がしゃべれるようにすることに時間を割きたいと思っています。


posted by takayan at 03:25 | Comment(0) | TrackBack(0) | 音声合成 | このブログの読者になる | 更新情報をチェックする

2010年03月25日

日本語音声合成 Python パッケージ mbtts

前回でやめるつもりでいたんですが、MBROLA関連の続きです。
前回のものを大幅に拡張して作った、Windows、Ubuntu、MacOSX で使える音声合成処理のPythonパッケージです。
これ単体では動きませんが、無料で配布されているファイルを持ってくると、日本語の文字列を音声に変換してくれます。

興味のある方は、無保証ですが使ってみてください。

ダウンロード:
mbtts-0.95.zip

主な変更点ですが、

せっかくなので、jp2だけでなく、MBROLAの jp1,jp3の音声も使えるようにしました。

プログラムが長くなりすぎたため、ファイルを分割せざるを得なくなってしまったのですが、それを扱いやすくするために、パッケージにしてみました。Windows用のインストーラや、setup.py でPythonにインストールします。

非同期発声はどうしても実現したくて、でも、自分で作るのは面倒だったので、既存のpygameパッケージを使ってできるようにしてみました。

そして、MeCabバインディングのパッケージを別に作るのもあれなので、バインディング用のスクリプトも取り込みました。

それから、最初に書きましたが、LinuxでできるのならばOSXでもできるだろうということで、MacOSX対応にしました。pygameに依存したおかげで、それさえ入れられれば、あとは簡単に実現しました。

インストールの仕方とか、詳しくは、ダウンロードしたファイルを展開して出てくる mbtts.txt というファイルに全部書いていますので、それを読んでみてください。必要な外部ファイルがいろいろありますが、そのこともmbtts.txtに書いてあります。

基本的な使い方は、
>>> import mbtts
>>> tts = mbtts.create()
>>> tts.speak(u'あらゆる現実を、全て自分の方へ捻じ曲げたのだ。')
てな感じになります。

残念ながら、Unidicを使った日本語のアクセントやイントネーションの処理に関しては、間違いを修正したくらいでほとんど進歩はありません。

AquesTalkを組み込んだり、OpenJtalkを組み込んだりすることは、割と簡単にできるのではないかと思います。

最後に、先日、mmttsと名づけてみたのですが、mm というのは音声読み上げ対応ソフトで有名なmiyamiyaさんの一連のシリーズと語呂が同じになってしまうので、止めにします。mbtts にすることにします。


posted by takayan at 05:18 | Comment(0) | TrackBack(0) | 音声合成 | このブログの読者になる | 更新情報をチェックする

2010年03月27日

ネット上の情報を音声で保存するサンプル

そういうわけで、それなりのパッケージが出来上がりました。
まだまだ改良の余地はあります。アルファベットの羅列でローマ字読みができるものは、仮名に変換して読ませたほうがいいことに今更気付いたりしています(次回更新時に実装します)。

このパッケージの問題として、py2exeで実行ファイルが作れないということがあります。これはかなり大きな問題だと思います。つまり、利用するときスクリプトの実行できる環境を自力で構築しなければならないという高いハードルが付きまといます。また、なんとか実行ファイルが作れたとしてもpygameを使っているのでMixer以外の使いもしない様々なファイルが組み込まれてしまいます。これは、非同期再生をもっと軽い方法で解決すればいいのですが。当分無理そうです。


さて、下のプログラムは、ホームページ上の情報を音声ファイルに変換するサンプルです。pyファイルとして保存し使います。

アサヒ・コムの天声人語を早口で録音します。視覚障害者の方は新聞の記事を手軽に読みたいという要望をよく聞くので、ためしに作ってみました。XMLできちんと整理されている情報だともっと簡単なのでしょうが、HTMLの特定部分を探し出し抽出しています。なお、このスクリプトによって生成される音声ファイルはアサヒ・コムの著作物の複製に当たると思われますので、私的使用のみに限って利用してください。

#!/usr/bin/env python
#-*-coding:utf8-*-
import urllib2
import re
import os
import sys
import mbtts
tts=mbtts.create()
tts.set_rate(1.5)
lines=[]
t=urllib2.urlopen('http://www.asahi.com/paper/column.html')
txt=t.read()
txt=unicode(txt,'eucjp')
r=re.compile(u'<strong>(.*?)</strong>')
d=r.search(txt).group(1)
name=d
lines.append(d)
r=re.compile(u'<div class="Utility mb0"><p>(.*?)付</p>')
d=r.search(txt).group(1)
name=name+u' '+d
if os.path.exists(name+u'.wav'):
 tts.speak(name+u'のファイルは既に存在するので作成は行いません。')
else:
 lines.append(d)
 r=re.compile(u'<p>\n(.*?)\n</p>')
 d=r.search(txt).group(1)
 d=re.sub(u'▼',u'。\n',d,0)
 lines.append(d)
 tts.speak_lines_to_file(lines,name+u'.wav')
 tts.speak(name+u'のファイルができました。')

こんな感じでいろいろ使えます。今回のパッケージを使いこなすにはPythonでプログラミングができないといけませんが、とても使いやすい言語なのでおすすめです。

動くように作った自分で言うのもなんですが、これがWindows7でも、MacOSXでも、Ubuntuでも動くというのは、やっぱり面白いですね。
今更ですが、素晴らしい技術やファイルを公開してくださっている Python,pygame,SDL,MBROLA,MeCab、そしてmuDaTTS.rbの開発者の方々に感謝します。


posted by takayan at 01:26 | Comment(2) | TrackBack(0) | 音声合成 | このブログの読者になる | 更新情報をチェックする

2010年09月18日

Open JTalk の VC++2008 用ソリューションファイルを作ってみた。

Open JTalk を Windows環境でビルドしやすいように、ソリューションファイルとプロジェクトファイルを作りました。
これまでは以前作ったnmake用の簡単なMakefileで済ませていましたが、せっかく便利なVisualStudioの開発環境があるのですから、それを利用できるようにしてみました。
できるかぎり、ソースの改変なしに必要なアーカイブの展開だけでビルドできるようにしてみました。

興味がある方は、自己責任でお使いください。
↓↓↓ダウンロード↓↓↓
https://neu101.up.seesaa.net/etc/open_jtalk_v9_sln-1.01.zip
(追記 2010/09/26)
文字セットを変えられるようにちょっとだけ修正しました。pythonがインストールされている場合、expand.bat の先頭にある変数 CHARSET の値を変えると、pythonスクリプトで文字セットを自動的に変換する処理を加えました。
標準は shift_jis です。これを utf_8、euc_jp に変えられます。他の表記は受け付けません。
(追記終わり)

これは Visual C++ 2008向けのファイルです。Professional版、Express版で試しています。
Visual C++ 2010 Express での動作も確認しました。ただし変換ウィザードを使って変換の必要があります。またソースを2箇所編集する必要があります。mecabのソースの dictionary_rewriter.cpp 、viterbi.cpp の先頭のほうに #include <iterator> を挿入します。

なお、今回確認したプラットフォームは Windows7、32ビット版です。他の Windows だとまた違ってくるかもしれません。


さて、利用法です。


まず必要なものとして、Microsoft Visual C++ 2008 か Microsoft Visual C++ 2010 です。
無償のExpress版は次のリンクからダウンロード可能です。
VC++2008 - http://www.microsoft.com/japan/msdn/vstudio/2008/product/express/
VC++2010 - http://www.microsoft.com/japan/msdn/vstudio/express/

それとアーカイブの展開用に 7-zip も必要です。同梱しているバッチファイルは7zipの存在を前提に書いています。

必要なものがそろったら、先のアーカイブを適当なところで展開します。すると4つのファイルが現れます。
open_jtalk_vc9_shift_jis-1.00.zip
expand.bat
testsjis.bat
test.txt


これらのファイルと同じところに Open JTalk の関連ファイルを4つダウンロードして展開せずに配置します。

まず、Open JTalk本体のソースコード、変換辞書、HTS音声
http://open-jtalk.sourceforge.net/
3つのファイルは、このページからそれぞれ次のリンクを開いてダウンロードします。

Open JTalk : Source Code
Dictionary for Open JTalk : Shift-JIS
HTS voice : Acoustic model

残りの hts_engine API は次のリンクからソースコードをダウンロードします。
http://hts-engine.sourceforge.net/

現在(2010/09/18)のファイル名は、次の通りです。
open_jtalk-1.01
open_jtalk_dic_shift_jis-1.00
hts_voice_nitech_jp_atr503_m001-1.01
hts_engine_API-1.03
バージョンが進んだり、ファイル名が変わった場合には、expand.bat や testsjis.bat 内の名前を修正します。

全てのファイルがそろったら、expand.bat を実行します。これでアーカイブファイルが展開され、ソリューションファイルやプロジェクトファイルも配置されます。
しばらく待って、このバッチファイルの実行が終わったら、open_jtalk フォルダ内に、open_jtalk.sln があるので、これをVC++で開きます。VC++がインストールされていれば、ダブルクリックで開きます。VC++を起動させた後、「ファイル」メニューの「開く」から、ソリューションを開いてもかまいません。
(※VC++2010の場合、このとき変換ウィザードが起動します。変換終了後、mecabのソースの dictionary_rewriter.cpp 、viterbi.cpp の2つのファイルの先頭部分に#include <iterator> の行を追加します。)

無事開くことができれば、あとはソリューション構成をReleaseにして、F7キーを押してソリューションのビルドを実行すれば、アーカイブを展開した場所に open_jtalk.exe が生成されます。
うまくビルドされていれば、 testsjis.bat を実行すると発音してくれます。text.txt の内容を書き換えると、別なことをしゃべります。


実験的ですがDLLも作成できるようにしています。ソリューション構成をRelease_DLL、Debug_DLLにすると、DLL を使った open_jtalk.exe が生成されます。

ただこれはDLLを作る最初の一歩で、DLL化できるかソリューション構成を作って試しただけのものです。まだ実用的ではありません。少なくとも、構造体へのポインタが必要だという仕様は変えなければいけないでしょう。このままだと他のプログラミング言語からの利用が面倒です。所定のフォルダに音声データや辞書ファイルがあればそれを利用するとか、文字列で音声化するテキストを渡せるとか、そういうふうにしないと実用的にはならないでしょう。扱いやすいようにAquesTalkのDLLと全く同じ関数群を用意するとか、いっそのことSAPI5に対応させるとか、そうすると面白いかなと思っていますが、まだ何もしていません。


posted by takayan at 21:48 | Comment(4) | TrackBack(0) | 音声合成 | このブログの読者になる | 更新情報をチェックする

2010年09月20日

Microsoft Speech Platform が出てた。

最近、Windows 関連の情報を全然チェックしていなかったので、今頃になって、Microsoft Speech Platform が出ていたことを知りました。
昨日 SAPI5 のことを久しぶりに思い出して、完全なオープンソースの SAPI5 日本語音声というのは、ちょっとやり甲斐がある仕事だなと思っていましたが、これを見つけてこの気持ちは消えてしまいました。

新しい音声合成システム Microsoft Speech Platform には、ちゃんと日本語音声が用意されていました。いままでこれがないことで、どれだけ困っていたことか。Fire Vox で SAPI4 の日本語音声が使えるようにするために、XPCOMの勉強をしたり、なんかもうほんと苦労しました。

無料でインストールできる日本語の合成音声があれば、ソフトを作る側はほんとに楽になります。Aquestalk の登場で爆発的に改善されましたが、今後標準になるだろう Windows の音声合成のシステムで最初から日本語が用意されているというのは、ほんとに素晴らしいことです。欲を言えば、インストーラが日本語になりインストールがもっと楽になってくれるといいですね。将来、 iOS のようにインストールさえせずに設定画面でチェックを入れるだけで使えるようになれば、もっといいですけど。

日本語音声を使えるようにするには、次の二つのファイルをダウンロードし、インストールする必要があります。

次のページから、Microsoft Speech Platform - Server Runtime 。
Download details: Microsoft Speech Platform - Server Runtime (Version 10.2)
プラットフォームに合わせて、下記のどちらかをダウンロードし、インストール。
x64\SpeechPlatformRuntime.msi
x86\SpeechPlatformRuntime.msi

次のページから、日本語音声 MSSpeech_TTS_ja-JP_Haruka.msi を探して、ダウンロードし、インストール。
Download details: Microsoft Speech Platform - Server Runtime Languages (Version 10.2)


開発者は、さらに次の Microsoft Speech Platform - Software Development Kit (SDK) も。
Download details: Microsoft Speech Platform - Software Development Kit (SDK) (Version 10.2)


詳しいインストールの仕方は、既に詳しい記事がいくつか書かれているので、そちらを見てください。

特に、aさんも紹介してくれたこのサイトの記事は、とても詳しく書かれています。
Microsoft Speech Platform の日本語音声合成エンジン - 電脳スピーチ blog
インストールできたら、ここで公開されている spcbght.bat で試してみましょう。入力文字の読み上げから音声ファイルの作成までたいていのことができます。

ただし、これは10.1用の記事で、記事の中にもあるように現在のバージョンは10.2です。Microsoft Speech Platform 10.2 - 電脳スピーチ blog

それから、読み上げソフトの SofTalk が2010.08.31に Microsoft Speech Platform に対応していました。最近 Aquestalk2 にも対応しました。
SofTalk - トップページ



SDKの中の sapi.h をsapi5のものと見比べてみると、sapi5からバージョンアップされたもの以外の何物でもないのがわかります。よく見ると、sapi.h内で_SAPI_VER が0x055に定義されていて、16進数ですが、これは sapi5.5 を意味していると考えて差し支えないでしょう。
それでも、SAPI5 のようにコントロールパネルで操作できないし、内部の名前もいくつか違っているので、sapi5のシリーズの延長線上にある別物という位置づけなのでしょう。プログラムを作る側としては、sapi5ととてもよく似ているので、新しいことを覚えなくてすむため、移行や併用が簡単にできるので、少なくともその点だけはありがたいです。


posted by takayan at 00:40 | Comment(13) | TrackBack(0) | 音声合成 | このブログの読者になる | 更新情報をチェックする

2012年03月05日

Windows 8 Consumer Preview のナレーターとキー操作

Windows 8 の Consumer Preview 版が公開されました。操作法が一新されるらしいという Windows 8 は、視覚障害者の方々にとって使いやすくなるのかとても興味があったので、実際に触れて試してみました。あらかじめ言っておきますが、ここに書いた情報は、視覚障害者のかたが単独で使うには、まだ不十分だと思います。とりあえず、現在触ってみて確かめられたものが書いてあります。

配布している場所は、Windows 8 Consumer Preview です。今回は実機ではなく、VirtualBox に入れてみました。試したのは32ビット版と64ビット版の両方です。

◆ Haruka 確認!

Windows 8 の Consumer Preview には、最初から Haruka Desktop という名前の合成音声が入っていました。何の追加インストールも無しに日本語音声で喋ってくれます。これは画期的なことです。実際に製品版ではどうなっているかわかりませんが、これは大いに期待できます。

Windows 8 にも Windows 7 と同様なコントロールパネルがあり、そしてやはり同じように、音声合成のプロパティがあって、音声合成タブがあります。そこを開くと選択できる音声として「Microsoft Haruka Desktop – Japanese」とあります。

speechproperties

以前作った aozoraVoice は Windows 8 でもどうやら動くようですが、これでも Haruka Desktop は音声として選択可能でした。aozoraVoice は Microsoft Speech Platform と SAPI5 両方の音声を利用できるようにしてあるので、念のためスクリプトをいじって確認してみると、ちゃんと、"Speech.SpVoice"ではなく、"SAPI.SpVoice"の音声として Haruka Desktop がありました。つまり、Haruka Desktop は SAPI5 の音声でした。

それから、Microsoft Speech Platform の Haruka も Windows 8 CPでも動きました。今までのWindowsと同じ方法でインストールできます。聞き比べてみるとすぐに分かりますが、同じ声でした。

◆ 新しいナレーター

Windows には以前から ナレーターという簡易的なスクリーンリーダーが入っていました。しかし、いままでは標準で日本語音声が入っていなかったため、誰でも簡単に利用できる状況ではありませんでした。今回のWindows 8  Consumer Preview  には Haruka Desktop が入っているので、即このナレーターを利用できます。さらに、ナレーターそのものもかなりの機能拡張が行われています。

・ナレーターの起動
ナレーターの起動はとても簡単です。Windowsキーを押しながら、エンターです。これでHarukaが喋り出します。なお、Windows 7 で起動させようとすると、 Windows + U のあと、ALT + N とする必要がありました。今回もこの方法は使えます。

・コマンドの実行
ナレーターは画面上の情報を読みあげてくれるのですが、どこを読むのか、どう読むのかは、利用者がキーの組み合わせで指示をします。これをコマンドと言います。Windows 8 CP では、基本的にコマンドはWindows キーとALTキーを同時に押しながら、文字キーという組み合わせになっています。たとえば、Windows+ALTを押しながら左右矢印キーで、項目を移動します。その項目に決められた動作を実行するには、Windows+ALTを押しながらスペースキーです。

Windows+ALTを押さえたままで操作するのも面倒なので、コマンドが連続するときは、ナレーターキーをロックして、文字キーだけで操作する方法も用意されています。このナレーターキーをロックするコマンドは、Windows+ALTとZキーです。この状態にしておくと、たとえば、左右の矢印だけで、項目を移動できるようになります。このナレーターキーのロックを解除するには、同じコマンド、つまりZキーを押します。

ナレーターには数多くのコマンドが用意されています。ナレーターの設定ウィンドウにあるコマンドのリストを書き出すと次のようになります。60もあって覚えるのが大変ですが、最初の20ぐらい覚えておけばいいでしょう。注意することは、空白がアクションの実行で、エンターが検索だということです。

読み上げを停止する Ctrl
1次的なアクションを実行する Windows+Alt+空白
次の項目に移動する Windows+Alt+→
前の項目に移動する Windows+Alt+←
含まれる領域に移動する Windows+Alt+↑
含まれる領域の最初の項目に移動する Windows+Alt+↓
コマンドの一覧を表示する Windows+Alt+F1
現在の項目のコマンドを表示する Windows+Alt+F2
検索モードを切り替える Windows+Alt+Enter
読み上げを開始する Windows+Alt+円記号
ナレーターを終了する Windows+Alt+Esc
ナレーターキーをロックする Windows+Alt+Z
キーをアプリケーションに渡す Windows+Alt+X
キーボード操作のアナウンスを切り替える Windows+Alt+F12
フレーズを繰り返す Windows+Alt+V
音声の音量を上げる Windows+Alt+PageUp
音声の音量を下げる Windows+Alt+PageDown
音声のスピードを速くする Windows+Alt++
音声のスピードを遅くする Windows+Alt+-
項目を読み上げる Windows+Alt+D
Read item advanced Windows+Alt+F
Read item spelled out Windows+Alt+S
ウィンドウを読み上げる Windows+Alt+W
含まれる領域のすべての項目を読み上げる Windows+Alt+R
マウスモードを切り替える Windows+Alt+NumLock
タッチモードを切り替える Windows+Alt+F11
ナビゲーションモードを切り替える Windows+Alt+A
含まれる領域の最後の項目に移動する Windows+Alt+Q
ナレーターカーソルをシステムカーソルに移動する Windows+Alt+G
ナレーターカーソルをポインターに移動する Windows+Alt+T
フォーカスを項目に設定する Windows+Alt+~(チルダ)
1項目に戻る Windows+Alt+BackSpace
リンク先項目にジャンプする Windows+Alt+Insert
現在の行ヘッダーを読み上げる Windows+Alt+F10
現在の列ヘッダーを読み上げる Windows+Alt+F9
現在の行を読み上げる Windows+Alt+F8
現在の列を読み上げる Windows+Alt+F7
ナレーターが存在する行と列を読み上げる Windows+Alt+F5
先頭からカーソルまでテキストを読み上げる Windows+Alt+]
テキスト属性を読み上げる Windows+Alt+0
ドキュメントを読み上げる Windows+Alt+H
現在のページを読み上げる Windows+Alt+U
次のページを読み上げる Windows+Alt+J
前のページを読み上げる Windows+Alt+N
現在の段落を読み上げる Windows+Alt+I
次の段落を読み上げる Windows+Alt+K
前の段落を読み上げる Windows+Alt+M
現在の行を読み上げる Windows+Alt+O
次の行を読み上げる Windows+Alt+L
前の行を読み上げる Windows+Alt+,
現在の単語を読み上げる Windows+Alt+P
次の単語を読み上げる Windows+Alt+;
前の単語を読み上げる Windows+Alt+.
現在の文字を読み上げる Windows+Alt+[
次の文字を読み上げる Windows+Alt+'
前の文字を読み上げる Windows+Alt+/
テキストの先頭に移動する Windows+Alt+Y
テキストの末尾に移動する Windows+Alt+B
ドキュメントの読み上げ中に巻き戻す Windows+Alt+Home
ドキュメントの読み上げ中に高速で早送りする Windows+Alt+End

これらのコマンドのキーの組み合わせ(キーボードショートカット)は、ナレーターの設定ウィンドウから変更することができます。他のソフトとキーボードショートカットが競合するときは、これで回避します。文字キーは必ず修飾キー(WindowsやCtrlキーなど)と組み合わせる必要がありますが、ファンクションキーとテンキーは単独でも指定可能です。

◆ Metro UI

ログインすると最初に現れる画面、タイル状のボタンでシンプルにデザインされたユーザーインターフェイスは、Metro UIと呼ばれています。

startscreen

画面上には、単色で塗られた正方形とその倍の幅の長方形のタイルが、グループごとに並んでいます。タイルの色は何種類かありますが、タイルに描かれているアイコンや文字などの情報はどれも白です。画像が描かれたタイルもありますが、基本はとてもシンプルなデザインです。

この四角のボタンをマウスでクリック、タッチパネルなら指で触れることで、そのボタンに結び付けられているアクションを実行します。では音声ガイドを聞きながら、キーボードだけで操作するにはどうすればいいのでしょうか。

上下左右の矢印キーを動かすと、この四角いボタンを上下左右に動いて選択してくれます。しかし、この四角いボタンの形は、正方形と長方形の二種類あるので、長方形の下に正方形が横に二つ並んでいる場合などは右側の存在に気付かずに移動してしまう可能性があります。

そのため、このボタンを選ぶときは、ナレーターコマンドのWindows+Alt+左右矢印キーで移動させます。この方法で動かすと、スタート画面のボタンを一つずつ進んでいきます。右矢印を押すと、右にボタンがある場合にはそれに、もう右に何もないときは、下の段の左のボタンに、下のボタンがなければ、次の行の一番上に移動します。とにかく、Windows+Alt+左右矢印キーですべてのボタンをたどることができます。そうやって、一つ一つのボタンを移動していきます。

ボタンの数が多くなると、左上から離れているボタンにたどり着くのに、かなりの打鍵数が必要になってしまいます。この場合は、ボタンのグループを作っておき、分類しておくと便利になります。しかし残念ながら、キーの操作だけで新しいグループを作ったり、タイルを移動する方法がわかりません。

◆ 新しいショートカットキー

ナレーター以外のWindows 8 Consumer Preview のWindowsを使った新しいショートカット キーは以下の通りです。この表は「[Win8CP] Windows 8 Consumer Preview のショートカット キーの機能」で公開されているものを加工して貼り付けました。Windows+というのは、Windowsキーを押しながらという意味で使っています。Windows+Enterは既に紹介しましたが、特に覚えておいた方がいいのが、Windows+Cでしょう。これを押すと画面の右端に[検索]、[共有]、[スタート]などの項目が並ぶので、その下に続くいくつかのショートカットを覚えなくても何とかなります。なおマウスの場合は、右上か右下にカーソルを持っていくだけでチャームが薄く表示されるので、それぞれのボタンの上にカーソルを移動させて、クリックします。

チャームと時計を表示する Windows+C
[設定] チャームを開く Windows+I
[デバイス] チャームを開く Windows+K
[共有] チャームを開く Windows+H
設定を選択して [検索] チャームを開く Windows+W
ファイルを選択して [検索] チャームを開く Windows+F
アプリを選択して [検索] チャームを開く Windows+Q
言語または入力方式を切り替える (複数の言語または入力が有効である場合) Windows+Space
現在のアプリケーションのコマンドまたはオプションを開く (アプリケーションで複数定義されている場合) Windows+Z
ナレーターを開く Windows+Enter
画面上の通知を切り替える Windows+V
マルチ モニター環境で [スタート] 画面を左のモニターに移動させる Windows+PageUp
マルチ モニター環境で [スタート] 画面を右のモニターに移動させる Windows+PageDown
画面の向きのロックのオン / オフを切り替える (PC に画面方向の切り替え機能がある場合) Windows+O
アプリケーションを片側にスナップするときに、画面上のアプリケーションのフォーカスを切り替える Windows+'(SHIFT+7)
アプリケーションを片側にスナップするときに、スプリットを右に移動させる Windows+.
アプリケーションを片側にスナップするときに、スプリットを左に移動させる Windows+Shift+.

他に便利なショートカットとして、Windows+Xでデスクトップでのコンテキストメニューが出ます。また、Ctrlと+/-でスタート画面のズームイン、ズームアウトができます。 これはキーボードだけでグループの名前を付けるときに利用します。

◆ ログイン画面

ログイン画面でも音声ガイドを有効にするには、次のようにします。

とにかくログインして、Windows+U でコンピュータの簡単操作ウィンドウを出します。

easiertouse

そして、左端にある、ログイン状態の設定をクリックして、「ログオン設定の変更」ウィンドウを開きます。

開いた「ログオン設定の変更」ウィンドウで、「支援技術」にある最初の項目「画面が読み上げられるのを聞く(ナレーター)」の右端にある「ログオン」のチェックボックスをチェックにします。このとき、「デスクトップ」のチェックボックスもチェックしておくと、ログインした後も、ナレーターが起動するようになります。その他の支援技術も必要に応じてチェックします。そしてOKで閉じます。

logon

 

◆ 終了方法

キー操作だけで、シャットダウンもしくは再起動する方法は次の通りです。
「Windows+I」 で、設定チャームを開いて、
「上矢印キー」で、電源ボタンに移動して、
「エンターキー」を押し、メニューを出します。
ここで「上矢印キー1回」だと再起動項目、「上矢印キー2回」だとシャットダウン項目に移動となり、
「エンター」で実行です。

 

◆ 感想

漢字変換がまだ読みあげに対応していません。これは是非とも製品版では実現してもらいたい機能です。NVDAを使ったり、発売日に合わせて出てくるだろう有料のスクリーンリーダーを使えばうまくいくでしょうが、これこそOSの機能としてそなえておくべきもののはずです。よろしくお願いします。

ナレーターのコマンドは、左右が項目の移動、上下が階層の移動となっています。これは今までスタートメニューやアプリのメニューバーで左右がメニューサブメニューの移動、上下が項目の移動となっていたものからの90度回転なので、意外に戸惑いました。体で覚えているせいか、なかなか切り替えができません。でもこれは慣れるしかないでしょう。

とりあえず使ってみた感想ですが、Windows 8 はかなり使いやすいものになりそうです。これは大いに期待できます。10年以上使ってきた方法と全く違う、スタート画面という新しいインターフェイスでの操作を覚えるのは、はっきり言って苦痛かもしれません。でもこの変化はとても良い変化だと思います。

そして、Windows 8の登場で、今後このOSの思想を取り入れたアクセシビリティに配慮のあるソフトが増えてくれることを望みます。おそらくそうなっていくでしょう。

 

コメント欄で a さんから教えてもらった情報をたどると、NVDA日本語版に関わっている西本さんが、既に Consumer Preview における Haruka Desktop の存在やNVDAやナレーターの動作についてツイートされていました。それからWindows 8 の64ビット版上ではNVDAでこの Haruka は使えないようです。こちらで確認したら、確かに使えませんでした。ただMSPのHarukaは使えるので、対応されるまではそちらを使えばいいでしょう。

 

◆ 参考にしたページ
Microsoft の新日本語合成エンジン? - 電脳スピーチ blog
アクセシビリティ対応 - Building Windows 8 - Site Home - MSDN Blogs
[Start] (スタート) 画面のデザイン - Building Windows 8 - Site Home - MSDN Blogs
[Win8CP] Windows 8 Consumer Preview のショートカット キーの機能
Windows 8 Consumer Preview のショートカット キー: 世の中は不思議なことだらけ
[Windows 8]シャットダウンはどこ? - Microsoft Officeのリボンのカスタマイズ情報が満載 - 初心者備忘録
など



posted by takayan at 02:36 | Comment(2) | TrackBack(0) | 音声合成 | このブログの読者になる | 更新情報をチェックする

2012年04月10日

Open JTalk 1.05 を Windows でビルドするバッチファイル

以前作ったものがOpen JTalkのバージョンアップで使えなくなっていたので、また作ってみました。

Visual C++20087-zip がパソコンにインストールされていればビルドできるバッチファイルです。

ダウンロード→ openjtalk_buildbatch-002.zip
(MD5:661e1d709444198d99105baec627cc91)
(2012/04/11 更新)

興味がある人は使ってみてください。自己責任でお願いします。

通常の読み上げテキストはシフトJISの文字コードを使っていますが、Python2.7がインストールされていて、ちゃんと環境変数Pathに追加してあれば、文字コードがutf_8やeuc_jpの辞書用のopen_jtalk.exe もビルドできます。

■ 使い方

上記のファイルを展開して、展開したフォルダ内に次の3つのファイルを置いてください。

・open_jtalk-1.05.tar.gz
・hts_engine_API-1.05.tar.gz
・hts_voice_nitech_jp_atr503_m001-1.04.tar.gz

環境さえ整っていれば、build.bat を実行すると、自動的にビルドしてくれます。無事終わったら、確認を兼ねたOpen JTalkの音声が完了したと報告してくれます。

たぶん、Open JTalk などが細かなバージョンアップをしても、バッチファイル内のそれぞれのバージョン番号を書き換えれば対応できるでしょう。

ビルドが終われば、2つのファイルopen_jtalk.exe、ojtalk.bat と2つのフォルダーhts_voice_nitech_jp_atr503_m001-1.04フォルダ、dic フォルダを残して全部削除してしまってもかまいません。

■ ojtalk.bat

展開したファイル群の中に、ojtalk.bat というのがあります。これをダブルクリックしたり、コマンドプロンプトから実行すると、Open JTalk を使って text.txt の内容を簡単な読み上げのテストができます。

このフォルダを C:\openktalk などに配置して、そこにパスを通すと、簡易読み上げコマンドとして利用できるようにも作ってあります。

シフトを押しながら右クリックなどで、コマンドプロンプトを開き、そこに次のような文字列を入力しエンターを押すと、しゃべります。もしくはこの行をメモ帳などに書いて、hoge.batという「.bat」で終わる名前にして保存して、それをダブルクリックするとしゃべってくれます。

ojtalk こんにちは

いろいろなオプションスイッチの指定ができるようにしてあります。基本的に open_jtalk.exe と同じままですが、コマンドラインの文字列を読ませることをメインにしたかったので、読み上げファイルは -f で指定します。他に、-vdir で音声モデルファイルのディレクトリを指定できます。なおスイッチの引数は空白を空けて書きます。

例えば、

ojtalk みなさん –p 60 –jm 1.2 こんにちは

このように指定すると、早口で、少し大きな声でしゃべります。Open_JTalk にはまだたくさんオプションがありますが、詳しい一覧は、まほろばさんのオープンソース音声合成エンジン「Open JTalk 1.05」などに分かりやすい表があります。

今回は、Open JTalk が直接しゃべるように設定していますが、しゃべらせずに、音声ファイルだけを作ってほしいというときは、オーディオバッファのサイズを指定する -z スイッチを使って、 -z 0 とします。 てくてくラボさんの Open JTalk    [ja.nishimotz.com] の「オーディオデバイスを無効化する」という記事を参考にしてソースを修正すればできるでしょう。 (打ち消し線で消した内容は-zスイッチがなかった頃の解決法でした。)

■ 他の音響モデル

ojtalk.bat の設定を少し書き換えると、標準の hts_voice_nitech_jp_atr503_m001 以外の音響モデルも利用できます。いろいろなMMDAgent 用の音声データも転用できます。open_jtalk.exe を作ったフォルダに音声データをフォルダをごとコピーして、ojtalk.bat の最初の方にある次の行

set VDIR=%CURDIR%hts_voice_nitech_jp_atr503_m001-1.04

この hts_voice_nitech_jp_atr503_m001-1.04 の部分を、そのフォルダの名前に変えると使えるようになります。

MMDAgent の Mei の音声は、mmdagent にある MMDAgent_Example の中にあります。Voiceフォルダをまるごと、今回作った open_jtalk.bat のあるフォルダにコピーしてきて、例の箇所を例えば次のように書き換えます。もしくは、新しく追加した -vdir スイッチでこのフォルダの絶対パスを指定します。

set VDIR=%CURDIR%Voice\mei_normal

 

標準音声のパラメータの数値のままでは、いい声ではありませんので、数値を多少変える必要があります。先ほどのまほろばさんのページに設定値が何通りか書いてあります。

なお、Open JTalk は長文を読ませると、発音がおかしくなる現象が起きます。これを解決するには、てくてくラボさんの Open JTalk    [ja.nishimotz.com]  に書かれている音素継続長の処理を参考にして、ソースを修正するとうまくいくかもしれません。

(2012/04/11最終更新)



posted by takayan at 02:35 | Comment(2) | TrackBack(0) | 音声合成 | このブログの読者になる | 更新情報をチェックする
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。