AquesTalk BBS
TOP > 記事閲覧
fld_nor.gif M5Stackで外部I2Sアンプボードを使うには
投稿日 : 2020/04/11 16:23
投稿者 taka matsu
参照先 http://south-alps.sakura.ne.jp/m5stack/music.html
M5Stackの内部アンプの音質が良くないので、MAX98357A搭載 I2S 3W D級アンプボードを使ってみましたが、AquesTalkが使えなくなりました。外部アンプ使用の場合の注意点は書いてあるのですが、具体的な記述がないので実現できていません。具体的なスケッチの変更方法を教えていただけないでしょうか?
編集 編集
件名 自己レスです
投稿日 : 2020/06/02 16:41
投稿者 taka matsu
参照先 http://south-alps.sakura.ne.jp/m5stack/music.html
 Qiitaの 1969 od さんの「ESP32で外付けDACを使う」という記事とAquesTalkについての「N.Yamazaki's blog」での山崎さんの説明が解決策でした。
1.i2s_config.modeでI2S_MODE_DAC_BUILT_INフラグを外す
2.i2s_set_pin()で使用するピンの設定を行なう
3.符号無しデータに変換している処理(92行目)をしない。
 この3点について、AquesTalkTTS.cppファイルの中で変更します。ファイルの後ろの方、I2S DAC についての記述があるところ。//i2s configuration から3行目、「 | I2S_MODE_DAC_BUILT_IN」をそのまま切り取ってしまいます。これがフラグを外すこと。

 static i2s_config_t i2s_config = {....}; が終わった後に、次の項目を挿入。

static const i2s_pin_config_t pin_config = {
.bck_io_num = 26,
.ws_io_num = 25,
.data_out_num = 22,
.data_in_num = I2S_PIN_NO_CHANGE
};

 これは、1969 od さんの真似をしました。GPIOは自分の環境に合わせています。

 static void DAC_create() { の中では、

//i2s_set_pin((i2s_port_t)i2s_num, NULL);
i2s_set_pin((i2s_port_t)i2s_num, &pin_config);

としています。これらがピンの設定。

 最後に、符号無しデータに変換している処理(92行目)をしない。もともとのAquesTalkTTS.cppに記載があってコメントアウトされている for External SPI-DAC の行に入れ替えることで完了です。アバターと組み合わせるとコンパイルエラーが出ますが、他では今のところエラーなく動いてくれます。I2S-DACでなくSPI-DACなのが気になりますが。
 課題としては、音が、声がビジューという音と重なってしまい、聞きつらいことですね。これもどうにかしたいものです。
編集 編集
件名 スレッドをトップへソート
名前
URL
パスワード (自分の記事を再編集時に使用)
画像認証 (右画像の数字を入力) 投稿キー
コメント sml_cool.gifsml_sml.gifsml_yawn.gifsml_q.gifsml_big.gifsml_shm.gifsml_wink.gifsml_cry.gifsml_roll.gifsml_bonk.gif

- WEB PATIO -