今回は、音声合成(テキストから音声ファイルを作成する)ライブラリ『gtts 』を利用したプログラムを作成します。
今回はGUIなしで、決まった文章を音声合成し、再生するプログラムまでを作ります。
『gtts』、『playsound』のインストール
音声ファイルを作成する為のライブラリ『gtts』、音声ファイルを再生する為のライブラリ『playsound』の2つのインストールして下さい。
pip install gtts
pip install playsound
これでプログラム作成の準備が整いました。
『gtts』を使用して音声ファイルを作る
from gtts import gTTS
myText = "おはようございます"
language ='ja'
output = gTTS(text=myText, lang=language, slow=False)
output.save("output.mp3")
1行目:関数のインポート
gttsのライブラリから「gTTS」という関数をインポートします。
3行目:myTextに音声変換する文字列を保存します。
4行目:languageに言語を指定
日本語なので『ja』になります。英語の場合は「en」になります。
5行目:音声の出力
音声合成をする関数『gTTS』です。
引数として、text:(音声変換する文字)、lang:(言語)、slow:(音声速度)があります。langは、先ほど設定したlanguageを設定します。
プログラムを実行すると、音声ファイル『output.mp3』が作成されます。
音声ファイルを再生する
先ほどの音声ファイル『output.mp3』を再生してみましょう。
えっ、ファイルはどこにあるの?
プログラムを見ると、どこに音声ファイルが出力されているか分かりません。
では、ファイルが出力されている場所を確認しましょう。
プログラムがどのフォルダを基準(現在の作業フォルダ)としているを知るためには、先ほどのプログラムに、下記を追記し、どこのフォルダが作業フォルダであるかを確認します。
import os
path = os.getcwd()
print(path)
私の場合(windows10)、”C:\Users\ユーザー名”のフォルダに保存されていました。
『output.mp3』を見つけたら、一度、再生してみて下さい。女性の声で”おはようございます”と流れます(音声は女性のみになります)。
ここで、音声ファイルを解りやすい所、指定したフォルダに出力するように工夫します。下記のようにファイル名を変えてみて下さい。
storepath = "C:/pythontest/"
storefile = storepath + "output.mp3"
output.save(storefile)
1行目:出力先のフォルダを指定
もしCドライブの下の「pythontest」に保存します。別のフォルダに保存したい場合は、適宜変更して下さい。
2行目:ファイル名と出力先のフォルダを繋げる
ファイル名と出力先のフォルダを設定することで、このファイルに音声データを保存させるという指令になります。
ここで『/』と『\』の違いですが、プログラム内で階層(ディレクトリ)を区切るには、『/』を使って下さい。windowsのフォルダアドレスをそのままコピーすると、『\』になってしまうので注意して下さい。
プログラムで音声を再生『playsound』
プログラム内で再生するにはライブラリ『playsound』を使用します。
from playsound import playsound
playsound(storefile)
プログラムを実行すると音声が流れます。
今回のコード
from gtts import gTTS
import os
from playsound import playsound
path = os.getcwd()
print(path)
storepath = "C:/pythontest/"
inText = "おはようございます"
language ='ja'
output = gTTS(text=inText, lang=language, slow=False)
storefile = storepath + "output.mp3"
output.save(storefile)
playsound(storefile)
実際は、作業フォルダを知る為のコードは不要です。
最後に
いかがだったでしょうか。
文字から音声への変換(音声合成)と音声再生を実行することが出来ました。
次はGUIベースでこのプログラムを拡げていきます。楽しみにしていて下さい。
「役に立った!」と思れましたら、下のSNSボタンで記事のシェアをしていただけると嬉しいです!
コメント