【Python 軍火庫🧨 - silero-vad】 偵測語音活動的神兵利器

更新於 發佈於 閱讀時間約 4 分鐘
raw-image



當我們在進行「語音辨識」的應用開發時, 首先會面臨一個問題, 那就是究竟要怎麼知道哪些段落是「人在說話的區段」, 精確的標示出這些區段之後, 我們除了可以儲存成純對話的段落, 還可以做出時間軸的字幕檔, 應用非常廣泛, 因此學會怎麼用VAD是進入語音領域非常重要的其中一個環節。

VAD代表語音活動檢測, 全名為 Voice Activity Detection, 它是信號處理技術, 主要從音訊中分離出人類語音的部份,算法的實現方式多樣,通常基於信號的能量、短時過零率、頻譜特徵等。一些先進的 VAD 算法也使用機器學習技術,如深度學習,來提高準確性和適應性。

silero-vad 擁有著許多特點與強項, 號稱:

  • 精準: Quality Metrics
  • 快速: Performance Metrics
  • 輕量化: 模型不到3MB
  • 彈性的取樣率: 16k、8k。
  • 彈性的塊長度: 模型訓練時間為 30 毫秒, 直接支援更長的區塊,其他區塊也可以工作。
  • 高度可移植性: pytorch、onnx。
raw-image


安裝套件

pip install torch
pip install torchaudio

# 假設會使用到onnx模型時才需要安裝
pip install onnxruntime

開箱即用

簡單的五個步驟就能夠取出聲音的時間區段…

# 載入模型
model, utils = torch.hub.load(repo_or_dir='snakers4/silero-vad',
model='silero_vad',
force_reload=True,
onnx=USE_ONNX)

# 載入工具庫
(get_speech_timestamps,
save_audio,
read_audio,
VADIterator,
collect_chunks) = utils

# 讀取音檔
wav = read_audio('en_example.wav', sampling_rate=SAMPLING_RATE)

# 取得音檔的時間區段
speech_timestamps = get_speech_timestamps(wav, model, sampling_rate=SAMPLING_RATE)
pprint(speech_timestamps)

# 儲存僅有人聲的區段
save_audio('only_speech.wav',
collect_chunks(speech_timestamps, wav), sampling_rate=SAMPLING_RATE)

哪些專案正在使用?

我們可以看到Github上許多的專案都使用到了silero-vad 這個工具, 通常都跟語音應用相關, 包括基礎的語音辨識、爬蟲、Yoiutube串流辨識…等, 應用非常多元, 我們不妨也試著玩玩看, 說不定會從中得到一點啟發創造出全新的應用。

https://github.com/search?q=silero-vad&type=repositories

raw-image



您可能會需要的… 如何載入本地端模型?

為什麼會說您可能會需要? 因為我們總不可能任何環境都能夠連網, 一旦沒有網路時, 模型該怎麼下載? 尤其是產品要進入到客戶的封閉網路環境時, 載入本地端的模型就非常重要了…。

我們只要將source指定為local以及trust_repo指定為None即可載入本地端專案。

model, utils = torch.hub.load(
repo_or_dir='silero-vad的專案目錄, git clone ',
model='silero_vad',
trust_repo=None,
source='local',
)

結語

語音領域的技術堆疊也是蠻深的, 要做好語音辨識不只有模型的訓練過程, 還包含前置的語音訊號處理, 畢竟收音端的來源非常多元, 環境的吵雜也會影響著辨識率, 而要如何提高精準度就有賴於我們對於語音的背景知識了, 我們後續也會在會員專屬區分享這些知識, 歡迎一同加入學習。

