จะเปลี่ยนความถี่เสียงได้อย่างไร?


12

ฉันต้องการเปลี่ยนความถี่ของไฟล์เสียง ความหมาย: ไฟล์ทั้งหมดควรฟัง (พูด) หนึ่งคู่สูงกว่าหรือต่ำกว่า ทำอย่างไร? การใช้ffmpegหรือเครื่องมือโอเพนซอร์สบรรทัดคำสั่งอื่น ๆ จะดีกว่า

คำตอบ:


14

ด้วย ffmpeg:

ffmpeg -i <input> -af asetrate=44100*0.5,aresample=44100 <output>

ที่นี่ 0.5 คือปัจจัยระดับเสียง หรือดูคำตอบอื่น ๆ สำหรับรายละเอียดเพิ่มเติม


หากคุณต้องการ GUI ให้ใช้ความกล้ามันเป็นเครื่องมือแก้ไขเสียงข้ามแพลตฟอร์มฟรี

คุณสมบัติ: เปลี่ยนระดับเสียงโดยไม่ต้องเปลี่ยนจังหวะหรือในทางกลับกัน


เป็นทางเลือกให้ลองsox อะไรแบบนั้น:

sox <infile> <outfile> pitch <shift>

ที่ให้เปลี่ยนระดับเสียงเป็น 'เซนต์' บวกหรือลบ (เช่น 100th ของ semitone) มี 12 semitones ต่ออ็อกเทฟดังนั้นนั่นจะหมายถึง± 1200เป็นพารามิเตอร์


ยอดเยี่ยม ... ทีมคือสิ่งที่ฉันต้องการ!
tanon

วิธีการใช้ ffmpeg เปลี่ยนระยะเวลาของเสียงหรือไม่
mrgloom

@ mrgloom ไม่ไม่ควรทำ
slhck

หลังจากใช้ffmpeg -i man.wav -af asetrate=48000*0.75,aresample=48000 man_pitch_down.wavฉันเห็นด้วยffmpeg -iwav ดั้งเดิมDuration: 00:00:01.95, bitrate: 3080 kb/sและ wav ที่แก้ไขDuration: 00:00:02.60, bitrate: 1536 kb/sแล้ว อย่างที่ฉันเข้าใจDurationคือความยาวเป็นวินาที
mrgloom

@mrgloom โปรดโพสต์คำถามใหม่และรวมเอาท์พุทบรรทัดคำสั่งแบบเต็ม
slhck

9

ค้นหาอัตราเสียงเข้าก่อน:

ffmpeg -i input.mp4

สมมติว่าอัตราอินพุตเสียง 44,100 Hz คำสั่งนี้จะทำงาน:

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

ปัจจัย 3/4 จะเปลี่ยนเสียงผู้หญิงส่วนใหญ่และ“ ผอม” (กระแต) เป็นเสียงชายและ“ อ้วน” ใช้ 4/3 ในทางตรงกันข้าม:

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

สังเกตุเห็นลำดับที่กลับด้านของตัวกรองเพื่อป้องกันการเสื่อมสภาพของสัญญาณ เมื่อใดก็ตามที่เป็นไปได้การดำเนินการแบบไม่สูญเสียควรมาก่อนการดำเนินการแบบสูญเสีย ฉันไม่แน่ใจ 100% ว่าฉันไม่ได้ทำผิดพลาดบางอย่างที่นี่จากตัวกรอง FFmpeg ที่เข้าใจผิด

ตัวกรอง FFmpeg asetrateควรมีตัวแปรที่มีชื่อirสำหรับอัตราเสียงเข้าคล้ายกับiw× ihในตัวกรองวิดีโอบางตัว แต่ฉันไม่สามารถพูดถึงมันได้ในเอกสารประกอบ

สำหรับปัจจัยที่มากกว่า 2 (เช่น 4/1 หรือ 1/4) คุณต้องใช้atempoตัวกรองหลายตัว (1/4 = 1/2 * 1/2 หรือ 4/1 = 2/1 * 2/1):

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

ฉันไม่รู้วิธีที่จะได้รับเสียงชาย "ผอม" และเสียง "อ้วน"

แทนที่จะ-afคุณสามารถเขียนหรือ-filter:audio-filter:a

อ้างอิง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.