音声読み上げアプリ作成 PySimpleGUI, gTTS, Python

スポンサーリンク
Python/DeepLearning

みなさん、こんにちは!みやしんです。

今回は、「PySimpleGUI」「gTTS」「pyinstaller」の3つのライブラリを使って、音声読み上げアプリを作ってみたいと思います!

みやしん
みやしん

アプリ作成ってなんかワクワクしますね!

スポンサーリンク

この記事で出来る事 ~Text to Speech アプリ~

音声読み上げアプリ(Text to Speech)を作成します。

アプリアイコン

アプリのアイコンをクリックして起動します。アプリはpyinstallerでexe化しておきます。

アプリを実行すると、mp3ファイルが出力されます。

mp3ファイルを再生すると、音声が流れます。テキストを音声に変換できました!

※また後日、こちらの記事で再生速度の調整機能を追加しています。

PySimpleGUI

PySimpleGUIは、その名の通り、GUIをシンプルなコードで作成できるライブラリです。

数あるGUIライブラリの中でも、最も使いやすいものの1つです。

うまく使いこなすと、下記のようなハイレベルなアプリも作れるようになります。

gTTS

gTTSはText to Speechを処理して音声ファイルとして出力してくれるライブラリです。

機能は少ないですが、日本語の発音もそこそこ良く、下記のような簡単なコードで済むので便利です。

from gtts import gTTS

tts =gTTS(text="Pythonおもしろい",lang="ja")
tts.save("speech.mp3")

pyinstaller

pyinstallerはpythonファイルをexe化してくれるライブラリです。

エンジニアでない方へもアプリを使ってもらいたい時は、exe化は必須ですね!

以前、下記の記事へまとめていますので是非ご参考にしてみてください。

アプリ作成方法

仮想環境の構築

今回はpyinstallerでexe化を行います。おススメとしましては、今回専用の仮想環境を作成されることをお勧めします。そうでないと、exe化したときに余分なライブラリも多数取り込んでしまい、ファイル容量が非常に重くなってしまいます。

python 3.9.13で作りました。

ライブラリをインストール

pip install pysimplegui
pip install gTTS
pip install pyinstaller

サンプルコード

text_to_speech.py

import PySimpleGUI as sg
from gtts import gTTS

def gui():
    # ウィンドウのテーマ
    sg.theme('DarkBrown2')
    
    # ウィンドウの内容を1列ずつ定義
    layout = [  [sg.Text('文章を音声に変換するアプリです')],     # テキスト設置
                [sg.Multiline('文章を入力してください', size=(80, 20), key='sentence')], # 文章入力欄を設置
                [sg.Text('出力ファイル名(.mp3)')],
                [sg.InputText(default_text='speech_file', size=(80, 1), key='file_name')], # 出力ファイル名を入力する
                [sg.Text('言語設定')],
                [sg.Spin(['日本語', '英語'], size=(10,1), initial_value='日本語', key='language')], # jaが日本語、enが英語
                [sg.Button('音声に変換する', key='bt')] ] # ボタンを設置
    # ウィンドウを作成する
    window = sg.Window('Text to Speech Application', layout)      # ウィンドウ定義

    while True:
        # ウィンドウを表示
        event, values = window.read()

        if event == 'bt': # ボタンを押したとき
            message = text_to_speech(values['sentence'], values['file_name'], values['language']) # Text to Speechを実施
            sg.Popup(message, title='音声変換結果') # 処理結果をポップアップでお知らせ
        
        elif event == sg.WIN_CLOSED: # window右上の×印を押して閉じたとき
            break

    # 画面から削除して終了
    window.close()  # ウィンドウを閉じる


def text_to_speech(sentences, file_name, language):
    '''
    Text to Speechを実施する関数
    <入力>
        sentences:テキスト文章 (str)
        file_name:出力ファイル名 (str)
        language:日本語 or 英語 (str)
    <出力>
        message:処理結果 (str)
    '''
    try:
        # Text To Speech
        if language == '日本語':
            tts =gTTS(text=str(sentences), lang='ja')
            tts.save(str(file_name)+'.mp3')
        else:
            tts =gTTS(text=str(sentences), lang='en')
            tts.save(str(file_name)+'.mp3')
        message = '音声変換が終了しました'
    except PermissionError:
        message = 'ファイル出力が出来ませんでした。出力ファイル名を変更、もしくは音声の再生ウインドウが開いている場合は閉じてください。'
    return message
    

if __name__ == '__main__':
    gui()

exe化

exe化については、こちらの記事に詳しく記載していますので、是非ご確認ください。

Pythonスクリプトとアイコン用の画像ファイル(.ico)を準備します。

icoファイルの作成方法も上記の記事に記載があります。

コマンドプロンプトで下記を実行するとexe化処理が始まります。

pyinstaller --onefile --noconsole --icon=microphone.ico text_to_speech.py

処理が終わると下記のようにフォルダやファイルが出現します。

.exeファイルはdistフォルダーに入っています。

このexeファイルをアプリを使いたい方に渡してあげてくださいね🤗

再生速度の調整機能を追加したい場合は、こちらの記事もご参考にしてみてください。

Python/DeepLearning
スポンサーリンク
記事が良かったらSNSでシェアを宜しくお願いします!
みやしんをフォローすると役立つ情報がいっぱいにゃ!
スポンサーリンク

コメント

タイトルとURLをコピーしました