@robo8080さんからフォークし、@katsuyoshiさんのコードを参考にさせてもらったものです。
- ./sdcard内のtxtファイル4つをSDカード直下にコピーし、適切に編集※し、M5Stack Core2に挿入してください
※各txtファイル(以後、設定ファイル)の冒頭などに説明を記載しているので編集の参考にしてください settings.txt
のTTS_API_KEY
とwifi_info.txt
のYOUR_WIFI_SSID
/YOUR_WIFI_PASSWORD
1組を記入してもらえれば、スタックチャンが喋るようになると思います
【補足】TTS_API_KEYについてはrobo8080さんのオリジナルのドキュメント(↓)を確認ください- 一応「SDカードが挿入されていない場合」or「SDカードは挿入されているが所定の設定ファイルがない場合」でも最低限の動作は行えるようにデフォルト値を仕込んであります
- 一応、設定ファイルは互換性を持たせているので、設定ファイルそのままで、新しいファームウェアに更新しても問題なく動きますが、
0.2.1以降で時刻指定等を改善しているので、最新の./sdcardの設定ファイルを参考に設定ファイルを更新することをおススメします
最新環境でビルドができない、動作しないといった場合まずはバージョンを下記に合わせてみてください。
- Arduino IDE (バージョン 1.8.19で動作確認をしました。)
- ボードマネージャ: M5Stack(2.0.5-1.0で動作確認しました。)
- M5Unifiedライブラリ(バージョン 0.0.7で動作確認をしました。)
- M5Stack-Avatarライブラリ(バージョン 0.8.2で動作確認をしました。)
- ServoEasingライブラリ(バージョン 2.4.0で動作確認をしました。)
- ESP32Servoライブラリ(バージョン 0.9.0で動作確認をしました。)
- ESP8266Audioライブラリ(バージョン 1.9.7で動作確認をしました。)
No. | 機能 | 補足 |
---|---|---|
1 | SDカード内の各種設定ファイルを変更するだけで、 ファームウェアを再ビルド/アップロードすることなく、 各種動作を変更可 |
「サーボ調整値」「TTS_API_KEY 」「(複数の)WiFiポイント情報」等を設定ファイルに設定可 |
2 | Button ABCで5つのアバターを切り替え可 | あたる, ラム, スタック, スースー, ブラウン の5つ 「起動時(デフォルト)のアバター」を設定ファイルで指定可 |
3 | 顔(画面)タッチ毎にアバターがメッセージを喋る | 「メッセージ」は設定ファイルに登録 |
4 | 一定間隔で時刻通知 | 「通知間隔(分)」は設定ファイルで指定可 |
5 | 夜間は時刻通知を抑制 | 「夜間の時間帯」は設定ファイルで指定可 夜間はスタックちゃんは眠る |
6 | 指定時刻に指定メッセージを喋る | 「指定時刻」「指定メッセージ」は設定ファイルに登録 |
- スタックちゃんが眠る時に「おやすみなさい」と言うように変更 ※眠る絡みの動作を改善
- 夜間の時間指定を「時:分〜時:分」に変更
- 本家の変更( サーボループでlipsyncが占有されるため、別タスク化 )を取り込み
- スタックちゃんの水色化対策でM5Stack-Avatarライブラリのバージョンを0.8.1から0.8.2に変更
- 時刻通知/時刻指定通知を4点改善
1点目) 時刻通知の喋りを「HH時0分」を「HH時ちょうど」、「HH時30分」を「HH時半」に変更
2点目) 時刻指定通知の通知時刻を「HH」と「MM」の2行から「HH:MM」の1行に変更
3点目) 時刻指定通知の通知時刻を「時刻+曜日」に拡張
4点目) 時刻指定通知のメッセージ数を最大128個に変更 - メッセージ数を最大64個に変更
- 時刻通知を抑制している間(夜間など)、スタックちゃんを眠らせる※ことにした ※サーボを止めて画面を暗くする
- 各種動作設定(TTS_API_KEY含む)、WiFi情報等をSDカード内の各種設定ファイルに移動しました(manba036オリジナル)
基本、ファームウェアを再ビルド/アップロードすることなく、SDカード内の各種設定ファイルを変更するだけで、各種動作を変更することができます - WiFiMultiで複数のWiFiポイントに接続できます(katsuyoshiさん追加機能を移植)
SDカード内の設定ファイルにWiFiのSSID/PASSWORDを複数登録できます(manba036オリジナル) - PandFaceとTVFaceを追加しました(katsuyoshiさん追加機能を移植)
Button A: あたる(0) と スースー(3) を交互に切り替えます(喋りません)
Button B: ラム(1) に切り替えます(喋りません)
Button C: スタック(2) と ブラウン(4) を交互に切り替えます(喋りません)
SDカード内の設定ファイルで起動時(デフォルト)のアバターを指定できます(manba036オリジナル) - 顔(画面)をタップする毎に同じアバターで別のメッセージを喋ります(manba036オリジナル)
SDカード内の設定ファイルにアバターが喋るメッセージを複数登録できます
アバター毎に喋るメッセージを変えられるようにしました
各メッセージに感情を指定できるようにしました
メッセージの言い出しをランダムで変えるようにしました(プログラムで固定)
時刻に合わせて挨拶(おはよう/こんばんは等)を変えるようにしました(プログラムで固定) - SDカード内の設定ファイルでサーボ用ポートを指定できます(manba036オリジナル)
Port.C(X:G13, Y:G14)からPort.A(X:G33, Y:G32)に変更しています
SDカード内の設定ファイルでサーボ調整値を指定できます - 一定間隔で時刻通知するようにしました(katsuyoshiさん追加機能を移植)
夜間などは時刻通知を抑制できるようにしました(manba036オリジナル)
SDカード内の設定ファイルで「時刻通知の間隔」「時刻通知する時間帯」等を指定できます - 指定の時刻に時刻通知と合わせて指定のメッセージを喋るようにしました(manba036オリジナル)
SDカード内の設定ファイルで「指定の時刻」「指定のメッセージ」を複数登録できます
以下オリジナルのドキュメントです。
M5Core2_SG90_StackChan_VoiceText_Ataru
@mongonta555 さんがスタックチャン M5GoBottom版組み立てキットの頒布を始められたので、それに対応したスタックチャンファームを作ってみました。
こちらを参照してください。
※ 2022/9/24の変更でM5Unifiedに対応しました。 最新環境でビルドができない、動作しないといった場合まずはバージョンを下記に合わせてみてください。
- arduino-esp32(v2.0.5で動作確認しました。)
- Arduino IDE (バージョン 1.8.16で動作確認をしました。)
- M5Unifiedライブラリ(バージョン 0.0.7で動作確認をしました。)
- M5Stack-Avatarライブラリ(バージョン 0.8.1で動作確認をしました。)
※ v0.8.1だと標準のAvatarFaceホワイトが水色になってしまう不具合がありますが動作に支障はありません。 - ServoEasingライブラリ(バージョン 2.4.0で動作確認をしました。)
- ESP32Servoライブラリ(バージョン 0.9.0で動作確認をしました。)
- ESP8266Audioライブラリ(バージョン 1.9.7で動作確認をしました。)
M5Stack Core2の場合、M5Stack-AvatarとHOYA社が提供するVoiceText Web APIサービスを使った音声合成(TTS)を使うことができます。
VoiceText TTSは、kghrlaboさんのesp32_text_to_speechを参考にさせていただきました。
オリジナルはこちら。
esp32_text_to_speech https://github.com/kghrlabo/esp32_text_to_speech
- M5Core2_SG90_StackChan_VoiceText_Ataru.inoの22行目のコメントを外して”USE_VOICE_TEXT”を有効化してください。
- M5Core2_SG90_StackChan_VoiceText_Ataru.inoの31行目付近、SSIDとPASSWORDを設定してください。
- AudioFileSourceVoiceTextStream.cppの30行目付近、YOUR_TSS_API_KEYを設定してください。
APIキーは、ここの「無料利用登録」から申請すれば、メールで送られて来ます。
- VoiceTextを有効にしていない場合:M5Stack Core2のボタンA,B,Cを押すと、それぞれ異なった顔を表示します。
- VoiceTextを有効にしている場合:M5Stack Core2のボタンA,B,Cを押すと、それぞれ異なった顔と声でしゃべります。
音声データをダウンロード中は顔にハートマークが表示されます。
TTSのパラメータの詳細はこちらを参照してください。
[VoiceText Web API API マニュアル]