前提・実現したいこと
初投稿失礼します。
私は現在趣味でこちらのサイトを参考に、Pythonを使ったDiscordで使用する読み上げbot開発を行っています。
Discord側からメッセージを取得し、Open Jtalkを使用して音声合成を行い再生するというものになります。
Herokuにデプロイするところまでは上手くいったのですが、実際にDiscordにメッセージを打つとエラーが発生してしまい上手く機能しません。
発生している問題・エラーメッセージ
Heroku ViewLogsより引用
FileNotFoundError: [Errno 2] No such file or directory: 'open_jtalk -x /app/dic -m /app/voice_mei/mei_happy.htsvoice -r 1.0 -g 0.8 -a 0.5 -ow output.wav input.txt'
該当のソースコード
voice_generator.py
python
1def creat_WAV(inputText): 2 path = os.getcwd() 3 print(path) 4 5 inputText = remove_emoji(inputText) 6 inputText = urlAbb(inputText) 7 inputText = remove_custom_emoji(inputText) 8 input_file = os.path.abspath('/src/input.txt') 9 10 with open(input_file, 'w', encoding='shift_jis') as file: 11 file.write(inputText) 12 13 command = 'open_jtalk -x {x} -m {m} \ 14-r {r} -g {g} -a {a} -ow {ow} {input_file}' 15 16 # 辞書のPath 17 x = os.path.abspath('/dic') 18 19 # ボイスファイルのPath 20 m = os.path.abspath('/voice_mei/mei_happy.htsvoice') 21 22 # 発声のスピード 23 r = '1.0' 24 g = '0.8' 25 a = '0.5' 26 27 # 出力ファイル名 and Path 28 ow = os.path.abspath('/src/output.wav') 29 30 args = {'x': x, 'm': m, 'r': r, 'g': g, 31 'a': a, 'ow': ow, 'input_file': input_file} 32 33 cmd = command.format(**args) 34 35 subprocess.run(cmd) 36 37 return True
ディレクトリ
.gitignoreにてinput.txt
とoutput.wav
は管理外にしています。
bin/ ┝ dic/ ┝ ffmpeg/ ┝ src/ │ ┝ input.txt │ └ output.wav ┝ voice_mei/ │ └ mei_happy.htsvoice ┝ open_jtalk.exe ┝ Procfile ┝ read_bot.py ┝ README.md ┝ requirements.txt ┝ rentime.txt └ voice_generator.py
試したこと
ディレクトリ関係で怒られてると認識したのでディレクトリの書き方などを変えてみましたが変わりませんでした。
補足情報(FW/ツールのバージョンなど)
プログラミング初学者です。
Python 3.9.1
discord.py 1.6.0
pydub 0.25.1
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/29 10:15 編集
2021/05/29 14:30
2021/05/29 16:52
2021/05/30 01:14
2021/05/31 09:48
2021/05/31 16:21