import gradio as gr
from pathlib import Path
from src.utils import get_base64_image
def get_files(dir_name):
path = Path(__file__).resolve().parents[2] / 'examples' / dir_name
files = sorted(path.glob("*.wav"))
return files
ORIGINAL = get_files('original')
GENERATED = get_files('generated')
def results_tab():
with gr.Tab("📊 Wyniki"):
with gr.Column(elem_classes="results-tab"):
gr.HTML('
🎵 Przykłady dubbingu
')
gr.HTML("""
Poniżej przedstawiamy efekty naszego rozwiązania — przykładowe pary nagrań oryginalnych i wygenerowanych. Wśród nich znajdują się zarówno nagrania pojedyńczych wypowiedzi, jak i rozbudowane dialogi z muzyką w tle. Poszczególne wypowiedzi można odsłuchać, klikając na przycisk uruchamiający odtwarzacz audio.
""")
with gr.Row():
gr.HTML('Oryginalne nagranie
')
gr.HTML('Wygenerowany dubbing
')
for file1, file2 in zip(ORIGINAL, GENERATED):
with gr.Row():
with gr.Column():
gr.Audio(file1, label='Oryginał', type="filepath")
with gr.Column():
gr.Audio(file2, label='Wygenerowany', type="filepath")
gr.HTML('
')
# WPŁYW KONTEKSTU NA TŁUMACZENIE
gr.HTML('🈲 Przykłady wpływu kontekstu na tłumaczenie
')
gr.HTML("""
Poniżej prezentujemy przykłady tłumaczeń wykonanych bez kontekstu oraz z uwzględnieniem kontekstu wypowiedzi. Zestawienie to ma na celu zilustrowanie, jak istotny wpływ na jakość i poprawność tłumaczenia może mieć kontekst w postaci wypowiedzi poprzedzającej i następującej po tłumaczonym fragmencie. Dzięki temu można zaobserwować różnice w interpretacji znaczenia, doborze słownictwa oraz płynności przekładu w zależności od dostępnych informacji kontekstowych.
""")
gr.HTML("""
Przykład 1
Dialog:
Troll — Ick metal. Mouth stings.
Lambert — You nuts?!
Geralt — Shut up and follow my lead.
Oryginalne: Zwariowałeś?! ⭐
Bez kontekstu: Ty orzeszku?!
❌
Z kontekstem: Czy ty zwariowałeś?! ✅
Przykład 2
Dialog:
Yennefer — Philippa, your eyesight, only just recovered and magically simulated. Didn’t you say you’d need some time to get accustomed?
Philippa Eilhart — Did I?
Yennefer — I’d forgotten how irritating she can be. Come, Ciri.
Oryginalne: Tak mówiłam? ⭐
Bez kontekstu: Czy ja?
❌
Z kontekstem: Czy ja tak powiedziałam? ✅
Przykład 3
Dialog:
Chamberlain Emhyr — Bow before His Imperial Majesty, The White Flame Dancing on the Graves of his Foes, Emhyr var Emreis!
Chamberlain Emhyr — Bow.
Emhyr — I thought you bowed before no man.
Oryginalne: Ukłon. ⭐
Bez kontekstu: Łuk.
❌
Z kontekstem: Ukłon. ✅
Przykład 4
Dialog:
Keira Metz — Find him immediately. We’re close to unraveling this, I can feel it.
Keira Metz — What was that? It sounded for a moment like you’d joined the wraiths yourself...
Geralt — Had to fight a pesta.
Oryginalne: Co to było? Brzmiało, jakbyś postanowił dołączyć do drużyny upiorów... ⭐
Bez kontekstu: Co to było? Brzmiało przez chwilę, jakbyś dołączył do cieni sam
❌
Z kontekstem: Co to było? Na chwilę brzmiało to tak, jakbyś sam dołączył do upiorów... ✅
""")
gr.HTML('
')
# MOS
gr.HTML('📋 Test MOS')
gr.HTML("""
Jednym z najważniejszych wyznaczników jakości mowy syntetycznej jest opinia drugiego człowieka. W tym celu przeprowadziliśmy test MOS (ang.
Mean Opinion Score), który polega na subiektywnej ocenie jakości dźwięku przez słuchaczy. W badaniu wzięło udział 63 uczestników, którzy mieli za zadanie wysłuchać fragmentów nagrań i ocenić je w skali od 1 do 5, gdzie 1 oznaczało bardzo niską jakość, a 5 bardzo wysoką. Sprawdzona została zarówno naturalność wygenerowanego dźwięku (nMOS), jak i jakość transferu cech mowy (sMOS).
W
tabeli przedstawiamy średnie wyniki testów nMOS i sMOS, zarówno dla tłumaczenia z języka angielskiego na polski, jak i odwrotnie. Rezultaty są w obu przypadkach na wysokim poziomie, aczkolwiek nieco gorsze wyniki uzyskano dla syntezy z języka angielskiego na polski. Wynika to głównie ze złożoności fleksyjnej języka polskiego oraz znacznie mniejszego wsparcia modeli dla tego języka. Na
wykresach przedstawiono szczegółowy rozkład ocen dla nMOS i sMOS.
|
EN → PL |
PL → EN |
| nMOS |
4,02 |
4,38 |
| sMOS |
4,08 |
4,51 |
Średnie wyniki testu MOS.
""")
gr.HTML("""
""")
img_nmos = get_base64_image("assets/nmos.png")
img_smos = get_base64_image("assets/smos.png")
imgs_with_labels = f"""
Wyniki testu nMOS.
Wyniki testu sMOS.
"""
gr.HTML(imgs_with_labels)