このサンプルは、Arduino プラットフォーム上で M5ModuleLLM ライブラリを使用して、TTS モデルによる音声合成と再生を行う方法を示します。
Module LLM Arduino クイックスタートを参照し、開発環境のセットアップと M5ModuleLLM ドライバライブラリのインストールを行います。
Module LLM ソフトウェアパッケージ更新ガイドを参照し、以下のモデルパッケージとソフトウェアパッケージをインストールします。
apt install llm-melotts
apt install llm-model-melotts-en-default
/*
* SPDX-FileCopyrightText: 2024 M5Stack Technology CO LTD
*
* SPDX-License-Identifier: MIT
*/
#include <Arduino.h>
#include <M5Unified.h>
#include <M5ModuleLLM.h>
#define CommSerialPort Serial
M5ModuleLLM module_llm;
String tts_work_id;
String language;
String received_question;
bool Input_completed;
void setup()
{
M5.begin();
M5.Display.setTextSize(2);
M5.Display.setTextScroll(true);
/* Init usb serial */
CommSerialPort.begin(115200);
language = "en_US";
/* Init module serial port */
int rxd = M5.getPin(m5::pin_name_t::port_c_rxd);
int txd = M5.getPin(m5::pin_name_t::port_c_txd);
Serial2.begin(115200, SERIAL_8N1, rxd, txd);
/* Init module */
module_llm.begin(&Serial2);
/* Make sure module is connected */
M5.Display.printf(">> Check ModuleLLM connection..\n");
while (1) {
if (module_llm.checkConnection()) {
break;
}
}
/* Reset ModuleLLM */
M5.Display.printf(">> Reset ModuleLLM..\n");
module_llm.sys.reset();
/* Setup TTS module and save returned work id */
M5.Display.printf(">> Initialize TTS..\n\n");
m5_module_llm::ApiMelottsSetupConfig_t melotts_config;
melotts_config.model = "melotts-en-default";
tts_work_id = module_llm.melotts.setup(melotts_config, "tts_setup", language);
M5.Display.printf(">> Initialization completed..\n\n");
}
void loop()
{
Input_completed = false;
if (CommSerialPort.available()) {
while (CommSerialPort.available()) {
char in_char = (char)CommSerialPort.read();
received_question += in_char;
if (received_question.endsWith("\r\n")) {
received_question.remove(received_question.length() - 2);
Input_completed = true;
break;
}
}
}
if (Input_completed) {
/* Push text to TTS module and wait inference result */
M5.Display.setTextColor(TFT_GREEN);
M5.Display.printf("<< %s\n", received_question.c_str());
M5.Display.setTextColor(TFT_YELLOW);
M5.Display.printf(">> ");
CommSerialPort.printf("<< \"%s\"\n", received_question.c_str());
CommSerialPort.print(">> ");
module_llm.tts.inference(tts_work_id, received_question.c_str(), 10000);
/* Clear for next question */
received_question.clear();
M5.Display.println();
CommSerialPort.println();
}
delay(20);
}
TTS で複数の言語をサポートするには、対応するモデルパッケージをインストールします。以下は一般的な TTS モデルで、インストール後にコード中の設定を変更することで言語の切り替えが可能です。
apt install llm-model-melotts-zh-cn
language = "zh_CN";
melotts_config.model = "model-melotts-zh-cn";
apt install llm-model-melotts-en-default
language = "en_US";
melotts_config.model = "melotts-en-default";
apt install llm-model-melotts-ja-jp
language = "ja_JP";
melotts_config.model = "model-melotts-ja-jp";