Wie kann ich die Audiofrequenz ändern?

12419
tanon

Ich möchte die Frequenz einer Audiodatei ändern. Bedeutung: Die gesamte Datei sollte eine Oktave höher oder tiefer klingen. Wie es geht? Die Verwendung eines ffmpeganderen Befehlszeilen-Open-Source-Tools wäre vorzuziehen.

8

2 Antworten auf die Frage

9
slhck

Wenn Sie eine grafische Benutzeroberfläche benötigen, verwenden Sie Audacity, ein kostenloses, quellübergreifendes Open-Source-Audiobearbeitungsprogramm.

Features: Ändern Sie die Tonhöhe, ohne das Tempo zu ändern, oder umgekehrt.

Wenn Sie die Befehlszeile verwenden möchten, versuchen Sie es mit sox :

SoX ist ein plattformübergreifendes Befehlszeilenprogramm (Windows, Linux, MacOS X usw.), mit dem verschiedene Formate von Computer-Audiodateien in andere Formate konvertiert werden können. Es kann auch verschiedene Effekte auf diese Sounddateien anwenden, und als zusätzlicher Bonus kann SoX Audiodateien auf den meisten Plattformen abspielen und aufnehmen.

Sowas in der Art:

sox <infile> <outfile> pitch <shift> 

Dabei wird die Tonhöhenverschiebung als positive oder negative "Cents" (dh 100stel eines Halbtons) angegeben. Es gibt 12 Halbtöne in einer Oktave, das heißt ± 1200als Parameter.

super ... sox ist genau das, was ich brauche! tanon vor 12 Jahren 0
4
7vujy0f0hy

Finden Sie die eingegebene Audio-Rate vorher:

ffmpeg -i input.mp4 

Angenommen, die Audio-Eingangsrate beträgt 44.100 Hz. Dieser Befehl erledigt die Aufgabe:

ffmpeg -i input.mp4 -af asetrate=44100*3/4,atempo=4/3 output.mp4 

Der Faktor 3/4 wird die meisten weiblichen und „mageren“ (Chipmunk-) Stimmen in männliche und „fette“ Stimmen umwandeln. Verwenden Sie 4/3 für das Gegenteil:

ffmpeg -i input.mp4 -af atempo=3/4,asetrate=44100*4/3 output.mp4 

Beachten Sie die umgekehrte Filterreihenfolge, um eine Signalverschlechterung zu verhindern. Der verlustfreie Betrieb sollte möglichst vor dem verlustbehafteten Betrieb erfolgen. Ich bin nicht zu 100% sicher, ob ich hier nicht falsch verstehe, weil ich FFmpeg-Filter falsch verstanden habe.

Der FFmpeg-Filter asetratesollte eine Variable irfür die Eingangs-Audio-Rate haben, analog zu iw× ihin einigen Videofiltern. In der Dokumentation wurde jedoch nichts davon erwähnt.

Für Faktoren größer als 2 (z. B. 4/1 oder 1/4) müssen Sie mehrere atempoFilter verwenden (1/4 = 1/2 * 1/2 oder 4/1 = 2/1 * 2/1):

ffmpeg -i input.mp4 -af asetrate=44100*4,atempo=1/2,atempo=1/2 output.mp4 

Ich weiß nicht, wie man „dünne“ Männerstimmen und „fette“ Frauenstimmen erhält.

Anstelle von -afkönnen Sie schreiben -filter:audiooder -filter:a.

Verweise