Używam SoX do przycinania zestawu plików wav do 16-kHz, 16-bitowych, mono-kanałów plików WAV (które będą podzbiory jednego z początkowych plików WAV). Większość źródłowych plików wav jest już ustawiona na tę specyfikację, jednak właśnie odkryłem, że niektóre z nich mają różne częstotliwości próbkowania. Ponieważ będzie zautomatyzowana w Javie za pomocą ProcessBuilder, pomyślałem mogłem użyć następującego polecenia:Zmniejszanie/usuwanie obcinania w SoX podczas konwersji częstotliwości próbkowania
sox <source_wav> -b 16 <dest_wav> channels 1 rate 16000 trim <startTime> =<endTime>
i będzie to zmienić tylko częstotliwość próbkowania, jeśli nie jest 16000 Hz. Robi to co to miało na pliki o tej samej specyfikacji, ale na plikach o różnych częstotliwościach próbkowania, uzyskać:
sox WARN rate: rate clipped 48 samples; decrease volume?
sox WARN dither: dither clipped 44 samples; decrease volume?
Jak mam sobie z tym poradzić bez pogorszenia jakości dźwięku? Zauważ, że nie wiem nic o przetwarzaniu sygnału.
Ponownie przeczytałem dokumentację i stwierdziłem, że przegapiłem opcję '-G', która automatycznie ustala wzmocnienie. Nie chcę ustawiać arbitralnej liczby, więc zdecydowałem się użyć opcji '-G'. Jeśli dodasz do swojej odpowiedzi opcję ochrony, chętnie Ci ją dam, ponieważ jest to dość pouczające. – cesar
Można również użyć opcji "--norm", aby zapobiec przycinaniu, a jeśli dźwięk jest zbyt cichy, zwiększ ją, aby była to maksymalna głośność bez przycinania. – drojf