Add a broadcaster function to copy filles

This commit is contained in:
2024-12-16 16:51:24 +01:00
parent 83330e63a7
commit a20d4bf6b9
7 changed files with 85 additions and 22 deletions

View File

@@ -90,8 +90,6 @@ def broadcaster_config():
print("\n".join(ret))
if __name__ == "__main__":
broadcaster_config()

View File

@@ -0,0 +1,7 @@
import shutil
import os
BROADCASTER_DEFAULT_DIR = '/media/pstruebi/2C93-FED6'
def copy_to_broadcaster(filepath, broadcaster_dir = BROADCASTER_DEFAULT_DIR):
filename = os.path.basename(filepath)
shutil.copy(filepath, f'{broadcaster_dir}/{filename}')

View File

@@ -9,15 +9,3 @@ def broadcaster_play_file(broadcast_ch, file):
ret = write_to_serial_read_respone(serial_port, f"nac file select_play_once {file} {broadcast_ch} 0 0", timeout=0.1)
print("\n".join(ret))
if __name__ == "__main__":
broadcast_ch = 0
file = "left24kHz_48kbps.lc3"
broadcaster_play_file(broadcast_ch, file)
time.sleep(1)
broadcast_ch = 1
file = "right-channel_24kHz_left_48kbps_10ms.lc3"
broadcaster_play_file(broadcast_ch, file)

View File

@@ -13,9 +13,15 @@ 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
import shutil
ANNOUNCEMENT_DIR = os.path.join(os.path.dirname(__file__), 'announcements')
os.makedirs(ANNOUNCEMENT_DIR, exist_ok=True)
def synthesize_resample_encode(text, tts_model, output_file):
@@ -25,16 +31,37 @@ def synthesize_resample_encode(text, tts_model, output_file):
def announcement_from_german_text(text_de):
synthesize_resample_encode(text_de, 'de_DE-kerstin-low', f'{ANNOUNCEMENT_DIR}/announcement_de.wav')
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",
}
synthesize_resample_encode(text_de, 'de_DE-kerstin-low', f'{files['de']}.wav')
text_en = llm_translator.translator_de_en(text_de)
synthesize_resample_encode(text_en, 'en_US-lessac-medium', f'{ANNOUNCEMENT_DIR}/announcement_en.wav')
synthesize_resample_encode(text_en, 'en_US-lessac-medium', f'{files['en']}.wav')
text_fr = llm_translator.translator_de_fr(text_de)
synthesize_resample_encode(text_fr, 'fr_FR-siwis-medium', f'{ANNOUNCEMENT_DIR}/announcement_fr.wav')
synthesize_resample_encode(text_fr, 'fr_FR-siwis-medium', f'{files['fr']}.wav')
text_fr = llm_translator.translator_de_es(text_de)
synthesize_resample_encode(text_fr, 'es_ES-sharvard-medium', f'{ANNOUNCEMENT_DIR}/announcement_fr.wav')
text_es = llm_translator.translator_de_es(text_de)
synthesize_resample_encode(text_es, 'es_ES-sharvard-medium', f'{files['es']}.wav')
# Transfer the files to broadcaster memory
start = time.time()
for val in files.values():
copy_to_broadcaster(f'{ANNOUNCEMENT_DIR}/{val}.lc3')
log.info("Transfering files to broadcaster took %s s", round(time.time() - start, 3))
# Instruct the broadcaster to stream the files
for val in files.values():
time.sleep(1)
broadcaster_play_file(f'{val}.lc3')
log.info("Starting all broadcasts %s s", round(time.time() - start, 3))
# questions = [
# {
@@ -59,5 +86,7 @@ if __name__ == '__main__':
log.basicConfig(level=log.INFO)
start= time.time()
broadcaster_config()
announcement_from_german_text(test_content.TESTSENTENCE_DE_RAINBOW)
print("Generating the announcement took", time.time() - start)
print("Generating and starting the announcement took", time.time() - start)

8
tests/conftest.py Normal file
View File

@@ -0,0 +1,8 @@
import logging as log
# Set the logging level to DEBUG (most verbose) at the root logger
log.basicConfig(
level=log.INFO,
format='%(asctime)s [%(levelname)s] %(message)s',
datefmt='%Y-%m-%d %H:%M:%S'
)

View File

@@ -1,10 +1,23 @@
import logging as log
import time
import os
from multilang_translator.backend_controller.broadcaster_config import broadcaster_config
from multilang_translator.backend_controller.broadcaster_play_once import broadcaster_play_file
from multilang_translator.backend_controller.broadcaster_copy_files import copy_to_broadcaster
def test_copy_to_broadcaster():
log.info("Current working directory is: " + os.getcwd())
start = time.time()
copy_to_broadcaster('./tests/announcement_de.lc3')
log.info(f"Copy to broadcaster took {time.time() - start} seconds")
def test_config_broadcaster():
broadcaster_config()
broadcaster_play_file(0, 'announcement_de.wav')
broadcaster_play_file(0, 'announcement_de.lc3')
def test_play_file():
broadcaster_play_file(0, 'announcement_de.wav')
broadcaster_play_file(0, 'announcement_de.lc3')

20
tests/test_translator.py Normal file
View File

@@ -0,0 +1,20 @@
from multilang_translator.translator.llm_translator import translator_de_en
from multilang_translator.translator.llm_translator import translator_de_fr
import time
import logging as log
def test_translator():
TESTSENTENCE_DE_BROKER = 'Ein Broker (oder Makler) ist eine Person oder ein Unternehmen, das sich zwischen dem Kauf- und Verkaufsberechtigten einer Wirtschaftsgüter (z.B. Aktien, Optionen, Derivate, Währungen, Rohstoffe usw.) stellt und als Vermittler fungiert. Sein Hauptziel ist es, Transaktionen zu erleichtern und Geld für sich selbst zu verdienen.'
start=time.time()
response = translator_de_en(TESTSENTENCE_DE_BROKER)
log.info("First query took %s", time.time() - start)
log.info(response)
assert 'A broker (or agent) is a person or company' in response
start=time.time()
response = translator_de_fr(TESTSENTENCE_DE_BROKER)
log.info("Second query took %s", time.time() - start)
log.info(response)