Hướng dẫn how do i use noisereduce in python? - làm cách nào để sử dụng noisereduce trong python?

Hướng dẫn how do i use noisereduce in python? - làm cách nào để sử dụng noisereduce trong python?

Giảm nhiễu trong Python bằng cách sử dụng phương pháp quang phổ

Noisereduce là một thuật toán giảm nhiễu trong Python làm giảm tiếng ồn trong các tín hiệu miền thời gian như lời nói, bioacoustics và tín hiệu sinh lý. Nó dựa vào một phương pháp gọi là "Gating Spectral" là một dạng của cổng nhiễu. Nó hoạt động bằng cách tính toán một phổ của tín hiệu (và tùy ý tín hiệu nhiễu) và ước tính ngưỡng nhiễu (hoặc cổng) cho từng dải tần của tín hiệu/nhiễu đó. Ngưỡng đó được sử dụng để tính toán mặt nạ, nhiễu cổng dưới ngưỡng thay đổi tần số.

Phiên bản gần đây nhất của Noisereduce bao gồm hai thuật toán:

  1. Giảm nhiễu đứng yên: Giữ ngưỡng nhiễu ước tính ở cùng cấp trên toàn bộ tín hiệu: Keeps the estimated noise threshold at the same level across the whole signal
  2. Giảm nhiễu không cố định: Cập nhật liên tục ngưỡng tiếng ồn ước tính theo thời gian: Continuously updates the estimated noise threshold over time

Phiên bản 2 Cập nhật:

  • Đã thêm hai hình thức giảm nhiễu quang phổ: giảm nhiễu cố định và giảm nhiễu không cố định.
  • Đã thêm đa xử lý để bạn có thể thực hiện giảm nhiễu trên dữ liệu lớn hơn.
  • Phiên bản mới phá vỡ API của phiên bản cũ.
  • Phiên bản trước vẫn có sẵn tại from noisereduce.noisereducev1 import reduce_noise
  • Bây giờ bạn có thể tạo một đối tượng Noisereduce cho phép bạn giảm tiếng ồn trên các tập hợp bản ghi dài hơn

Giảm tiếng ồn đứng yên

  • Trực giác cơ bản là số liệu thống kê được tính toán trên mỗi kênh tần số để xác định cổng nhiễu. Sau đó cổng được áp dụng cho tín hiệu.
  • Thuật toán này dựa trên (nhưng không tái tạo hoàn toàn) trên một thuật toán được phác thảo bởi Audacity cho hiệu ứng giảm nhiễu (liên kết đến mã C ++)noise reduction effect (Link to C++ code)
  • Thuật toán lấy hai đầu vào:
    1. Một clip nhiễu chứa nhiễu nguyên mẫu của clip (tùy chọn)
    2. Một clip tín hiệu chứa tín hiệu và nhiễu dự định sẽ bị loại bỏ

Các bước của thuật toán giảm nhiễu đứng yên

  1. Một phổ được tính toán trên clip âm thanh nhiễu
  2. Thống kê được tính toán trên phổ của nhiễu (tính theo tần số)
  3. Một ngưỡng được tính toán dựa trên số liệu thống kê về nhiễu (và độ nhạy mong muốn của thuật toán)
  4. Một phổ được tính toán trên tín hiệu
  5. Một mặt nạ được xác định bằng cách so sánh phổ tín hiệu với ngưỡng
  6. Mặt nạ được làm mịn với bộ lọc theo tần số và thời gian
  7. Mặt nạ được ứng dụng vào phổ của tín hiệu và được đảo ngược nếu không được cung cấp tín hiệu nhiễu, thuật toán sẽ coi tín hiệu là clip nhiễu, có xu hướng hoạt động khá tốt

Giảm tiếng ồn không cố định

  • Thuật toán giảm nhiễu không cố định là một phần mở rộng của thuật toán giảm nhiễu đứng yên, nhưng cho phép cổng nhiễu thay đổi theo thời gian.
  • Khi bạn biết thời gian mà tín hiệu của bạn xảy ra (ví dụ: cuộc gọi chim có thể là vài trăm mili giây), bạn có thể đặt ngưỡng nhiễu của mình dựa trên giả định rằng các sự kiện xảy ra theo thời gian dài hơn là tiếng ồn.
  • Thuật toán này được thúc đẩy bởi một phương pháp gần đây trong sinh học gọi là chuẩn hóa năng lượng mỗi kênh.

Các bước của thuật toán giảm nhiễu không cố định

  1. Một phổ được tính toán trên tín hiệu
  2. Một mặt nạ được xác định bằng cách so sánh phổ tín hiệu với ngưỡng
  3. Mặt nạ được làm mịn với bộ lọc theo tần số và thời gian
  4. Mặt nạ được làm mịn với bộ lọc theo tần số và thời gian
  5. Mặt nạ được ứng dụng vào phổ của tín hiệu và được đảo ngược nếu không được cung cấp tín hiệu nhiễu, thuật toán sẽ coi tín hiệu là clip nhiễu, có xu hướng hoạt động khá tốt

Giảm tiếng ồn không cố định

pip install noisereduce

Thuật toán giảm nhiễu không cố định là một phần mở rộng của thuật toán giảm nhiễu đứng yên, nhưng cho phép cổng nhiễu thay đổi theo thời gian.

Khi bạn biết thời gian mà tín hiệu của bạn xảy ra (ví dụ: cuộc gọi chim có thể là vài trăm mili giây), bạn có thể đặt ngưỡng nhiễu của mình dựa trên giả định rằng các sự kiện xảy ra theo thời gian dài hơn là tiếng ồn.

