日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python---webRTC~vad静音检测-学习笔记

發布時間:2025/4/5 python 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python---webRTC~vad静音检测-学习笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

參考:

  • https://blog.csdn.net/u012123989/article/details/72771667

webRTC~vad

1. mode

  • 0 ---- quality mode
  • 1 ---- low bitrate mode
  • 2 ---- aggressive mode
  • 3 ---- very aggressive mode

2. webRTC~vad只支持10ms, 20ms, 30ms的幀frame判斷。

3. webRTC~vad只支持8k采樣率

4. 在8k采樣基礎上

  (1) 計算子帶能量, feature vector

  (2) 通過高斯混合模型分別計算語音和非語音的概率,使用假設檢驗的方法確定信號的類。

  • 首先通過高斯模型計算假設檢驗中的H0和H1,通過門限判決vadflag。
  • 然后更新概率計算所需要的語音均值(speech_means)、噪聲均值(noise_means)、語音方差(speech_stds)、噪聲方差(noise_stds)。

----------筆記1:反正我是沒看懂,推薦看webRTC英文簡介中的vad部分;

    idea:如果實時更新 + collections.deque(maxlen)應用到自適應領域,去做靜音檢測和噪音消除,可行嗎?

5. 代碼-python

  import pyaudio

  import webrtcvad

  vad = webrtcvad.Vad(1)

  stream = pyaudio.open(......)

  chunk = stream.read(chunk_size)

  active = vad.is_speech(chunk, RATE)

--------筆記2: 我個人筆記:python--webRTC~vad對于聲音的判斷效果很差,pyaudio等在錄音過程中會有電流脈/機器本身運行的聲音干擾,vad.is_speech會將電流脈聲音判斷為有效語音,干擾很大。

  • portaudio用于音頻采集,有兩種機制:阻塞和回調。阻塞,自己設定時間, 不管有沒有數據都要返回;回調,有有效數據的時候才會調用這個函數返回數據。?-----吐嘈:如果python相關包能實現回調的功能,那靜音檢測還需要做嗎?疑問?
  • pyaudio可以從設備節點讀取原始音頻流數據,音頻編碼是PCM格式;
  • struct.pack(fmt, v1, v2)

    return a string containing the values v1,v2....packed according to the given format. the arguments must match the values required by the format exactly.

    struct.pach用于將python值根據格式符,轉換為字符串。(因為python中沒有字節Byte類型,可以把這里的字符串理解為字節流或字節數組)

    example1: struct類型表。'i'表示integer; ‘ii'表示轉換兩個值v1,v2為integer數據;byte 0xff表示一個十六字節,無符號整數。

    example2:struct.pack('>i4sh', 7, b'spam', 8)

      fmt=‘>i4sh',這種格式符是一種linux命令.

      '>'是c和python中的一種數據結構

      ’i' int---interger---7

      4s----char-----string對應spam

      ‘h’----unsigned short------integer---8

  • array.array(type code[, initalizer])

    a new array whose items are restricted by type code

    'h' -----signed short-----int----2

  • signal.signal(signalnum, handler)這個模塊提供了python內部的信號處理機制,一旦出現signalnum信號,就執行handler函數

    python signal信號類型:SIGINT終止進程,中斷進程

  • collections.deque(maxlen=)通過maxlen限制deque隊列中的幀數

    collections是python內建的一個集合模塊,提供了許多有用的集合類

    deque()為了高效實現插入和刪除操作的雙向列表,適用于棧和對列:append(), appendleft(); pop(), popleft(),而list是線性列表,在數據量大的時候插入和刪除的效率很低。

  • python~assert簡便地設置斷點debugging
  • python~yield是一個類似return的關鍵字,只是這個函數返回多個值的生成器,并不立即執行

question1:在pyaudio.stream錄音過程中,突然拔掉麥克風,會莫名其妙的多錄入1000多塊chunk的電流脈聲。

question2: webrtcvad并不能及時準確的檢測出靜音,如果靜音檢測達不到及時準確的要求,延遲在2-4s以上,靜音檢測就沒有多大意義了。

總結

以上是生活随笔為你收集整理的python---webRTC~vad静音检测-学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。