Pythonで学ぶ音声合成のWindows動作チェック
素晴らしい書籍を送り出してくださった山本様,高道先生に感謝申し上げます.Text-to-speech (TTS)の世界ではWindowsを使っている人が少なく,当然その分情報も少ないので,自分用に一連のやり方をまとめます.環境変数の説明はないので各自でググってください.
追記(2021/09/26):ttslearnのインストールがWindows公式対応になったので,以下の資料は不要になりました.ただし,Windowsの場合環境変数の設定でミスする場合があるので,エラーが出た場合は本資料のコンパイラと環境変数関係を疑ってみると良いかもしれません.
1.Anacondaのインストール
これは書籍に記載されたとおりにします.すでにAnacondaがインストールされている場合,バージョンを確認しましょう.3.7未満でしたら,1回アンインストールして再度インストールしたほうが手っ取り早いです.私はcondaコマンドでアップデートをかけましたが失敗し,再インストールで解決しました.バージョンは
> python --version
で確認できます.確かJupyterもセットで入りますが,入っていない場合は書籍のp. 68を参考にインストールしてください.
2.pyopenjtalkのインストール
そのまま書籍にあるやり方でttslearnをインストールしようとすると,恐らく山のようにエラーが出ます.ttslearnでは複数のライブラリを用いていますが,その中のpyopenjtalkのインストールで失敗するためです.
2.1 コンパイラ関係のインストール
インストールには,少なくともC/C++のコンパイラが必要です.エラー解決の試行錯誤をやっていたので今となっては正解が分からないのですが,Visual Studio (VS)とcmakeのインストールが必要だと思われます.私はVS 2019とcmakeに加えてg++コマンドとnmake,makeも使えるようにしました.単にインストールするだけではなく環境変数「Path」にそれぞれの実行ファイルのフォルダを指定することも必要です.コマンドプロンプトを立ち上げて,make, cmake, nmake, g++と打ちこんで動けばOKです.上記のインストール方法は適当にググれば出てきます.頑張りましょう.
2.2 pyopenjtalkのconfig.hの書き換え
今度は,pyopenjtalkのサイトからpyopenjtalkをダウンロードします.tar.gzなので,解凍用のソフトを適当にダウンロードして使いましょう.私はLhaplusを使い,解凍時にエラーが出ましたが無視しても問題ありませんでした.解凍後は,出来上がったフォルダの中から「lib/open_jtalk/src/mecab/src」と辿り,そこにあるconfig.hを適当なエディタで開きます.ファイルの以下2か所を変更します.行数が多いので,Ctrl+Fで検索して書き換えましょう.
/* #undef HAVE_WINDOWS_H */ を #define HAVE_WINDOWS_H 1 に変更
#define HAVE_DIRENT_H 1 を /* #define HAVE_DIRENT_H 1 */ に変更
変更後は保存します.
2.3 pyopenjtalkの手動インストール
最後にanacondaを開き,ダウンロードしたpyopenjtalkのフォルダにcdコマンドで移動してから,以下のコマンドで手動セットアップします.
> pip install -e .
これで,pyopenjtalkのインストールが完了するはずです.
3.ttslearnのインストール
ここまでくれば,後は書籍のとおり
> pip install ttslearn
でインストールが完了するはずです.これでめでたしめでたしかというとそうではなく,Windowsでサンプルコードを動かすには,もうひと手間かかります.
4.環境変数「HOME」の設定
Windowsでは環境変数「HOME」が設定されていません.ttslearnではこの環境変数を使ったコードが含まれるため,
> from ttslearn.dnntts import DNNTTS
でエラーを吐くことになります.解決策はいくつかありますが,今回は環境変数「HOME」を独自に作り,anacondaを起動させた時点でのフォルダの絶対パスを入れて保存する方法で解決しました.多分これが一番楽だと思います.
5.動作確認
ここまでくればあとは書籍のデモプログラムが動くはずです.
from ttslearn.dnntts import DNNTTS
from IPython.display import Audio
engine = DNNTTS()
wav, sr = engine.tts("日本語音声合成のデモです。")
Audio(wav, rate=sr)
もし,IPythonがインストールされていない場合はpipでインストールしましょう.お疲れ様でした.
この記事が気に入ったらサポートをしてみませんか?