Làm thế nào để thay đổi tần số âm thanh?


12

Tôi muốn thay đổi tần số của một tập tin âm thanh. Ý nghĩa: toàn bộ tập tin sẽ phát ra âm thanh (nói) một quãng tám cao hơn hoặc thấp hơn. Làm thế nào để làm nó? Sử dụng ffmpeghoặc công cụ nguồn mở dòng lệnh khác sẽ thích hợp hơn.

Câu trả lời:


13

Với ffmpeg:

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

Ở đây, 0,5 là hệ số sân. Hoặc xem câu trả lời khác để biết thêm chi tiết.


Nếu bạn cần GUI, hãy sử dụng Audacity , đây là công cụ chỉnh sửa âm thanh đa nền tảng, miễn phí.

Các tính năng: Thay đổi cao độ mà không thay đổi nhịp độ, hoặc ngược lại.


Để thay thế, hãy thử sox . Một cái gì đó như thế:

sox <infile> <outfile> pitch <shift>

trong đó cung cấp cho sự thay đổi cao độ là dương hoặc âm 'xu' (tức là 100 phần trăm của một nửa cung). Có 12 semitones cho một quãng tám, vì vậy điều đó có nghĩa là ± 1200như một tham số.


tuyệt vời ... sox chỉ là những gì tôi cần!
tanon

Phương pháp sử dụng ffmpeg có thay đổi thời lượng của âm thanh không?
mrgloom

@mrgloom Không, không nên.
slhck

Sau khi sử dụng ffmpeg -i man.wav -af asetrate=48000*0.75,aresample=48000 man_pitch_down.wavtôi thấy bởi ffmpeg -iwav ban đầu Duration: 00:00:01.95, bitrate: 3080 kb/svà wav sửa đổi Duration: 00:00:02.60, bitrate: 1536 kb/s. Theo tôi hiểu Durationlà chiều dài tính bằng giây.
mrgloom

@mrgloom Vui lòng gửi câu hỏi mới và bao gồm đầu ra dòng lệnh đầy đủ.
slhck

8

Tìm tốc độ âm thanh đầu vào trước đó:

ffmpeg -i input.mp4

Giả sử tốc độ âm thanh đầu vào 44.100 Hz, lệnh này sẽ thực hiện công việc:

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

Yếu tố 3/4 sẽ thay đổi hầu hết giọng nữ và người gầy gò (chipmunk) thành giọng nam và mập mập. Sử dụng 4/3 cho ngược lại:

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

Lưu ý đảo ngược thứ tự bộ lọc để ngăn chặn sự suy giảm tín hiệu. Bất cứ khi nào có thể, hoạt động lossless nên đến trước khi hoạt động mất mát. Tôi không chắc chắn 100% cho dù tôi không phạm một số sai lầm ở đây do hiểu nhầm các bộ lọc FFmpeg.

Bộ lọc FFmpeg asetratephải có một biến được đặt tên ircho tốc độ âm thanh đầu vào, tương tự như iw× ihtrong một số bộ lọc video, nhưng tôi không thể tìm thấy bất kỳ đề cập nào về nó trong tài liệu.

Đối với các yếu tố lớn hơn 2 (chẳng hạn như 4/1 hoặc 1/4), bạn phải sử dụng nhiều atempobộ lọc (1/4 = 1/2 * 1/2 hoặc 4/1 = 2/1 * 2/1):

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

Tôi không biết làm thế nào để có được giọng nam gầy gò và giọng nữ mập mập.

Thay vì -af, bạn có thể viết -filter:audiohoặc -filter:a.

Người giới thiệu

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.