何をしたかの自分用メモ書きなのでここだけ読んで作り上げるのは多分できないです。
説明もほとんどしていないので参考Webサイト見ながらがおすすめです。
クアッカ
Cube
サーモン君
Discordのチャットを読み上げるbotの作成
https://qiita.com/9610r/items/d04bd91d373d31d9c3f3
2020年8月10日から作業開始
Python3のインストール
https://www.python.jp/install/windows/install_py3.html
インストール時の「Add Python 3.* to PATH」はチェックをいれる。
これを読みながら進んで問題なかった
Discord bot作成チュートリアル
https://ikayome.hateblo.jp/entry/2019/07/03/Discord_bot作成チュートリアル
Windowsで音声合成Open JTalk
https://qiita.com/mkgask/items/0bf9c26dc96e7b0b45ac
知識が無いと大分厳しい戦いになります。
詰みポイント1:C++をソースコードからビルドするためにビルド環境が必要で、多分一番手軽なのはMicrosoft Visual Studioです。
無料でCommunityエディションがダウンロードできるのでダウンロードしてインストール。
何を作りたいんですか?みたいな画面になったら「C++によるデスクトップ開発」を選択する。
詰みポイント2:拡張子tar.gzを解凍できるソフトウェアが必要、私は7zipを使いました。
https://sevenzip.osdn.jp/
tar.gzというのは
◆7zipを使ったtar.gz解凍方法
音声の合成に必要みたい。
私が使ったのは
hts_engine_API-1.10
名前に「API」が入っているものをDL
先程の手順で解凍しておく
日本語喋るのに多分必要、付随するものも一緒にダウンロードする
私が使ったのは
open_jtalk-1.11
open_jtalk_dic_shift_jis-1.11
hts_voice_nitech_jp_atr503_m001-1.05
解凍しておく
辞書ファイルはutf8を使いたい気持ちでいっぱいなのですが、Windowsのコマンドプロンプトの基本文字コードがshift-jisにオリジナル要素の入ったcp932でutf8とハチャメチャに相性が悪いらしくshift-jisを泣く泣く選択しています。
コマンドプロンプトを用いてmakeを通してビルドします。
ここで詰んだらもうやめておいたほうがいいです
作業フォルダのパスに2バイト以上の文字を含んでいるとエラーとなる可能性があるため注意
VisualStudioのインストールフォルダを探して「vcvarsall.bat」のパスを探しておく。
コマンドプロンプトでファイル解凍先にcdをしてから
call "【vcvarsall.batのフルパス】" x64 を蹴って
nmakeコマンドでビルド実行。
Cドライブ直下に「hts_engine_API」ディレクトリができて「include」ディレクトリもあって「HTS_engine.h」が生成されていたら勝ち。
HTSエンジンと同じようにファイル解凍先にcdしてからnmakeを蹴ると色々始まります。
割と素直じゃないっぽくて、Warningとか山程出てきてびっくりします。
最終的にfatal errorが出て止まったのですが必要なものはここまでで生成されました。
「C:/open_jtalk/bin/open_jtalk.exe」があったら勝ち。
辞書ファイルの準備
解凍したopen_jtalk_dic_shift_jis-1.11のディレクトリ名を「dic」に変更し、「C:/open_jtalk/bin」にコピー
音響モデルファイルの準備
解凍したhts_voice_nitech_jp_atr503_m001-1.05の中から「nitech_jp_atr503_m001.htsvoice」を探してファイル単体を「C:/open_jtalk/bin」にコピー
音声合成の動作テスト
「C:/open_jtalk/bin」にinput.txtでファイルを作成。shift-jisでこんにちは的なことを記入しておく。
コマンドプロンプトで「C:/open_jtalk/bin」にcdしてから以下のコマンドの発行をする
「open_jtalk.exe -m nitech_jp_atr503_m001.htsvoice -x dic -ow output.wav input.txt」
成功すると「output.wav」が生成されていてinput.txtの入力内容を喋っていることを確認できる。声が渋すぎて笑ってしまう。
デフォルトの声だと渋すぎて笑ってしまうので変えました。
でも全て終わった後のオマケ要素だと思いますし、ここまでは説明しません。
参考URLに書いてあるとおりにダウンロードとコマンド書けたらいけます。
--
Open_Jtalk関連の仕込みはここまで。
windowsにffmpegをインストールする
https://web.plus-idea.net/2015/11/windows-ffmpeg/
ffmpegとは何か:動画や音声などのメディアファイルをコンバートしたりアレコレする時にめちゃくちゃ強いソフトウェア。
この項目では「環境変数にPATHを通す」必要があります!
ダウンロードの段階でまた「ソースコードからビルドしてくれよな」っていう空気が漂ってて冷や汗が出ますが、ちゃんとWindows用のビルドがあるので安心してください。Windowsっぽいアイコンのリンクから行けると思う。
その後は「Static」バージョンであること、環境に合わせた32bitと64bit、この2点をよく確認してダウンロード。
ダウンロード適当にしてから確認したら合ってたのでラッキー気分でした。
ダウンロードファイルは7zipで解凍するのがお勧めだそうです。これも前段階でやってたのでラッキーだ。
解凍ディレクトリを「ffmpeg」みたいにリネームして「C:/」の直下に置きました。どこに置いてもいいんだけど置いたパスは覚えておきましょう。
ここが怖かったり詰んだりしたらやめておいたほうがいいです、間違えると良くないことが起こるタイプの設定です
PATHってのはコマンドショートカットのことだ!
今回は特別にPATHの通し方を書いておきます。
Windows10で環境変数(システム環境変数、ユーザ環境変数)を追加
https://www.wannko.net/windows10/etc/kankyo.html
Win7だったらWinキー押下→コンピューターを右クリック→プロパティ→左メニューのシステムの詳細設定を押下
コマンドプロンプトを一回閉じてまた開くと環境変数が再読み込みされます。
開き直してから「ffmpeg」とコマンド発行をします。
ffmpegのバージョン情報や有効な引数などの情報がボワーと出てきたらOKです。
そんなコマンドは無いですよと表示されたらできていません…。
ここまで出来るともう勝ったも同然だし、やったか!?って感じです。
参考URLに書いてあるコードを丸コピペしてお手軽やったぜ~!って思ったらそんな甘い話はなくて結局段階を踏んで順次実装していくことになりました。
まずコードのメインファイルのほうを全体コピーしてきてから、eventハンドラのon_ready内を残して全て削除する。
流石に伝わらなくなってきた感じが強いので画像を貼ります。
末尾のclient.run部分は消すと動かなくなる。また序盤で取得したdiscordのbot_TOKENを書いておかないとやはり動かない。
ここまで書いたらプロンプトを起動して今書いたファイルを蹴ってみる。
discordのinviteしたサーバーのユーザーを見てみると、成功したらbotがオンライン表示になる。プロンプトにはユーザ名とユーザIDが出力される。
黒塗りをグレーとかにしたらよかった。見づらい。申し訳ない。
ここで異常に詰まったけど解決に至った。
ポイントは
テキストチャットを受信しているイベントハンドラ内でメッセージにコマンドprefixが付いているものを判定してclient.process_commandsでコマンドイベントへパスしているところです。
これがわからなくて数時間コマンドを送信してはシカトされる時間が続いてメンタルが怪しくなってきました。
これを書いて実行してから、適当なボイスチャンネルに入室してテキストチャットに「!join」コマンドを書くと…
いらっしゃい
「!bye」コマンドで去っていきます。
この先は実装面の話になるのでカットするぜ!!!!!!!!
このあたりについてはもしわからないので教えてってなった時に連絡頂けたら個別で対応したいなって思っています!
Twitterはこちらです:https://twitter.com/quakka_aa