use 16kHz sampling rate

This commit is contained in:
2024-12-18 16:54:49 +01:00
parent bca4b94442
commit daa2d92257
4 changed files with 55 additions and 42 deletions
+5 -3
View File
@@ -1,10 +1,12 @@
import subprocess
import logging as log
def encode_lc3(file):
def encode_lc3(file, frame_dur_ms=10, bps=48000):
file = file.replace('.wav', '')
ret = subprocess.run(['elc3', '-b', '48000', f'{file}.wav', f'{file}.lc3'], check=True)
cmd = ['elc3', '-m', f'{frame_dur_ms}' , '-b', f'{bps}', f'{file}.wav', f'{file}.lc3']
log.info("Executing: %s", " ".join(cmd))
ret = subprocess.run(cmd, check=True)
return ret.returncode, ret.stdout, ret.stderr
+42 -38
View File
@@ -11,63 +11,67 @@ 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 .translator import llm_translator
from .text_to_speech import text_to_speech, resample
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
from .encode import encode_lc3
ANNOUNCEMENT_DIR = os.path.join(os.path.dirname(__file__), 'announcements')
N_MAX_BIS = 5
N_MAX_BIS = 4
SAMPLING_RATE = int(8e3)
FRAME_DUR_MS = 10
BPS = int(16e3)
FILENAMES = {
"de": f"{ANNOUNCEMENT_DIR}/announcement_{SAMPLING_RATE//1000}_{FRAME_DUR_MS}_{BPS//1000}_de",
"en": f"{ANNOUNCEMENT_DIR}/announcement_{SAMPLING_RATE//1000}_{FRAME_DUR_MS}_{BPS//1000}_en",
"fr": f"{ANNOUNCEMENT_DIR}/announcement_{SAMPLING_RATE//1000}_{FRAME_DUR_MS}_{BPS//1000}_fr",
"es": f"{ANNOUNCEMENT_DIR}/announcement_{SAMPLING_RATE//1000}_{FRAME_DUR_MS}_{BPS//1000}_es",
"it": f"{ANNOUNCEMENT_DIR}/announcement_{SAMPLING_RATE//1000}_{FRAME_DUR_MS}_{BPS//1000}_it",
}
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)
resample.resample(output_file, output_file, target_rate=SAMPLING_RATE)
encode_lc3.encode_lc3(output_file, bps=BPS, frame_dur_ms=FRAME_DUR_MS)
def translate_from_german_and_encode(text_de):
file = FILENAMES['de']
synthesize_resample_encode(text_de, 'de_DE-kerstin-low', f'{file}.wav')
text_en = llm_translator.translator_de_en(text_de)
file = FILENAMES['en']
synthesize_resample_encode(text_en, 'en_US-lessac-medium', f'{file}.wav')
text_fr = llm_translator.translator_de_fr(text_de)
file = FILENAMES['fr']
synthesize_resample_encode(text_fr, 'fr_FR-siwis-medium', f'{file}.wav')
text_es = llm_translator.translator_de_es(text_de)
file = FILENAMES['es']
synthesize_resample_encode(text_es, 'es_ES-sharvard-medium', f'{file}.wav')
text_it = llm_translator.translator_de_it(text_de)
file = FILENAMES['it']
synthesize_resample_encode(text_it, 'it_IT-paola-medium', f'{file}.wav')
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')
translate_from_german_and_encode(text_de)
# Transfer the files to broadcaster memory
start = time.time()
for val in files.values():
for val in FILENAMES.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]):
for i, val in enumerate(list(FILENAMES.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))
+8 -1
View File
@@ -1,5 +1,8 @@
from multilang_translator.translator.llm_translator import translator_de_en, translator_de_fr, translator_de_it
from multilang_translator.translator.test_content import TESTSENTENCE_DE_BROKER, TESTSENTENCE_DE_RAINBOW
from multilang_translator.main import translate_from_german_and_encode
import time
import logging as log
@@ -21,4 +24,8 @@ def test_translator():
start=time.time()
response = translator_de_it(TESTSENTENCE_DE_RAINBOW)
log.info("Second query took %s", time.time() - start)
log.info(response)
log.info(response)
def test_translate_from_german_and_encode():
translate_from_german_and_encode(TESTSENTENCE_DE_RAINBOW)