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

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

関連記事

VPSでつくるPythonでのWebアプリ運用環境(連載記事)

今風のWebアプリをリリースするにはレンタルサーバーでは物足りない! 例えば、PythonやRubyに対応しているレンタルサーバーはあまりありません。加えて、データサイエンスや機械学習に強いプログラム …

【教材紹介】データ解析の実務プロセス入門

「データ分析を会社で初めて行いたい」「データ分析を任されたがどうすればいいかよく分からない」というときはこちらの書籍がおすすめ。良いデータ分析を構成する分析プロセスからデータの収集方法、探索的データ解 …

pythonのnumpyで遊ぶ

異常に奥が深いnumpyで遊びましょう!! import numpy as np 配列の形状変換 a = np.arange(int(np.floor(np.random.rand()*1000))) …

(VPSでつくる) Socket通信を使ったモダンなチャットアプリをFlaskで作ろう

連載第十三回目です。 今回は、チャットアプリを作っていきたいと思います。 チャットの想定としては、会員制、socket通信で滑らかにチャットできる、データベースにログを残すにしましょう。 ただのチャッ …

Pandas DataFrameでの表示列・行をすべて表示する(表示制限を解除する)

Jupyter NotebookでPandasのDataFrameを表示する際、行数・列数が多すぎると省略されてしまう場合があります。 制限を解除しましょう。 pd.set_option(‘displ …