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 を使ってサンプル
![](https://memo.eightban.com/wp-content/uploads/2024/04/2024-04-11_20h19_04-700x350.png)
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()
ディスカッション
コメント一覧
まだ、コメントがありません