【第9回PYTHON講座】音声合成ライブラリ『gtts』を 使ってプログラムを作ろう②

スポンサーリンク
PYTHON

音声合成(テキストから音声ファイルを作成する)ライブラリ『gtts 』を利用したプログラムを作成します。

完成プログラムの内容

GUIベースの入力欄に文字を入力し、実行ボタンをクリックして、音声を再生させるプログラムを作成します。また、入力される言語選択ををプルダウンで選択出来るようにしたいと思います。
 

今回はGUIを作り、前回のコードを移植して完成させましょう。プルダウンメニュー(コンボボックス)の作り方を覚えましょう。

スポンサーリンク

Tkinterを利用してGUIを作成

GUI作成する為のライブラリ『tkinter』を利用して、GUIを作成しましょう。『tkinter』の使い方は以前説明したので省略します。

import tkinter as tk

root = tk.Tk()
root.title('音声合成プログラム')

canvas = tk.Canvas(root, height=150, width=400,bg="#FFFFFF")
canvas.pack()

lbl = tk.Label(text='言葉を入力して下さい', bg="#FFFFFF")
lbl.place(x=10, y=10)

Entry1= tk.Entry(width=50, bg="#EEEEEE")
Entry1.place(x=10, y=45)

cmdbtn = tk.Button(canvas,
                   text="確認",padx=10, pady=5, 
                   command=command1).place(x=10, y=100)

clsbtn = tk.Button(canvas, 
                   text="終了", padx=10, pady=5, 
                   fg="red", 
                   command=quit).place(x=70, y=100)

root.mainloop()

音声を再生させる関数をcommand1という名前で定義します。

関数を作る

前回の作成したプログラムをcommand1に移植しましょう。

language ='ja'
storepath = "C:/pythontest/"
storefile = storepath + "output.mp3"

def command1():
    output = gTTS(text=Entry1.get(), lang=language, slow=False)
    output.save(storefile)
    playsound(storefile)
ボタンを押すとcommand1が呼び出されます。
1から3行目はボタンを押す度に実行する必要はないので、ウインドウが立ち上がった1度のみ実行されます。
 
これで入力欄に文字を入力した後にボタンをクリックすると音声が再生されます。

プルダウンメニュー(コンボボックス)を作る

先ほどのコードでは言語は固定されていましたが、プルダウンメニューで日本語と英語を選択出来るようにします。

プルダウンメニューは正式にはComboBox(コンボボックス)と言います。

var = tk.StringVar()
var.set('ja')

choices = ['ja', 'en']

option = tk.OptionMenu(canvas, var, *choices)
option.pack(padx=10, pady=10)
option.place(x=10, y=70)

2行目:選択する時の初期値をja(日本語)にします。

4行目:選択する項目リストです。ja(日本語)、en(英語)のリストです。

6行目:tk.OptionMenuはコンボボックスを作る関数になります。choicesの前に『*』を付ける事を忘れないで下さい。

7行目:コンボボックスの大きさを定義します。

プルダウンメニュー(コンボボックス)作成

ここで、コンボボックスで選んだ値はget()で取得します。

language = var.get()

プログラムコード

これでGUIで文字を音声合成し再生するプログラムが出来ました。

文章を入力して音声合成出来るかを試してみて下さい。

from gtts import gTTS 
from playsound import playsound
import tkinter as tk

root = tk.Tk()
root.title('音声合成プログラム')

canvas = tk.Canvas(root, height=150, width=400,bg="#FFFFFF")
canvas.pack()

lbl = tk.Label(text='言葉を入力して下さい', bg="#FFFFFF")
lbl.place(x=10, y=10)

Entry1= tk.Entry(width=50, bg="#EEEEEE")
Entry1.place(x=10, y=45)

var = tk.StringVar()
var.set('ja')

choices = ['ja', 'en']

option = tk.OptionMenu(canvas, var, *choices)
option.pack(padx=10, pady=10)
option.place(x=10, y=70)

storepath = "C:/pythontest/"
storefile = storepath + "output.mp3"

def command1():
    language = var.get()
    output = gTTS(text=Entry1.get(), lang=language, slow=False)
    output.save(storefile)
    playsound(storefile)

cmdbtn = tk.Button(canvas,
                   text="再生",padx=10, pady=5, 
                   command=command1).place(x=10, y=110)

clsbtn = tk.Button(canvas, 
                   text="終了", padx=10, pady=5, 
                   fg="red", 
                   command=quit).place(x=70, y=110)

root.mainloop()

最後に

いかがでしたか。

GUIベースのプログラムを作ることにも慣れてきたのではないでしょうか。色々と応用して自分なりのプログラムを制作していくと、プログラミングスキルも上がりますよ。

コメント

Social Media Auto Publish Powered By : XYZScripts.com
タイトルとURLをコピーしました