Text-to-Speech

This example is for the M5Stack Module LLM. It requires the M5Stack Module LLM to be connected to the M5Stack CoreS3, Core2 or Basic.

Before using, make sure you have the latest software packages installed

Tip

Need help getting started? View the tutorial.

apt install llm-melotts

UIFLOW2 English Example

Before using, make sure you have the latest model packages installed

apt install llm-model-melotts-en-default

Tip

For more information about this model see the details.

Click here to jump to melotts-en-default demo

Example imageExample imageExample imageExample image Example image

Micropython English Example

Before using, make sure you have the latest model packages installed

apt install llm-model-melotts-en-default

Tip

For more information about this model see the details.

import os, sys, io
import M5
from M5 import *
from module import LlmModule
import time



label0 = None
label1 = None
label2 = None
label3 = None
llm_0 = None


adding_number = None
tte_text = None

# Describe this function...
def make_tts_text():
    global adding_number, tte_text, label0, label1, label2, label3, llm_0
    adding_number = adding_number + 1
    tte_text = 'x plus x equals to y.'.replace('x', str(adding_number))
    tte_text = tte_text.replace('y', str((adding_number + adding_number)))
    label3.setText(str(tte_text))
    llm_0.tts_inference(llm_0.get_latest_melotts_work_id(), tte_text, 10000, 'melotts_inference')


def setup():
    global label0, label1, label2, label3, llm_0, adding_number, tte_text

    M5.begin()
    Widgets.fillScreen(0x222222)
    label0 = Widgets.Label("State", 10, 10, 1.0, 0xffffff, 0x222222, Widgets.FONTS.DejaVu18)
    label1 = Widgets.Label("~", 10, 40, 1.0, 0xffffff, 0x222222, Widgets.FONTS.DejaVu18)
    label2 = Widgets.Label("TTS text:", 10, 70, 1.0, 0xffffff, 0x222222, Widgets.FONTS.DejaVu18)
    label3 = Widgets.Label("~", 10, 100, 1.0, 0xffffff, 0x222222, Widgets.FONTS.DejaVu18)

    llm_0 = LlmModule(2, tx=17, rx=18)
    label1.setText(str('Wait ModuleLLM connection..'))
    while not (llm_0.check_connection()):
        time.sleep(1)
    label1.setText(str('Reset ModuleLLM..'))
    llm_0.sys_reset(True)
    label1.setText(str('Setup Audio module..'))
    llm_0.audio_setup(cap_volume=0.5, play_volume=0.15, request_id='audio_setup')
    label1.setText(str('Setup MeloTTS module..'))
    llm_0.melotts_setup(model='melotts-en-default', input='tts.utf-8.stream', enoutput=False, enkws='', request_id='melotts_setup')
    adding_number = 0
    label1.setText(str('OK'))


def loop():
    global label0, label1, label2, label3, llm_0, adding_number, tte_text
    make_tts_text()
    time.sleep(0.5)


if __name__ == '__main__':
    try:
        setup()
        while True:
            loop()
    except (Exception, KeyboardInterrupt) as e:
        try:
            from utility import print_error_msg
            print_error_msg(e)
        except ImportError:
            print("please update to latest firmware")

UIFLOW2 Japanese Example

Before using, make sure you have the latest model packages installed

Tip

For more information about this model see the details.

Click here to jump to melotts-ja-jp demo

apt install llm-model-melotts-ja-jp
Example imageExample imageExample imageExample image

Micropython Japanese Example

Before using, make sure you have the latest model packages installed

Tip

For more information about this model see the details.

apt install llm-model-melotts-ja-jp
import os, sys, io
import M5
from M5 import *
from module import LlmModule
import time



label0 = None
label1 = None
label2 = None
label3 = None
llm_0 = None


adding_number = None
tte_text = None

# Describe this function...
def make_tts_text():
    global adding_number, tte_text, label0, label1, label2, label3, llm_0
    adding_number = adding_number + 1
    tte_text = 'x プラス x は y.'.replace('x', str(adding_number))
    tte_text = tte_text.replace('y', str((adding_number + adding_number)))
    label3.setText(str(tte_text))
    llm_0.melotts_inference(llm_0.get_latest_melotts_work_id(), tte_text, 10000, 'melotts_inference')


def setup():
    global label0, label1, label2, label3, llm_0, adding_number, tte_text

    M5.begin()
    Widgets.fillScreen(0x222222)
    label0 = Widgets.Label("State", 10, 10, 1.0, 0xffffff, 0x222222, Widgets.FONTS.DejaVu18)
    label1 = Widgets.Label("~", 10, 40, 1.0, 0xffffff, 0x222222, Widgets.FONTS.DejaVu18)
    label2 = Widgets.Label("TTS text:", 10, 70, 1.0, 0xffffff, 0x222222, Widgets.FONTS.DejaVu18)
    label3 = Widgets.Label("~", 10, 100, 1.0, 0xffffff, 0x222222, Widgets.FONTS.EFontJA24)

    llm_0 = LlmModule(2, tx=17, rx=18)
    label1.setText(str('Wait ModuleLLM connection..'))
    while not (llm_0.check_connection()):
        time.sleep(1)
    label1.setText(str('Reset ModuleLLM..'))
    llm_0.sys_reset(True)
    label1.setText(str('Setup Audio module..'))
    llm_0.audio_setup(cap_volume=0.5, play_volume=0.15, request_id='audio_setup')
    label1.setText(str('Setup MeloTTS module..'))
    llm_0.melotts_setup(model='melotts-ja-jp', input='tts.utf-8.stream', enoutput=False, enkws='', request_id='melotts_setup')
    adding_number = 0
    label1.setText(str('OK'))


def loop():
    global label0, label1, label2, label3, llm_0, adding_number, tte_text
    make_tts_text()
    time.sleep(0.5)


if __name__ == '__main__':
    try:
        setup()
        while True:
            loop()
    except (Exception, KeyboardInterrupt) as e:
        try:
            from utility import print_error_msg
            print_error_msg(e)
        except ImportError:
            print("please update to latest firmware")