File size: 3,789 Bytes
89fe4dd
 
11c861a
89fe4dd
11c861a
 
89fe4dd
0aeb96c
 
 
 
89fe4dd
0aeb96c
 
 
 
89fe4dd
505c214
 
 
89fe4dd
505c214
11c861a
 
 
 
 
505c214
 
11c861a
505c214
11c861a
505c214
11c861a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0aeb96c
 
 
11c861a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0aeb96c
 
 
11c861a
 
 
 
 
 
 
 
 
9dfe1e3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import streamlit as st
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
from datasets import load_dataset

# Załaduj dataset z Hugging Face
dataset = load_dataset("clui/lyricsgenius")

# Wybór modelu do tłumaczenia z włoskiego na angielski
model_name_it_en = "Helsinki-NLP/opus-mt-it-en"
tokenizer_it_en = AutoTokenizer.from_pretrained(model_name_it_en)
model_it_en = AutoModelForSeq2SeqLM.from_pretrained(model_name_it_en)

# Wybór modelu do tłumaczenia z angielskiego na polski
model_name_en_pl = "sdadas/mt5-base-translator-en-pl"
tokenizer_en_pl = AutoTokenizer.from_pretrained(model_name_en_pl)
model_en_pl = AutoModelForSeq2SeqLM.from_pretrained(model_name_en_pl)

# Pole do wprowadzania nazwy artysty
st.title("Neural Notes")
artist_name = st.text_input("Wpisz nazwę artysty")

if artist_name:
    # Filtruj dataset po nazwie artysty
    filtered_dataset = dataset.filter(lambda example: artist_name.lower() in example["artist"].lower())

    if len(filtered_dataset["train"]) == 0:
        st.error("Nie znaleziono piosenek dla tego artysty w datasetcie.")
    else:
        # Wyświetl listę piosenek
        song_titles = [song["title"] for song in filtered_dataset["train"]]
        selected_song = st.selectbox("Wybierz piosenkę", ["-- Wybierz --"] + song_titles)

        if selected_song != "-- Wybierz --":
            # Pobierz tekst piosenki
            selected_song_data = next((song for song in filtered_dataset["train"] if song["title"] == selected_song), None)
            if selected_song_data:
                lyrics = selected_song_data["lyrics"]

                # Podział tekstu na linie
                lines = lyrics.split('\n')

                # Wyświetlanie oryginalnego tekstu w trzech kolumnach
                col1, col2, col3 = st.columns([3, 3, 3])

                with col1:
                    st.subheader("Oryginalne linie (włoski):")
                    for line in lines:
                        st.write(line)

                with col2:
                    st.subheader("Przetłumaczone linie (angielski):")

                    # Tłumaczenie z włoskiego na angielski
                    translated_lines_en = []

                    for line in lines:
                        if line.strip():
                            inputs = tokenizer_it_en(line, return_tensors="pt", padding=True)
                            translated_outputs = model_it_en.generate(**inputs)
                            translated_text = tokenizer_it_en.decode(translated_outputs[0], skip_special_tokens=True)
                            translated_lines_en.append(translated_text)
                        else:
                            translated_lines_en.append("")

                    for line in translated_lines_en:
                        st.write(line)

                with col3:
                    st.subheader("Przetłumaczone linie (polski):")

                    # Tłumaczenie z angielskiego na polski
                    translated_lines_pl = []

                    for line in translated_lines_en:
                        if line.strip():
                            inputs = tokenizer_en_pl(line, return_tensors="pt", padding=True)
                            translated_outputs = model_en_pl.generate(**inputs)
                            translated_text = tokenizer_en_pl.decode(translated_outputs[0], skip_special_tokens=True)
                            translated_lines_pl.append(translated_text)
                        else:
                            translated_lines_pl.append("")

                    for line in translated_lines_pl:
                        st.write(line)
            else:
                st.error("Nie znaleziono tekstu piosenki.")
else:
    st.info("Proszę wprowadź nazwę artysty.")