質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Discord

Discordは、ゲーマー向けのボイスチャットアプリです。チャット・通話がブラウザ上で利用可能で、個人専用サーバーも開設できます。通話中でも音楽を流したり、PC画面を共有できるなど多機能な点が特徴です。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

2911閲覧

HerokuにてDiscordで使用する読み上げbotを運用したい

chibou__music

総合スコア0

Discord

Discordは、ゲーマー向けのボイスチャットアプリです。チャット・通話がブラウザ上で利用可能で、個人専用サーバーも開設できます。通話中でも音楽を流したり、PC画面を共有できるなど多機能な点が特徴です。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/05/29 05:02

編集2021/05/29 10:04

前提・実現したいこと

初投稿失礼します。
私は現在趣味でこちらのサイトを参考に、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.txtoutput.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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

'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'がひとかたまりの入力になってしまっているので

python

1 subprocess.run(cmd.split())

などで分割する必要があります

投稿2021/05/29 09:43

taC-h

総合スコア289

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

chibou__music

2021/05/29 10:15 編集

回答ありがとうございます! ```python subprocess.run(cmd.split()) ``` と書き換えましたが下のようなエラーが出ています。 ``` File "/app/voice_generator.py", line 54, in creat_WAV with open(input_file, 'w', encoding='shift_jis') as file: FileNotFoundError: [Errno 2] No such file or directory: '/src/input.txt' ``` どうしたら良いでしょうか?
taC-h

2021/05/29 14:30

> input_file = os.path.abspath('/src/input.txt') abspathの引数が"/"で始まる場合,そのまま返されるので,想定されていないpathになっています "src/input.txt"などと指定します
chibou__music

2021/05/29 16:52

ディレクトリの書き方を"/"で始まらないものにしました。 しかしまだ、このようなエラーが出ます。 FileNotFoundError: [Errno 2] No such file or directory: 'open_jtalk' Herokuにてopen_jtalk を使用するときになにか必要な設定や手順があるのでしょうか
taC-h

2021/05/30 01:14

HerokuのOSがDebian系なので,exeは(そのままでは)動かせません Herokuではsudoが使えないらしいので,Open Jtalkの.tar.gz形式のバイナリをダウンロードして解凍し,exeの代わりに置いておいてください 先にShell上で動くか確認するとよいです
chibou__music

2021/05/31 09:48

教えていただいた通り解凍し、exeの代わりに置いてデプロイしたところ容量オーバーのため上手くビルドできませんでした。 代替案など何か良い方法を知りませんか?
taC-h

2021/05/31 16:21

容量オーバーしているやつは恐らく,自分でビルドするためのファイル群です Open Jtalkのビルド済みバイナリは無さそうなので,自分でビルドするしかなさそうです https://qiita.com/taC_h/items/19c1a73aab279b9fa283 手元にLinux環境が無いならWindowsならWSLでビルドするのがよさそうです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問