diff --git a/src/multilang_translator/main_local.py b/src/multilang_translator/main_local.py index 64e9a58..6829ac8 100644 --- a/src/multilang_translator/main_local.py +++ b/src/multilang_translator/main_local.py @@ -20,33 +20,32 @@ def transcribe(): async def announcement_from_german_text( - global_config: auracast_config.AuracastGlobalConfig, - translator_config: List[translator_config.TranslatorConfigDe], + config: translator_config.TranslatorConfigGroup, caster: multicast_control.Multicaster, text_de ): base_lang = "deu" - for i, trans in enumerate(translator_config): - if trans.big.language == base_lang: + for i, big in enumerate(config.bigs): + if big.language == base_lang: text = text_de else: text = llm_translator.translate_de_to_x( text_de, - trans.big.language, - model=trans.translator_llm, - client = trans.llm_client, - host=trans.llm_host_url, - token=trans.llm_host_token + big.language, + model=big.translator_llm, + client = big.llm_client, + host=big.llm_host_url, + token=big.llm_host_token ) log.info('%s', text) lc3_audio = text_to_speech.synthesize( text, - global_config.auracast_sampling_rate_hz, - trans.tts_system, - trans.tts_model, + config.auracast_sampling_rate_hz, + big.tts_system, + big.tts_model, return_lc3=True ) caster.big_conf[i].audio_source = lc3_audio @@ -57,7 +56,7 @@ async def announcement_from_german_text( log.info("Starting all broadcasts took %s s", round(time.time() - start, 3)) -async def command_line_ui(global_conf, translator_conf, caster: multicast_control.Multicaster): +async def command_line_ui(config: translator_config.TranslatorConfigGroup, translator_conf, caster: multicast_control.Multicaster): while True: # make a list of all available testsentence sentence_list = list(asdict(TESTSENTENCE).values()) @@ -79,8 +78,7 @@ async def command_line_ui(global_conf, translator_conf, caster: multicast_contro elif command.strip().isdigit(): ind = int(command.strip()) await announcement_from_german_text( - global_conf, - translator_conf, + config, caster, sentence_list[ind]) await asyncio.wait([caster.streamer.task]) @@ -96,35 +94,41 @@ async def main(): format='%(module)s.py:%(lineno)d %(levelname)s: %(message)s' ) - global_conf = auracast_config.AuracastGlobalConfig() - #global_conf.transport='serial:/dev/serial/by-id/usb-SEGGER_J-Link_001057705357-if02,1000000,rtscts' # transport for nrf54l15dk - global_conf.transport='serial:/dev/serial/by-id/usb-ZEPHYR_Zephyr_HCI_UART_sample_81BD14B8D71B5662-if00,115200,rtscts' #nrf52dongle hci_uart usb cdc - - - translator_conf = [ - translator_config.TranslatorConfigDe(), - translator_config.TranslatorConfigEn(), - translator_config.TranslatorConfigFr(), - #auracast_config.broadcast_es, - #auracast_config.broadcast_it, + config = translator_config.TranslatorConfigGroup( + bigs=[ + translator_config.TranslatorConfigDe(), + translator_config.TranslatorConfigEn(), + translator_config.TranslatorConfigFr(), ] - for conf in translator_conf: - conf.big.loop = False + ) + + #config = auracast_config.AuracastGlobalConfig() + #config.transport='serial:/dev/serial/by-id/usb-SEGGER_J-Link_001057705357-if02,1000000,rtscts' # transport for nrf54l15dk + config.transport='serial:/dev/serial/by-id/usb-ZEPHYR_Zephyr_HCI_UART_sample_81BD14B8D71B5662-if00,115200,rtscts' #nrf52dongle hci_uart usb cdc + + for conf in config.bigs: + conf.loop = False conf.llm_client = 'openwebui' # comment out for local llm conf.llm_host_url = 'https://ollama.pstruebi.xyz' conf.llm_host_token = 'sk-17124cb84df14cc6ab2d9e17d0724d13' - caster = multicast_control.Multicaster(global_conf, [conf.big for conf in translator_conf]) + caster = multicast_control.Multicaster( + config, + [big for big in config.bigs] + ) await caster.init_broadcast() # await announcement_from_german_text( - # global_conf, - # translator_conf, + # config, # caster, # test_content.TESTSENTENCE.DE_HELLO # ) # await asyncio.wait([caster.streamer.task]) - await command_line_ui(global_conf, translator_conf, caster) + await command_line_ui( + config, + [big for big in config.bigs], + caster + ) if __name__ == '__main__': asyncio.run(main()) diff --git a/src/multilang_translator/translator_config.py b/src/multilang_translator/translator_config.py index d164bfc..9a7056f 100644 --- a/src/multilang_translator/translator_config.py +++ b/src/multilang_translator/translator_config.py @@ -1,11 +1,11 @@ import os +from typing import List from pydantic import BaseModel from auracast import auracast_config VENV_DIR = os.path.join(os.path.dirname(__file__), './../../venv') -class TranslatorBaseconfig(BaseModel): - big: auracast_config.AuracastBigConfig = auracast_config.AuracastBigConfigDe() +class TranslatorLangConfig(BaseModel): translator_llm: str = 'llama3.2:3b-instruct-q4_0' llm_client: str = 'ollama' llm_host_url: str | None = 'http://localhost:11434' @@ -14,22 +14,22 @@ class TranslatorBaseconfig(BaseModel): tts_model: str ='de_DE-kerstin-low' -class TranslatorConfigDe(TranslatorBaseconfig): - big: auracast_config.AuracastBigConfig = auracast_config.AuracastBigConfigDe() +class TranslatorConfigDe(TranslatorLangConfig, auracast_config.AuracastBigConfigDe): tts_model: str ='de_DE-thorsten-high' -class TranslatorConfigEn(TranslatorBaseconfig): - big: auracast_config.AuracastBigConfig = auracast_config.AuracastBigConfigEn() +class TranslatorConfigEn(TranslatorLangConfig, auracast_config.AuracastBigConfigEn): tts_model: str = 'en_GB-alba-medium' -class TranslatorConfigFr(TranslatorBaseconfig): - big: auracast_config.AuracastBigConfig = auracast_config.AuracastBigConfigFr() +class TranslatorConfigFr(TranslatorLangConfig, auracast_config.AuracastBigConfigFr): tts_model: str = 'fr_FR-siwis-medium' -class TranslatorConfigEs(TranslatorBaseconfig): - big: auracast_config.AuracastBigConfig = auracast_config.AuracastBigConfigEs() +class TranslatorConfigEs(TranslatorLangConfig, auracast_config.AuracastBigConfigEs): tts_model: str = 'es_ES-sharvard-medium' -class TranslatorConfigIt(TranslatorBaseconfig): - big: auracast_config.AuracastBigConfig = auracast_config.AuracastBigConfigIt() +class TranslatorConfigIt(TranslatorLangConfig, auracast_config.AuracastBigConfigIt): tts_model: str = 'it_IT-paola-medium' + +class TranslatorConfigGroup(auracast_config.AuracastGlobalConfig): + bigs: List[TranslatorLangConfig] = [ + TranslatorConfigDe(), + ]