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

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

関連記事

[Python] tensorflow_datasetsで詰まったとき

「図解速習 DEEPLEARNING」で自己環境(Windows)で学習していました。 tensorflow_datasetsって何だ・・・? import tensorflow_datasets a …

[python]MNISTの学習モデルを保存し、テストする

機械学習のHello World的なMNISTにて、学習モデルを保存し、実行する際のメモ。 用意するもの PC コマンドプロンプト インストール(python、sklearn、numpy) 学習時のコ …

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

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

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

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

2022年 プログラミング初心者におすすめのPCと備品

はじめに プログラミング始めてみたい(始めてる)けど、パソコン用意したいなあと思った時、ググってみるといろいろ情報がありすぎて困ったあなた。 PC・プログラミング歴20年以上私が見るに、アフィリエイト …