Ich möchte die Frequenz einer Audiodatei ändern. Das heißt: Die gesamte Datei sollte eine Oktave höher oder niedriger klingen (sagen wir). Wie es geht? Die Verwendung eines ffmpeg
anderen Open Source-Befehlszeilentools wäre vorzuziehen.
quelle
Ich möchte die Frequenz einer Audiodatei ändern. Das heißt: Die gesamte Datei sollte eine Oktave höher oder niedriger klingen (sagen wir). Wie es geht? Die Verwendung eines ffmpeg
anderen Open Source-Befehlszeilentools wäre vorzuziehen.
Mit ffmpeg:
ffmpeg -i <input> -af asetrate=44100*0.5,aresample=44100 <output>
Hier ist 0,5 der Tonhöhenfaktor. Oder sehen Sie sich die andere Antwort für weitere Details an.
Wenn Sie eine grafische Benutzeroberfläche benötigen, verwenden Sie Audacity , ein kostenloses Open Source-Tool zur plattformübergreifenden Audiobearbeitung.
Features: Ändern Sie die Tonhöhe, ohne das Tempo zu ändern, oder umgekehrt.
Versuchen Sie alternativ Sox . So ähnlich:
sox <infile> <outfile> pitch <shift>
Dabei wird die Tonhöhenverschiebung als positiver oder negativer 'Cent' angegeben (dh 100stel eines Halbtons). Eine Oktave hat 12 Halbtöne, das würde also ± 1200
als Parameter bedeuten .
ffmpeg -i man.wav -af asetrate=48000*0.75,aresample=48000 man_pitch_down.wav
sehe ich durchffmpeg -i
Original-WAVDuration: 00:00:01.95, bitrate: 3080 kb/s
und modifizierte WAVDuration: 00:00:02.60, bitrate: 1536 kb/s
. Soweit ich weiß,Duration
ist die Länge in Sekunden.Finden Sie die Audio-Eingangsrate vorher wie folgt:
Unter der Annahme einer Eingangsaudiorate von 44.100 Hz führt dieser Befehl folgende Aufgabe aus:
Der Faktor 3/4 ändert die meisten weiblichen und "dünnen" (Chipmunk) Stimmen in männliche und "fette" Stimmen. Verwenden Sie 4/3 für das Gegenteil:
Beachten Sie die umgekehrte Filterreihenfolge, um eine Signalverschlechterung zu verhindern. Wann immer möglich, sollte ein verlustfreier Betrieb vor einem verlustbehafteten Betrieb erfolgen. Ich bin mir nicht 100% sicher, ob ich hier keinen Fehler mache, weil ich FFmpeg-Filter falsch verstanden habe.
Der FFmpeg-Filter
asetrate
sollte eine Variableir
haben, die analog zuiw
×ih
in einigen Videofiltern nach der Eingangsaudiorate benannt ist , aber ich konnte in der Dokumentation keine Erwähnung finden.Für Faktoren größer als 2 (z. B. 4/1 oder 1/4) müssen Sie mehrere
atempo
Filter verwenden (1/4 = 1/2 * 1/2 oder 4/1 = 2/1 * 2/1):Ich weiß nicht, wie ich eine "dünne" Männerstimme und eine "fette" Frauenstimme bekommen soll.
Stattdessen
-af
können Sie schreiben-filter:audio
oder-filter:a
.Verweise
quelle