【音声合成】Pythonで音声を生成してみよう!

音声合成とは

音声合成とは、コンピュータを用いて人間の声を真似た音声を人工的に生成する技術です。
音声合成を活用することで、任意のテキストを音声に変換することができます。
普段の会話をコンピュータで認識しそのテキストを音声合成することで、話した内容を書き出すことなどに活用できます。

pyopenjtalkのインストール

pyopenjtalkという日本語文章を音素表記に変換してくれるPythonライブラリをGoogle Colabにインストールします。

Google Colaboratory とは?

!mkdir tools && cd tools && git clone https://github.com/r9y9/hts_engine_API.git
!mkdir -p tools/hts_engine_API/src/build && cd tools/hts_engine_API/src/build && \
 cmake -DCMAKE_INSTALL_PREFIX=../.. .. && make -j && make install
!cd tools && git clone https://github.com/r9y9/open_jtalk.git
!mkdir -p tools/open_jtalk/src/build && cd tools/open_jtalk/src/build && \
 cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON \
 -DHTS_ENGINE_LIB=../../../hts_engine_API/lib \
 -DHTS_ENGINE_INCLUDE_DIR=../../../hts_engine_API/include .. && \
 make install
!cp tools/open_jtalk/src/build/*.so* /usr/lib64-nvidia
!cd tools && git clone https://github.com/r9y9/pyopenjtalk.git
!pip install pyopenjtalk==0.1.5

インストールできたら、以下のプログラムでバージョンを確認してみましょう。今回は0.15をインストールいたしました。

import pyopenjtalk
print(pyopenjtalk.__version__)

pyopenjtalkで音声合成を行う

pyopenjtalkに加え、numpyとPythonでwavファイルを書き出すためにscipyもあわせて利用します。

import pyopenjtalk
import numpy as np
from scipy.io import wavfile

text = "AI Academyで音声合成を学んでいます"
x, sr = pyopenjtalk.tts(text)
wavfile.write("output.wav", sr, x.astype(np.int16))

実行結果

プログラムを実行すると、「output.wav」が作成されますので、ダウンロードすることで音声を再生することができます。変数textの中身を任意の文章に変更することで様々な文書を書き出すことが出来ます。

音声合成を書籍で学ぶ方法

今回は音声合成をPythonで行いましたが、本格的に学びたい方はこちらの書籍を是非読んで見てください。

Pythonで学ぶ音声合成 機械学習実践シリーズ

Pythonで学ぶ音声合成 機械学習実践シリーズ Kindle版

上記の書籍で登場するソースコードのライセンスはMITのため、商用・非商用問わずに、利用することが可能です。

AIの基礎から機械学習技術を効率よく身に付けたい方へ

AI Academy Bootcampの「オンデマンド動画+チャットサポートプラン」では、6か月35,000円にて、PythonプログラミングやAI基礎、統計学、機械学習、SQL、深層学習の基礎から、応用範囲まで幅広く学ぶことが出来ます。
独学でプログラミングを学習したが挫折してしまった方や、機械学習や深層学習に関してわからないことを講師にいつでも質問できる環境で学びたいという方は是非ご受講ご検討ください。