Thuật toán này được thúc đẩy bởi một phương pháp gần đây trong sinh học gọi là chuẩn hóa năng lượng mỗi kênh.

Các bước của thuật toán giảm nhiễu không cố định

Một phiên bản mượt mà của quang phổ được tính toán bằng bộ lọc IIR được đưa ra phía trước và lùi trên mỗi kênh tần số.

y : np.ndarray [shape=(# frames,) or (# channels, # frames)], real-valued
      input signal
  sr : int
      sample rate of input signal / noise signal
  y_noise : np.ndarray [shape=(# frames,) or (# channels, # frames)], real-valued
      noise signal to compute statistics over (only for non-stationary noise reduction).
  stationary : bool, optional
      Whether to perform stationary, or non-stationary noise reduction, by default False
  prop_decrease : float, optional
      The proportion to reduce the noise by (1.0 = 100%), by default 1.0
  time_constant_s : float, optional
      The time constant, in seconds, to compute the noise floor in the non-stationary
      algorithm, by default 2.0
  freq_mask_smooth_hz : int, optional
      The frequency range to smooth the mask over in Hz, by default 500
  time_mask_smooth_ms : int, optional
      The time range to smooth the mask over in milliseconds, by default 50
  thresh_n_mult_nonstationary : int, optional
      Only used in nonstationary noise reduction., by default 1
  sigmoid_slope_nonstationary : int, optional
      Only used in nonstationary noise reduction., by default 10
  n_std_thresh_stationary : int, optional
      Number of standard deviations above mean to place the threshold between
      signal and noise., by default 1.5
  tmp_folder : [type], optional
      Temp folder to write waveform to during parallel processing. Defaults to 
      default temp folder for python., by default None
  chunk_size : int, optional
      Size of signal chunks to reduce noise over. Larger sizes
      will take more space in memory, smaller sizes can take longer to compute.
      , by default 60000
      padding : int, optional
      How much to pad each chunk of signal by. Larger pads are
      needed for larger time constants., by default 30000
  n_fft : int, optional
      length of the windowed signal after padding with zeros.
      The number of rows in the STFT matrix ``D`` is ``(1 + n_fft/2)``.
      The default value, ``n_fft=2048`` samples, corresponds to a physical
      duration of 93 milliseconds at a sample rate of 22050 Hz, i.e. the
      default sample rate in librosa. This value is well adapted for music
      signals. However, in speech processing, the recommended value is 512,
      corresponding to 23 milliseconds at a sample rate of 22050 Hz.
      In any case, we recommend setting ``n_fft`` to a power of two for
      optimizing the speed of the fast Fourier transform (FFT) algorithm., by default 1024
  win_length : [type], optional
      Each frame of audio is windowed by ``window`` of length ``win_length``
      and then padded with zeros to match ``n_fft``.
      Smaller values improve the temporal resolution of the STFT (i.e. the
      ability to discriminate impulses that are closely spaced in time)
      at the expense of frequency resolution (i.e. the ability to discriminate
      pure tones that are closely spaced in frequency). This effect is known
      as the time-frequency localization trade-off and needs to be adjusted
      according to the properties of the input signal ``y``.
      If unspecified, defaults to ``win_length = n_fft``., by default None
  hop_length : [type], optional
      number of audio samples between adjacent STFT columns.
      Smaller values increase the number of columns in ``D`` without
      affecting the frequency resolution of the STFT.
      If unspecified, defaults to ``win_length // 4`` (see below)., by default None
  n_jobs : int, optional
      Number of parallel jobs to run. Set at -1 to use all CPU cores, by default 1

Một mặt nạ được tính toán dựa trên biểu đồ quang phổ mượt mà đó

Mặt nạ được áp dụng vào phổ của tín hiệu và được đảo ngược

@software{tim_sainburg_2019_3243139,
  author       = {Tim Sainburg},
  title        = {timsainb/noisereduce: v1.0},
  month        = jun,
  year         = 2019,
  publisher    = {Zenodo},
  version      = {db94fe2},
  doi          = {10.5281/zenodo.3243139},
  url          = {https://doi.org/10.5281/zenodo.3243139}
}


@article{sainburg2020finding,
  title={Finding, visualizing, and quantifying latent structure across diverse animal vocal repertoires},
  author={Sainburg, Tim and Thielk, Marvin and Gentner, Timothy Q},
  journal={PLoS computational biology},
  volume={16},
  number={10},
  pages={e1008228},
  year={2020},
  publisher={Public Library of Science}
}

Cài đặt

Gating Spectral là gì?

Gate Spectral là một hiệu ứng bộ lọc bất thường có thể được sử dụng như một công cụ để thiết kế âm thanh sáng tạo.Nó hoạt động bằng cách chia tín hiệu đến thành hai phạm vi tần số trên và bên dưới dải tần số trung tâm mà bạn chỉ định với các tham số băng thông và băng thông trung tâm.an unusual filter effect that can be used as a tool for creative sound design. It works by dividing the incoming signal into two frequency ranges—above and below a central frequency band that you specify with the Center Freq and Bandwidth parameters.

Giảm tiếng ồn trong âm thanh là gì?

Giảm nhiễu là quá trình loại bỏ nhiễu khỏi tín hiệu.Kỹ thuật giảm tiếng ồn tồn tại cho âm thanh và hình ảnh.Các thuật toán giảm nhiễu có thể làm biến dạng tín hiệu ở một mức độ nào đó.the process of removing noise from a signal. Noise reduction techniques exist for audio and images. Noise reduction algorithms may distort the signal to some degree.