RのWeb制作

Webサービス制作のための技術情報を。データ分析(Python、機械学習コンペ他)や自作野球ゲームMeisyoのこと中心。

Python データサイエンス データサイエンスおすすめ教材紹介【Skill Stacks】

ノートPCとPythonでできる音声合成

投稿日:

「音声合成やってみたいけど難しそうだなあ」

私もそう思っていました。
私が使おうとしたきっかけは、大量の青空文庫の書籍を機械に朗読させたいと思ったからです。

そこで、調べてみるとできるということが分かりました。
WindowsのノートPCでも時間を掛ければできるし、これはスゴイ!

ただ、実際のコードを追ってみると技術(言語特徴量抽出、音響特徴量予測、音声波形形成)の複合体なので実装はツラい。orz
さらに調べてみると、Pythonにttslearnというライブラリがあり、なんと6行程度で実装が可能・・・!
これはスゴイ。

それでは、今回は成果物を交えて音声合成の技術書を紹介します。

成果物

「日本語音声合成のデモです。」という短い文の音声を作成しました。

DNN

計算時間

数秒

参考コード

https://r9y9.github.io/ttslearn/latest/notebooks/ch06_Recipe-DNNTTS.html

感想

聞いたことある感じやな~

WaveNet

計算時間

03:54(PC1+GPU使用あり)
06:04(PC2+GPU使用なし)

参考コード

https://r9y9.github.io/ttslearn/latest/notebooks/ch08_Recipe-WaveNet.html

感想

「です」がちょっと違和感あるなあ。。
計算時間もかかるし、これはDNNの方がいいかな?

Tacotron2

計算時間

03:07(PC1+GPU使用あり)
04:51(PC2+GPU使用なし)

参考コード

https://r9y9.github.io/ttslearn/latest/notebooks/ch10_Recipe-Tacotron.html

感想

えっ・・・?すごくないコレ…?
めっちゃ自然やねんけど。

今回の参照本


Pythonで学ぶ音声合成

ttslearnで利用されているモデルは非商用で使うことが可能です。ライセンスなどの詳細は公式サイトをご覧ください。

今回は3つのモデルのみ紹介しましたが、これが音声合成のすべてではありません。そのため、公式サイトに目を通してから利用されることを推奨します。
※過去からの積み重ねがあるので、そちらを読んでいただきたく。
※本を通読しましたが、数式に圧倒されるかもしれません。

エラー対応

Windows環境ではttslearnをインポートできない可能性があります。
そのため、その回避方法を下記に書いておきます。

openjtalk 0.1.3をダウンロード

pyopenjtalkからダウンロードします。
※バージョンが上がるとディレクトリ構成が違っているため、対応が難しいかもしれません。

config.hの編集

mecab/src/config.hを3点編集します。

/* #undef HAVE_WINDOWS_H */

#define HAVE_WINDOWS_H 1
/* #undef VERSION */

#define VERSION "1.10"
#define HAVE_DIRENT_H 1

// #define HAVE_DIRENT_H 1

pip install openjtalk

openjtalkの(setup.pyがある)メインディレクトリで、下記コマンドを実行します。

pip install -e .

pip install ttslearn

ttslearnがインストールできるはず!

エラー対応参考

https://github.com/r9y9/pyopenjtalk/issues/10
https://twitter.com/yamori81/status/1426918620676853769

機器情報

PC1

GALLERIA ZG Core i9 9900K/RTX2080/メモリ16GB K/08430-10a
ゲーム用タワーPC。一昔前のものだが、まだ現役で使えそう。

PC2

THIRDWAVE DX-T7
ノートPC。意外と計算速度が速かった。

青空文庫に関連するサービスについて

青空文庫関連の競合サービスは意外と少なく、文学作品を読める、人の朗読、Androidでの朗読・・・と色々あるものの、本を読む(聞く)間にある、さまざまな意思決定を円滑にする技術(文、音声、要約、検索、しおり、、etc)がどのサービスも所々抜けていて、中年層~ご老人に向けて刺さるような包括的なサービスになっていないので勿体ないなと。
しかもアクセス解析サイトで見てみると1サイトで月100万PV超えているものが複数。コレはびっくり…(@@;

移動時間でも、仕事前でも、就寝前でも、病院でも読める(聞ける)ようなサービスとなるとデバイスを問わないWebが一番楽ですかね。
ちょっと作ってみよう。

さいごに

今回は音声合成を試してみました。
Tacotron2のなめらかさには驚かれたかと思います。
それではまた~(^^ノ

-Python, データサイエンス, データサイエンスおすすめ教材紹介【Skill Stacks】

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

Flask-Babelを使って、Pythonアプリで多言語対応を行う

Pythonで多言語対応してみたいなーと思っていました。 思っていましたが、実際になかなか使うタイミングがない・・・。 今回自作ゲームでユーザー数の増加がみられ、かつ海外からのアクセスも複数確認できた …

【教材紹介】深層学習 2020年度春学期 · ニューヨーク大学データ・サイエンス・センター

米国大学のコンピューターサイエンスの講義を無料で、かつ日本語で公開されている教材がありましたので共有いたします。 名称 深層学習 DS-GA 1008 · 2020年度春学期 · ニューヨーク大学デー …

「実践!Chainerとロボットで学ぶディープラーニング」を作ってみた

実践!Chainerとロボットで学ぶディープラーニングを購入しました。 単純にロボを動かすのは楽しいです。 周りに意外と買った人が居ないようなので、レビューを書きました。 所感 ちょっとお高いけど、土 …

[Python] 機械学習での変数選択自動化(SVRを例に)

今回、会社のコンペで255というとんでもない量の変数を扱うことになりました。 価格予想を行うコンペです。 今回のデータのおさらい データ量は1500程度。8:2で分けると検証データが300しかないすご …

[Meisyo]練習難易度の不均衡是正への分析的アプローチ2

[Meisyo]練習難易度の不均衡是正への分析的アプローチから早3か月。 「練習ごとに難易度が違いすぎるんですけど!!」という不満は少しは解消されたかなー・・・ 効果測定してないのにわかるの?エスパー …