Files
auracast-translator/multilang_translator/main.py
2024-12-17 16:20:32 +01:00

102 lines
3.1 KiB
Python

# -*- coding: utf-8 -*-
"""
list prompt example
"""
from __future__ import print_function, unicode_literals
from pprint import pprint
from PyInquirer import prompt, Separator
from examples import custom_style_2
import os
from text_to_speech import text_to_speech, resample
from translator import llm_translator
from backend_controller.broadcaster_config import broadcaster_config
from backend_controller.broadcaster_play_once import broadcaster_play_file
from backend_controller.broadcaster_copy_files import copy_to_broadcaster
from encode import encode_lc3
ANNOUNCEMENT_DIR = os.path.join(os.path.dirname(__file__), 'announcements')
N_MAX_BIS = 5
os.makedirs(ANNOUNCEMENT_DIR, exist_ok=True)
def synthesize_resample_encode(text, tts_model, output_file):
text_to_speech.synthesize(text, tts_model, output_file)
resample.resample(output_file, output_file)
encode_lc3.encode_lc3(output_file)
def announcement_from_german_text(text_de):
files = {
"de": f"{ANNOUNCEMENT_DIR}/announcement_de",
"en": f"{ANNOUNCEMENT_DIR}/announcement_en",
# "fr": f"{ANNOUNCEMENT_DIR}/announcement_fr",
# "es": f"{ANNOUNCEMENT_DIR}/announcement_es",
"it": f"{ANNOUNCEMENT_DIR}/announcement_it",
}
file = files['de']
synthesize_resample_encode(text_de, 'de_DE-kerstin-low', f'{file}.wav')
text_en = llm_translator.translator_de_en(text_de)
file = files['en']
synthesize_resample_encode(text_en, 'en_US-lessac-medium', f'{file}.wav')
# text_fr = llm_translator.translator_de_fr(text_de)
# file = files['fr']
# synthesize_resample_encode(text_fr, 'fr_FR-siwis-medium', f'{file}.wav')
# text_es = llm_translator.translator_de_es(text_de)
# file = files['es']
# synthesize_resample_encode(text_es, 'es_ES-sharvard-medium', f'{file}.wav')
text_it = llm_translator.translator_de_it(text_de)
file = files['it']
synthesize_resample_encode(text_it, 'it_IT-paola-medium', f'{file}.wav')
# Transfer the files to broadcaster memory
start = time.time()
for val in files.values():
copy_to_broadcaster(f'{val}.lc3')
log.info("Transfering files to broadcaster took %s s", round(time.time() - start, 3))
# Instruct the broadcaster to stream the files
for i, val in enumerate(list(files.values())[:N_MAX_BIS]):
time.sleep(1)
broadcaster_play_file(i, f'{os.path.basename(val)}.lc3')
log.info("Starting all broadcasts %s s", round(time.time() - start, 3))
# questions = [
# {
# 'type': 'list',
# 'name': 'theme',
# 'message': 'What type of annoucement would you like to make?',
# 'choices': [
# 'predefined',
# 'custom',
# 'audio'
# ]
# },
# ]
# answers = prompt(questions, style=custom_style_2)
# pprint(answers)
if __name__ == '__main__':
import time
from translator import test_content
import logging as log
log.basicConfig(level=log.INFO)
start= time.time()
#broadcaster_config()
announcement_from_german_text(test_content.TESTSENTENCE_DE_RAINBOW)
print("Generating and starting the announcement took", time.time() - start)