Tôi đang sử dụng SoX để cắt một bộ tệp wav thành 16kHz, 16bit, tệp wav kênh đơn (sẽ là tập hợp con của một trong các tệp wav ban đầu). Hầu hết các tập tin wav nguồn đã được thiết lập để đặc điểm kỹ thuật này, tuy nhiên, tôi chỉ phát hiện ra rằng một số người trong số họ có tỷ lệ mẫu khác nhau. Vì nó sẽ được tự động trong Java bằng cách sử dụng ProcessBuilder, tôi đã tìm tôi có thể sử dụng lệnh sau:Giảm/xóa cắt trong SoX khi chuyển đổi tỷ lệ mẫu
sox <source_wav> -b 16 <dest_wav> channels 1 rate 16000 trim <startTime> =<endTime>
và nó sẽ chỉ thay đổi tỷ lệ mẫu nếu nó không phải là 16000 Hz. Nó hoạt động như thế nào trên các tệp có cùng đặc điểm kỹ thuật, nhưng trên các tệp có tỷ lệ mẫu khác nhau, tôi nhận được:
sox WARN rate: rate clipped 48 samples; decrease volume?
sox WARN dither: dither clipped 44 samples; decrease volume?
Làm cách nào để giải quyết vấn đề này mà không làm giảm chất lượng âm thanh? Lưu ý rằng tôi không biết gì về xử lý tín hiệu.
Tôi đọc lại tài liệu và nhận ra rằng tôi đã bỏ chọn tùy chọn '-G', giúp tự động sửa lỗi. Tôi muốn tránh phải thiết lập một số tùy ý để quyết định sử dụng tùy chọn '-G'. Nếu bạn gắn thêm việc sử dụng tùy chọn bảo vệ cho câu trả lời của bạn, tôi rất vui khi đưa nó cho bạn, vì nó khá là thông tin. – cesar
Bạn cũng có thể sử dụng tùy chọn '--norm' để vừa ngăn vừa cắt và nếu âm thanh quá tĩnh, hãy tăng âm lượng sao cho âm lượng tối đa mà không bị cắt. – drojf