<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      使用RNNoise進行音頻降噪

      操作系統:Debian 12.5_x64 & Windows10_x64

      rnnoise版本:0.2

      gcc版本:12.2.0

      python版本: 3.9.13

      RNNoise是一個將傳統數字信號處理與深度學習相結合的開源實時音頻降噪庫,可在消耗極少計算資源的情況下實現毫秒級降噪,今天整理下這方面的筆記,希望對你有幫助。

      該庫涉及算法的描述詳見論文(一種混合 DSP/深度學習方法的實時全頻帶語音增強技術):

      https://arxiv.org/pdf/1709.08243

      如果打不開,可從文末提供的渠道獲取該論文。

      之前整理過如何使用 noisereduce 、 fft 和 Audacity 音頻文件降噪,如有需要可參考:

      http://www.rzrgm.cn/MikeZhang/p/18313792/pynr20240720

      一、編譯及C使用示例

      GitHub地址:
      https://github.com/xiph/rnnoise

      image 

      1、編譯及文件說明

      編譯步驟如下:
      ./autogen.sh
      ./configure
      make

      其中,執行 ./autogen.sh 時,會下載models文件(RNNoise 項目預訓練的模型數據文件,如果下載過慢,可從文末提供的渠道獲取):

      image

      rnnoise_data主要包含了項目預訓練好的模型權重,使得用戶在編譯 RNNoise 后,無需自己從頭訓練模型,就能直接使用其降噪功能。

      rnnoise_data文件里面是c代碼及pth文件:

      image

      這里面有.c文件和.pth文件,其中:

      .c 文件由.pth文件生成,存儲預訓練模型權重,將神經網絡權重以C數組形式嵌入,供降噪算法直接調用,降噪時由 rnnoise_process_frame 等函數直接使用。

      .pth 文件存儲訓練模型,用于模型研究、微調或重新訓練,并非RNNoise運行時必需。

      使用說明:

      1)若只需使用RNNoise的降噪功能,關注編譯好的庫及API即可。

      2)若需要優化模型或適配特殊場景,才需研究 .pth 文件及項目的訓練腳本。

      2、降噪效果驗證

      在examples目錄里面有可直接運行的demo程序,需要準備s16le 48khz格式的音頻文件。

      輸出為pcm格式的文件。

      導入效果如下:

      image

       降噪效果如下:

      image

       這里用的是Audacity軟件查看降噪效果的,關于Audacity軟件的使用,可參考這篇文章:

      http://www.rzrgm.cn/MikeZhang/p/audacity2022022.html

      關于pcm音頻的播放可參考這篇文章:
      配套的音頻文件可從如下渠道獲取:
      關注微信公眾號(聊聊博文,文末可掃碼)后回復 20251031 獲取。

      3、使用靜態庫二次開發

      實際使用過程中,會涉及基于rnnoise庫進行二次開發的情況,這里提供下簡單示例。

      基于rnnoise_demo.c修改的示例代碼如下(test1.c):

      #include <stdio.h>
      #include "rnnoise.h"
      #define FRAME_SIZE 480
      int main(int argc, char **argv) {
        int i;
        int first = 1;
        float x[FRAME_SIZE];
        FILE *f1, *fout;
        DenoiseState *st;
        st = rnnoise_create(NULL);
        if (argc!=3) {
          fprintf(stderr, "usage: %s <noisy speech> <output denoised>\n", argv[0]);
          return 1;
        }
        f1 = fopen(argv[1], "rb");
        fout = fopen(argv[2], "wb");
        while (1) {
          short tmp[FRAME_SIZE];
          fread(tmp, sizeof(short), FRAME_SIZE, f1);
          if (feof(f1)) break;
          for (i=0;i<FRAME_SIZE;i++) x[i] = tmp[i];
          rnnoise_process_frame(st, x, x);
          for (i=0;i<FRAME_SIZE;i++) tmp[i] = x[i];
          if (!first) fwrite(tmp, sizeof(short), FRAME_SIZE, fout);
          first = 0;
        }
        rnnoise_destroy(st);
        fclose(f1);
        fclose(fout);
        return 0;
      }

      編譯命令如下:

      g++ test1.c -o test1  -Iinclude  -static libs/librnnoise.a
      也可寫使用Makefile文件:
      CC = g++
      CFLAGS = -g -O2 -Wall
      HDRS= -Iinclude
      LIBS = -static libs/librnnoise.a
      
      # g++ test1.c -o test1  -Iinclude  -static libs/librnnoise.a
      
      all:
              make test1
      
      test1:test1.o
              $(CC) -o test1 test1.o $(LIBS)
      
      clean:
              rm -f test1
              rm -f *.o
      
      .c.o:
              $(CC) $(CFLAGS) $(HDRS) -c -o $*.o $<
      編譯及運行效果如下:

      image

      降噪效果如下:

      image

      配套代碼及文件可從如下渠道獲取:
      關注微信公眾號(聊聊博文,文末可掃碼)后回復 20251031 獲取。 

      二、在python中使用rnnoise庫

       rnnoise的python庫內置的有降噪模型,不用額外下載模型。
       
      pypi地址:

      image

       安裝rnnoise庫:

      pip install pyrnnoise
      主流平臺都支持的:

      image

       

      安裝時會下載很多依賴庫:

      image

       安裝后dll路徑:

      image

       示例代碼(rnnoiseTest1.py):

      from pyrnnoise import RNNoise
      # Create denoiser instance
      denoiser = RNNoise(sample_rate=16000)
      # Process audio file
      for speech_prob in denoiser.denoise_wav("mix1.wav", "output.wav"):
          print(f"Processing frame with speech probability: {speech_prob}")

      運行效果如下:

      image

       降噪效果如下:

      image

      配套代碼及文件可從如下渠道獲取:

      關注微信公眾號(聊聊博文,文末可掃碼)后回復 20251031 獲取。 

      三、模型訓練

      這里做下簡單說明,具體可參考GitHub上的README文檔:

      image

      1、數據集獲取

       數據及模型下載地址:

      image

      1)rnnoise_contributions.tar.gz 是 RNNoise 項目提供的一個數據集壓縮包,主要用于訓練 RNNoise 模型;

      2)data目錄里面包含語音數據、噪音數據及其它輔助數據,展開如下;

      image

       3)misc目錄只有一個wav音頻文件;

      image

       4)models文件夾存儲的訓練好的模型,可直接使用;

      image

      2、訓練過程

      大致過程如下:
      1)使用dump_features提取特征文件。
      示例如下:
      ./dump_features -rir_list rir_list.txt speech.pcm background_noise.pcm foreground_noise.pcm features.f32 <count>
      其中  為處理的序列數量,建議至少 10000 次(越多越好,推薦 200000 次以上)。
      dump_features在rnnoise的根目錄(編譯后):

      image

      2)可使用腳本 script/dump_features_parallel.sh 加速特征生成。

      使用方法如下:

      script/dump_features_parallel.sh ./dump_features speech.pcm background_noise.pcm foreground_noise.pcm features.f32 <count> rir_list.txt
      該腳本會啟動多個進程,每個進程處理一定數量的序列,并將結果合并為一個文件。
       
      3)執行訓練,生成模型文件。
      訓練腳本目錄:torch/rnnoise

      image

       訓練命令如下:

      python3 train_rnnoise.py features.f32 output_directory

      可選擇適當的訓練輪數(通過 --epochs 參數指定,比如 75000 次),當使權重更新次數達到約 75000 次時,會生成  .pth 文件(比如 rnnoise_50.pth )。

      4)將模型文件轉換為 C 代碼。

      腳本名稱: dump_rnnoise_weights.py

      轉換示例:

      python3 dump_rnnoise_weights.py --quantize rnnoise_50.pth rnnoise_c

      會自動創建 rnnoise_c 文件夾,然后在該文件夾里面生成  rnnoise_data.c 和 rnnoise_data.h 文件。

      5)在C代碼中使用模型。

      復制 rnnoise_data.c 和 rnnoise_data.h 文件到 src/ 目錄,然后按照之前描述的方法編譯 RNNoise 工程,會在examples目錄里面找到可直接運行的demo程序(rnnoise_demo)。

      四、資源獲取

      本文相關資源及運行環境,可從如下渠道獲取:

      關注微信公眾號(聊聊博文,文末可掃碼)后回復 20251031 獲取。

      image

       

      posted on 2025-10-31 21:07  Mike_Zhang  閱讀(85)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 免费无遮挡毛片中文字幕| 日本一区二区国产在线| 亚洲av无码专区在线厂| 亚洲va久久久噜噜噜久久狠狠| 国产欧美亚洲精品a| 国产精品一区中文字幕| 高清不卡一区二区三区| 四虎国产精品永久在线下载| 美女扒开尿口让男人桶| 亚洲区一区二区三区精品| 婷婷五月综合丁香在线| 影音先锋AV成人资源站在线播放| 免费av深夜在线观看| 日韩有码中文字幕第一页| 男女性杂交内射女bbwxz| 欧美日韩国产码高清| 日韩视频一区二区三区视频| 亚洲午夜性猛春交XXXX| 精品人妻蜜臀一区二区三区| 国产黄色大片网站| 色猫咪av在线网址| 欧洲美熟女乱又伦免费视频| 日本视频一两二两三区| 久久精品国产99亚洲精品| a片在线免费观看| 国产91精品一区二区蜜臀| 无码人妻斩一区二区三区| 亚洲日韩欧洲乱码av夜夜摸| 日本久久一区二区三区高清| 四虎国产精品免费久久久| 成人深夜节目在线观看| 亚洲男人第一无码av网| CAOPORN免费视频国产| 夜色福利站WWW国产在线视频| 熟女亚洲综合精品伊人久久| 久久精品女人天堂av| 亚洲中文无码手机永久| 亚洲黄色第一页在线观看| 亚洲成aⅴ人片久青草影院| 精品国产女同疯狂摩擦2| 又湿又紧又大又爽a视频|