Bước đầu tiên là xác minh rằng cả tỷ lệ mẫu bắt đầu và tỷ lệ mẫu mục tiêu của bạn đều là số hữu tỷ . Vì chúng là số nguyên nên chúng là số hữu tỉ. Nếu một trong số chúng không phải là một con số hợp lý thì vẫn có thể làm cho tốc độ mẫu thay đổi, nhưng đó là một quá trình khác biệt và khó khăn hơn nhiều.
22∗32∗52∗7227∗5332∗7225∗5
Các bước trước phải được thực hiện cho dù bạn muốn lấy mẫu lại dữ liệu như thế nào. Bây giờ hãy nói về cách làm điều đó với FFT. Mẹo để lấy mẫu lại với FFT là chọn độ dài FFT giúp mọi thứ hoạt động tốt. Điều đó có nghĩa là chọn độ dài FFT là bội số của tỷ lệ số thập phân (441, trong trường hợp này). Vì lợi ích của ví dụ, chúng ta hãy chọn độ dài FFT là 441, mặc dù chúng ta có thể đã chọn 882 hoặc 1323 hoặc bất kỳ bội số dương nào khác của 441.
Để hiểu làm thế nào điều này hoạt động nó giúp hình dung nó. Bạn bắt đầu với một tín hiệu âm thanh trông, trong miền tần số, giống như hình dưới đây.
Khi bạn đã xử lý xong, bạn muốn giảm tốc độ mẫu xuống 16 kHz, nhưng bạn muốn càng ít biến dạng càng tốt. Nói cách khác, bạn chỉ muốn giữ mọi thứ từ hình trên từ -8 kHz đến +8 kHz và bỏ mọi thứ khác. Đó là kết quả trong hình dưới đây.
Xin lưu ý rằng tỷ lệ mẫu không theo tỷ lệ, chúng chỉ ở đó để minh họa các khái niệm.
25∗5
Như bạn có thể nghi ngờ, có một vài vấn đề tiềm ẩn. Tôi sẽ đi qua từng người và giải thích làm thế nào bạn có thể vượt qua chúng.
Bạn sẽ làm gì nếu dữ liệu của bạn không phải là một hệ số thập phân đẹp? Bạn có thể dễ dàng khắc phục điều này bằng cách đệm phần cuối dữ liệu của bạn với các số không đủ để làm cho nó trở thành bội số của hệ số thập phân. Dữ liệu được đệm TRƯỚC KHI nó được FFT'ed.
ll−1số không (xin lưu ý rằng số lượng mẫu dữ liệu và số lượng mẫu đệm phải BÓNG là bội số dương của hệ số thập phân - bạn có thể tăng chiều dài đệm để đáp ứng ràng buộc này), FFT'ing dữ liệu đệm, nhân miền tần số dữ liệu và bộ lọc, sau đó đặt bí danh cho kết quả tần số cao (> 8 kHz) xuống kết quả tần số thấp (<8 kHz) trước khi giảm kết quả tần số cao. Thật không may, vì lọc trong miền tần số là một chủ đề lớn theo cách riêng của mình, tôi sẽ không thể đi sâu vào chi tiết hơn trong câu trả lời này. Tuy nhiên, tôi sẽ nói rằng nếu bạn lọc và đang xử lý dữ liệu trong nhiều phần, bạn sẽ cần thực hiện Overlap-and-Add hoặc Overlap-and-Save để lọc liên tục.
Tôi hi vọng cái này giúp được.
EDIT: Sự khác biệt giữa số lượng mẫu miền tần số bắt đầu và số lượng mẫu miền tần số mục tiêu cần phải đồng đều để bạn có thể loại bỏ cùng số lượng mẫu khỏi mặt tích cực của kết quả làm mặt âm của kết quả. Trong trường hợp ví dụ của chúng tôi, số lượng mẫu bắt đầu là tốc độ giảm dần, hoặc 441, và số lượng mẫu mục tiêu là tốc độ nội suy, hoặc 160. Sự khác biệt là 279, không phải là số chẵn. Giải pháp là tăng gấp đôi chiều dài FFT lên 882, điều này khiến số lượng mẫu mục tiêu cũng tăng gấp đôi lên 320. Bây giờ sự khác biệt là chẵn và bạn có thể bỏ các mẫu miền tần số thích hợp mà không gặp vấn đề gì.