留言
avatar-img
留言分享你的想法!
阿Han-avatar-img
發文者
2024/02/28
哈哈 是偵測語音說話段落
好厲害竟然可以有偵測語言的🤣🤣🤣🤣偶要和錄音筆一起發揮功效😆
avatar-img
阿Han的沙龍
129會員
283內容數
哈囉,我是阿Han,是一位 👩‍💻 軟體研發工程師,喜歡閱讀、學習、撰寫文章及教學,擅長以圖代文,化繁為簡,除了幫助自己釐清思路之外,也希望藉由圖解的方式幫助大家共同學習,甚至手把手帶您設計出高品質的軟體產品。
阿Han的沙龍的其他內容
2025/01/29
🤔 簡單且靜態就足夠了? 相信我們在開發Python應用程式的過程中, 常常會借用Enum來定義我們可能的選項, 就像顏色紅、綠、黃會有這樣的結構: class Color(str, Enum): RED = 'red' GREED = 'green' YELLOW = 'yel
Thumbnail
2025/01/29
🤔 簡單且靜態就足夠了? 相信我們在開發Python應用程式的過程中, 常常會借用Enum來定義我們可能的選項, 就像顏色紅、綠、黃會有這樣的結構: class Color(str, Enum): RED = 'red' GREED = 'green' YELLOW = 'yel
Thumbnail
2025/01/08
當我們的系統發展到一定程度時, 難免會面臨到正式上線的問題, 要如何讓維運更加簡易呢? 尤其隨著複雜的客製化配置的出現時, 我們應該如何有效的管理, 甚至驗證配置是否如預期資料型態、格式…, 而正好 pydantic 可以滿足這樣的需求, 就讓我們來看看怎麼使用吧! 需安裝的套件 pip i
Thumbnail
2025/01/08
當我們的系統發展到一定程度時, 難免會面臨到正式上線的問題, 要如何讓維運更加簡易呢? 尤其隨著複雜的客製化配置的出現時, 我們應該如何有效的管理, 甚至驗證配置是否如預期資料型態、格式…, 而正好 pydantic 可以滿足這樣的需求, 就讓我們來看看怎麼使用吧! 需安裝的套件 pip i
Thumbnail
2025/01/02
要如何使用unicorn啟動多個FastAPI服務, 歡迎參考我們的「【💊 Python的解憂錦囊 - FastAPI】如何啟動多個Workers」。 當我們試著設計帶入模組化時… 我們在「【💊 Python的解憂錦囊 - FastAPI】使用 lifespan 來共享資料與管理生命週期
Thumbnail
2025/01/02
要如何使用unicorn啟動多個FastAPI服務, 歡迎參考我們的「【💊 Python的解憂錦囊 - FastAPI】如何啟動多個Workers」。 當我們試著設計帶入模組化時… 我們在「【💊 Python的解憂錦囊 - FastAPI】使用 lifespan 來共享資料與管理生命週期
Thumbnail
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
輔音中響度相對較大的鼻音、邊音具有與元音相似的特性,可以自成音節。我們生活周遭的英語、臺語、客語等都有類似的例子。而除了鼻音、邊音之外,其他響度較小的輔音似乎就沒辦法自成音節......了嗎?
Thumbnail
輔音中響度相對較大的鼻音、邊音具有與元音相似的特性,可以自成音節。我們生活周遭的英語、臺語、客語等都有類似的例子。而除了鼻音、邊音之外,其他響度較小的輔音似乎就沒辦法自成音節......了嗎?
Thumbnail
這篇教學介紹如何進行中文語音訓練,包括準備素材、GPT-SoVITS安裝步驟、音頻切割、字幕打標和推理等。文章提供了清晰的教學步驟,適合初學者閱讀。
Thumbnail
這篇教學介紹如何進行中文語音訓練,包括準備素材、GPT-SoVITS安裝步驟、音頻切割、字幕打標和推理等。文章提供了清晰的教學步驟,適合初學者閱讀。
Thumbnail
  我們在語音初探篇提到TTS的流程可以分成三個部分 :輸入前處理、預測音訊特徵、語音重建,其中輸入前處理的部分上兩篇已經處理完,在進入預測音訊特徵前,讓我們先來理解最後的語音重建部分。
Thumbnail
  我們在語音初探篇提到TTS的流程可以分成三個部分 :輸入前處理、預測音訊特徵、語音重建,其中輸入前處理的部分上兩篇已經處理完,在進入預測音訊特徵前,讓我們先來理解最後的語音重建部分。
Thumbnail
拼字,靠死背:多少人能背光那些例外? 文法,靠理解:多少人能解密那些規則? 語意,靠閱讀:多少人能「看」出那些「音效」?
Thumbnail
拼字,靠死背:多少人能背光那些例外? 文法,靠理解:多少人能解密那些規則? 語意,靠閱讀:多少人能「看」出那些「音效」?
Thumbnail
當我們在進行「語音辨識」的應用開發時, 首先會面臨一個問題, 那就是究竟要怎麼知道哪些段落是「人在說話的區段」, 精確的標示出這些區段之後, 我們除了可以儲存成純對話的段落, 還可以做出時間軸的字幕檔, 應用非常廣泛, 因此學會怎麼用VAD是進入語音領域非常重要的其中一個環節。 VAD代表
Thumbnail
當我們在進行「語音辨識」的應用開發時, 首先會面臨一個問題, 那就是究竟要怎麼知道哪些段落是「人在說話的區段」, 精確的標示出這些區段之後, 我們除了可以儲存成純對話的段落, 還可以做出時間軸的字幕檔, 應用非常廣泛, 因此學會怎麼用VAD是進入語音領域非常重要的其中一個環節。 VAD代表
Thumbnail
語言是一種聲波,頻率對了,力量無窮
Thumbnail
語言是一種聲波,頻率對了,力量無窮
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News