2013-08-06 49 views
7

Tôi đang cố gắng xuất các dấu thời gian bắt đầu của các khoảng thời gian im lặng (vì có tiếng ồn nền, bởi độ im lặng tôi có nghĩa là ngưỡng) trong một tệp âm thanh cụ thể. Cuối cùng, tôi muốn chia nhỏ tệp âm thanh thành các tệp âm thanh nhỏ hơn, được cung cấp các dấu thời gian này. Điều quan trọng là không có phần nào của tệp gốc bị loại bỏ.Phát hiện và in dấu thời gian của các khoảng thời gian tắt bằng cách sử dụng SoX

tôi đã cố gắng

sox in.wav out.wav silence 1 0.5 1% 1 2.0 1% : newfile : restart 

(lịch sự http://digitalcardboard.com/blog/2009/08/25/the-sox-of-silence/)

Mặc dù, nó phần nào đã làm công việc, nó cũng cắt và loại bỏ các giai đoạn của sự im lặng, mà tôi không muốn xảy ra.

Có phải 'im lặng' là tùy chọn phù hợp hoặc có cách đơn giản hơn để thực hiện những gì tôi cần làm không?

Cảm ơn.

+0

Bất kỳ tin tức về chủ đề này? Bạn có thể làm được điều này không? Tôi cần phải làm chính xác như vậy. Hiện tại tôi phát hiện sự im lặng với độ tin cậy và xuất nhãn theo dõi dưới dạng tệp văn bản. – 3244611user

Trả lời

2

Có (hiện tại, ít nhất) không có cách nào để tạo hiệu ứng silence ở vị trí phát hiện âm thanh im lặng hoặc giữ lại tất cả âm thanh im lặng.

Nếu bạn có thể tự biên dịch SoX, bạn có thể tự thêm tuyên bố đầu ra để tìm hiểu về vị trí cắt, sau đó sử dụng trim trong lời gọi riêng biệt để tách tệp. Với phiên bản cổ phiếu, bạn đã hết may mắn.

+0

Hi chirlu, Tôi đã hy vọng điều đó không đúng. Tôi sẽ xem những gì có thể làm. – progfan

0

necroposting: Bạn có thể chạy một tập lệnh riêng biệt lặp lại tất cả các tệp đầu ra sox, (đối với f trong * .wav) và sử dụng lệnh; soxi -D $f để lấy DURATION của clip âm thanh. Sau đó, lấy thời gian hệ thống bằng giây date "+%s", rồi trừ để tìm thời gian bắt đầu ghi.

4

Đáng tiếc là không Sox, nhưng ffmpeg có một bộ lọc silencedetect rằng thực hiện chính xác những gì bạn đang tìm kiếm:

ffmpeg -i in.wav -af silencedetect=noise=-50dB:d=1 -f null - 

(phát hiện ngưỡng -50db, cho tối thiểu là 1 giây, cribbed from the ffmpeg documentation)

... điều này sẽ in một kết quả như thế này:

Press [q] to stop, [?] for help 
[silencedetect @ 0x7ff2ba5168a0] silence_start: 264.718 
[silencedetect @ 0x7ff2ba5168a0] silence_end: 265.744 | silence_duration: 1.02612 
size=N/A time=00:04:29.53 bitrate=N/A 
+0

Có thư viện mới nào trong năm 2017 có thể thực hiện việc này không? tức là có tệp âm thanh, có thể phát hiện và xuất tem thời gian của các giai đoạn nói và khoảng thời gian im lặng. Cảm ơn. –