openjtalkをインストールして日本語のtext-to-speechを行う
Build Tools for Visual Studio 2022インストール
Microsoft C++ Build Tools – Visual Studio
pyopenjtalkのインストール
pip install pyopenjtalk
playsoundのインストール
pip install playsound==1.2.2
指定されたデバイスが開かれていないか、または MCI で認識されません。のエラーが出るのでバージョンを下げます
コード
import numpy as np
import pyopenjtalk
from scipy.io import wavfile
from playsound import playsound
x, sr = pyopenjtalk.tts("おめでとうございます", speed=1.0, half_tone=0.0, run_marine=False)
wavfile.write("test.wav", sr, x.astype(np.int16))
playsound('test.wav')
pydudのインストール
pip install git+https://github.com/jiaaro/pydub.git@master
pip install simpleaudio
コート
import numpy as np
import pyopenjtalk
from scipy.io import wavfile
from pydub import AudioSegment
from pydub.playback import play
x, sr = pyopenjtalk.tts("ございます")
wavfile.write("test.wav", sr, x.astype(np.int16))
voice = AudioSegment.from_file("test.wav", format="wav")
play(voice)
gui を使ってサンプル
import tkinter as tk
from tkinter import messagebox, scrolledtext
import pyopenjtalk
import numpy as np
from scipy.io import wavfile
from pydub import AudioSegment
from pydub.playback import play
def generate_audio(text_input, label, scrollbar):
try:
# 読み仮名を取得してラベルに表示
kana = pyopenjtalk.g2p(text_input, kana=True)
label.config(state="normal")
label.delete(1.0, "end")
label.insert("end", "読み仮名: " + kana)
label.config(state="disabled")
# スクロールバーを最下部に移動
scrollbar.set(0.0, 1.0)
# テキストを音声に変換
x, sr = pyopenjtalk.tts(text_input)
wavfile.write("output.wav", sr, x.astype(np.int16))
# 生成された音声を再生
voice = AudioSegment.from_file("output.wav", format="wav")
play(voice)
except Exception as e:
# エラーメッセージを表示
messagebox.showerror("Error", str(e))
def create_gui():
# Tkinterウィンドウの作成
root = tk.Tk()
root.title("Text to Speech Converter")
# テキストボックスの作成
text_box = scrolledtext.ScrolledText(root, width=70, height=10, font=('Arial', 14))
text_box.pack()
# ラベルの作成
kana_label = tk.Text(root, width=70, height=5, font=('Arial', 14))
# スクロールバーの作成
scrollbar = tk.Scrollbar(root, command=kana_label.yview)
scrollbar.pack(side="right", fill="y")
kana_label.config(yscrollcommand=scrollbar.set)
kana_label.pack(fill="both", expand=True)
kana_label.configure(state="disabled")
# ボタンの作成
button = tk.Button(root, text="音声生成", command=lambda: generate_audio(text_box.get("1.0", "end-1c"), kana_label, scrollbar))
button.pack(fill="x")
# ウィンドウを表示
root.mainloop()
# GUIを作成して表示
create_gui()
ディスカッション
コメント一覧
まだ、コメントがありません