Download Data/dd.py from FashionFlora/SFlowTTS: direct link, hf CLI and curl.
- Browser
- Download file 4.45 kB
-
https://huggingface.co/FashionFlora/SFlowTTS/resolve/main/Data/dd.py
- Command line
-
hf download hf://FashionFlora/SFlowTTS/Data/dd.py
-
curl -L -o dd.py https://huggingface.co/FashionFlora/SFlowTTS/resolve/main/Data/dd.py
4.45 kB
| import os | |
| from phonemizer import backend | |
| # Konfiguracja plik贸w | |
| INPUT_FILE = 'train_3_filtered_dur.txt' # Plik wej艣ciowy | |
| OUTPUT_FILE = 'train_3_filtered_dur_fixed.txt' # Plik wynikowy | |
| # Zestaw znak贸w, kt贸rych obecno艣膰 w fonemach powoduje usuni臋cie linii | |
| FORBIDDEN_CHARS = {'{', '}', '(', ')'} | |
| def initialize_phonemizers(): | |
| """ | |
| Inicjalizuje s艂ownik backend贸w espeak dla wymaganych j臋zyk贸w. | |
| Zwraca s艂ownik { 'language_id': backend_instance } | |
| """ | |
| phonemizers = {} | |
| print("Inicjalizacja phonemizer贸w (mo偶e to chwil臋 potrwa膰)...") | |
| try: | |
| # ID 0: Polski | |
| phonemizers['0'] = backend.EspeakBackend( | |
| language='pl', | |
| preserve_punctuation=True, | |
| with_stress=True | |
| ) | |
| # ID 1: Angielski Brytyjski | |
| phonemizers['1'] = backend.EspeakBackend( | |
| language='en-gb', | |
| preserve_punctuation=True, | |
| with_stress=True | |
| ) | |
| # ID 2: Hindi | |
| phonemizers['2'] = backend.EspeakBackend( | |
| language='hi', | |
| preserve_punctuation=True, | |
| with_stress=True | |
| ) | |
| print("Phonemizery zainicjalizowane pomy艣lnie.") | |
| return phonemizers | |
| except Exception as e: | |
| print(f"Krytyczny b艂膮d inicjalizacji phonemizer贸w: {e}") | |
| print("Upewnij si臋, 偶e masz zainstalowany 'espeak-ng'.") | |
| return None | |
| def process_dataset(): | |
| # 1. Przygotuj phonemizery | |
| phonemizers = initialize_phonemizers() | |
| if not phonemizers: | |
| return | |
| if not os.path.exists(INPUT_FILE): | |
| print(f"Nie znaleziono pliku: {INPUT_FILE}") | |
| return | |
| print(f"Rozpoczynam przetwarzanie pliku {INPUT_FILE}...") | |
| processed_count = 0 | |
| skipped_count = 0 | |
| with open(INPUT_FILE, 'r', encoding='utf-8') as f_in, \ | |
| open(OUTPUT_FILE, 'w', encoding='utf-8') as f_out: | |
| for line_num, line in enumerate(f_in, 1): | |
| line = line.strip() | |
| if not line: | |
| continue | |
| # 2. Split z limitem 4 | |
| parts = line.split('|', 4) | |
| # Sprawdzenie poprawno艣ci struktury (musi by膰 5 kolumn) | |
| if len(parts) < 5: | |
| print(f"Ostrze偶enie: Linia {line_num} ma nieprawid艂owy format (pomini臋to).") | |
| continue | |
| # Wyci膮gamy potrzebne dane | |
| # parts[1] = phonemes (to podmieniamy i sprawdzamy) | |
| lang_id = parts[3] | |
| raw_text = parts[4] | |
| # Pobieramy odpowiedni phonemizer | |
| current_backend = phonemizers.get(lang_id) | |
| if current_backend: | |
| try: | |
| # Generowanie fonem贸w | |
| phonemes_list = current_backend.phonemize([raw_text], strip=True) | |
| if phonemes_list: | |
| parts[1] = phonemes_list[0] # Aktualizacja fonem贸w | |
| except Exception as e: | |
| print(f"B艂膮d phonemizera w linii {line_num} (ID j臋z: {lang_id}): {e}") | |
| # --- NOWA LOGIKA FILTROWANIA --- | |
| current_phonemes = parts[1] | |
| # Sprawdzamy czy w fonemach wyst臋puje kt贸ry艣 z zakazanych znak贸w | |
| if any(char in current_phonemes for char in FORBIDDEN_CHARS): | |
| skipped_count += 1 | |
| # Opcjonalnie: odkomentuj lini臋 poni偶ej, je艣li chcesz widzie膰, co jest usuwane | |
| # print(f"Pomini臋to lini臋 {line_num}: znaleziono zakazany znak w fonemach: {current_phonemes}") | |
| continue | |
| # 3. Zapis do nowego pliku (tylko je艣li walidacja przesz艂a pomy艣lnie) | |
| processed_count += 1 | |
| new_line = "|".join(parts) | |
| f_out.write(new_line + '\n') | |
| # Logowanie post臋pu co 100 linii | |
| if processed_count > 0 and processed_count % 100 == 0: | |
| print(f"Zapisano {processed_count} poprawnych linii...") | |
| print("-" * 30) | |
| print(f"Zako艅czono!") | |
| print(f"Poprawnie przetworzono i zapisano: {processed_count}") | |
| print(f"Usuni臋to (zawiera艂y '{{', '}}', '(', ')'): {skipped_count}") | |
| print(f"Wynik zapisano w: {OUTPUT_FILE}") | |
| if __name__ == "__main__": | |
| process_dataset() |