Lokalna generacja muzyki przez AI usuwa miarę z kreatywności. Narzędzia takie jak ACE-Step 1.5 mogą działać całkowicie na komputerze Mac, zamieniając prompty tekstowe w pełne utwory w kilka minut, bez kredytów w chmurze i bez kolejek przesyłania danych. Ta wolność rodzi nowy problem: nadmiar. Gdy generowanie jest tanie i natychmiastowe, przestajesz pytać, czy możesz stworzyć piosenkę, a zaczynasz się zastanawiać, która z pięćdziesięciu wersji na Twoim dysku jest warta zachowania.

Nauczyłem się tego na własnej skórze. W przeciętnym dniu potrzebuję około czterech podejść z ACE-Step 1.5, aby znaleźć jedno wartościowe. Ale średnie kłamią. Podczas jednej z ostatnich sesji wygenerowałem trzydzieści dwa podejścia, goniąc za jedną aranżacją. Słuchanie trzydziestu dwóch dwuminutowych utworów to ponad godzina krytycznego odsłuchu. Przy siódmym utworze moje uszy zaczęły wybaczać rozmazane samogłoski. Przy piętnastym potakiwałem głową do melodii, całkowicie pomijając brakujące słowa. Zmęczenie słuchacza to nie lenistwo; to realny spadek dokładności percepcji. Potrzebowałem filtra, który mógłby działać zanim zaczną moje uszy.

Dlatego zbudowałem lokalny potok QA wokół mlx-whisper, zoptymalizowanego pod Apple Silicon portu modelu rozpoznawania mowy od OpenAI. Pomysł był prosty: gdybym mógł automatycznie transkrybować każde podejście i porównywać je z oryginalnym tekstem, uzyskałbym obiektywny wskaźnik dopasowania tekstu. Ta liczba pozwoliłaby mi uszeregować trzydzieści dwa podejścia i ograniczyć je do kilku zarządzalnych próbek.

Jak działa potok

Proces składa się z czterech etapów i każdy z nich traktuję jako nienegocjowalny.

Generowanie. Tworzę surowe audio za pomocą ACE-Step 1.5. Na tym etapie niczego nie oceniam. Celem jest ilość.

Transkrypcja. Każdy plik WAV trafia do mlx-whisper na moim Macu. Ponieważ MLX jest zbudowany pod Apple Metal i silnik neuronowy, proces ten przebiega całkowicie lokalnie. Nie ma kosztów API, opóźnień sieciowych ani obaw o prywatność związane z wysyłaniem surowego audio na zdalny serwer. Batch trzydziestu dwóch plików transkrybuje się, podczas gdy ja robię kawę.

Punktacja. Porównuję transkrypcję Whisper z oryginalnym promptem tekstowym. Wskaźnik dopasowania mierzy wierność: czy wokalista wypowiedział każde słowo, czy może pominął linie, zlał frazy lub „halucynował” sylaby? Obliczam procentowy stopień pokrycia. To nie jest ocena estetyczna; to ścisłe rozliczenie dokładności tekstowej.

Filtrowanie. Sortuję podejścia według wskaźnika dopasowania. Najwyższy kwintyl staje się moją pulą odsłuchową. Reszta trafia do folderu pomocniczego. Nie usunąłem jeszcze tych z niską punktacją, ale nie marnuję na nie cennego czasu na słuchanie.

Zachowaj niezależność jury

Trzymam się jednej twardej zasady: model generujący nigdy nie ocenia własnej pracy. ACE-Step 1.5 nie ocenia wyników ACE-Step 1.5. Do transkrypcji używam całkowicie oddzielnego procesu, ponieważ model, który sam siebie sprawdza, zawsze będzie zbyt łaskawy. Ma te same martwe punkty. Jeśli generator ma tendencję do pomijania końcówek liczby mnogiej lub zmiękczania spółgłosek, pętla autoweryfikacji nauczy się ignorować te same niedociągnięcia. Niezależny model rozpoznawania mowy nie ma lojalności wobec muzyki. Po prostu raportuje to, co słyszy, bez względu na to, jak surowy będzie ten raport.

Co pokazały liczby

W partii trzydziestu dwóch podejść potok zawęził wybór do ośmiu kandydatów wartych poważnej uwagi. Te osiem podejść osiągnęło średni wskaźnik dopasowania tekstu na poziomie 83,9%. Po właściwym odsłuchaniu i ocenieniu ich według mojej własnej rubryki jakości, uzyskały średnią 94,1 na 100 punktów. Ten rozrzut mówi wszystko. Maszynowa bramka wyłapała oczywiste błędy strukturalne – pominięcia tekstu, problemy z rytmem, artefakty wokalne – dzięki czemu moja ludzka ocena mogła operować na wstępnie oczyszczonym zestawie. Automatyzacja nie zastąpiła mojego osądu. Ona go oszczędziła.

Gdy maszyna zawodzi

Niska punktacja nie zawsze oznacza złą piosenkę. Zauważyłem to wcześnie, gdy utwór, który bardzo mi się podobał, uzyskał wynik znacznie poniżej progu. Tekst był prostym wyliczaniem alfabetu: pojedyncze litery śpiewane jako odizolowane dźwięki. Whisper jest trenowany na naturalnej strukturze zdań. Jeśli podasz mu „A B C D”, często halucynuje słowa, wstawia przedimki lub zamienia litery w bełkotliwe fonemy. Transkrypcja zawiodła, ale wykonanie wokalne było w rzeczywistości bardzo wyraźne.

Ten przypadek nauczył mnie praktycznej granicy. Wskaźnik dopasowania to filtr wstępny, a nie ostateczny werdykt. Każde podejście z niską punktacją wciąż przechodzi dziesięciosekundowy ludzki odsłuch, zanim je odrzucę. Liczba wskazuje kierunek prawdopodobieństwa, a nie pewności. Jeśli potraktujesz wynik jak młotek sędziowski, a nie jak kompas, wyrzucisz dobrą muzykę.

Techniczna przeszkoda

Jeśli uruchamiasz MLX na Apple Silicon, sprawdź architekturę swojego Pythona przed przetwarzaniem dużych partii danych. Częstym błędem w konfiguracji jest uruchamianie binarnego pliku Python przez emulację Rosetta. Skrypt nadal będzie działał, ale stracisz akcelerację sprzętową, która sprawia, że lokalna transkrypcja jest znośna.

Uruchom to w swoim terminalu:

python3 -c "import platform; print(platform.machine())"

Powinieneś zobaczyć arm64. Jeśli wyświetli się x86_64, Twoje środowisko jest emulowane. Przełącz się na natywną wersję Pythona lub natywne środowisko conda, a następnie ponownie zainstaluj mlx-whisper. Przy długich partiach danych różnica między wykonaniem emulowanym a natywnym to różnica między zakończeniem pracy przed lunchem a zakończeniem jej przed kolacją.

Prawdziwa wartość

Generatywne audio nagradza wytrwałość, ale ludzka uwaga jest ograniczona. Nie ma żadnej chwały w słuchaniu trzydziestu dwóch przeciętnych dubli tylko po to, by udowodnić swoją skrupulatność. Umieszczając mlx-whisper między generatorem a moimi uszami, odzyskałem godziny skoncentrowanego czasu twórczego. To ja wciąż decyduję, który utwór przetrwa, a który zginie. Maszyna po prostu dba o to, abym stosował ten osąd wobec najlepszych możliwych kandydatów.

Pełny opis tego potoku (pipeline) jest dostępny tutaj. Jeśli budujesz podobne lokalne narzędzia QA, społeczność GyaanSetu jest dobrym miejscem do wymiany doświadczeń.