基于wenet和模型做企業直播敏感語音屏蔽技術

本文介紹了基于Wenet語音識別工具包的實時敏感詞屏蔽技術方案。該方案通過客戶端緩存25秒直播內容,利用Wenet的流式識別和斷句檢測功能,實時檢測講師語音中的敏感詞,并將對應位置的語音替換為"嗶"聲。文章詳細闡述了Wenet的兩種識別方式(流式/非流式)、三種部署方案及其性能指標,重點說明了客戶端4.x的接入方案:采用流式識別+智能斷句方式,在子線程處理敏感詞檢測,主推流流程不受影響,最大延遲不超過25秒。該技術可在直播過程中實現敏感內容的實時自動屏蔽。

?直播敏感語音,實現"嗶嗶"屏蔽技術。?

直播場景實際應用中的需求:在客戶端直播的時候,實時檢測講師的語音內容,檢測到敏感詞后,自動把對應的語音內容用“嗶”聲代替 。

客戶端緩存25s直播內容,在語音識別引擎識別到屏蔽詞后,找到屏蔽詞在語音緩存的位置,將語音內容替換為“嗶”聲的語音內容。

1.?wenet簡述:

Wenet是出門問問語音團隊聯合西工大語音實驗室開源的一款面向工業落地應用的語音識別工具包,該工具用一套簡潔的方案提供了語音識別從訓練到部署的服務。

1.1. wenet識別方式

流式:語音以實時流的方式推入引擎;(識別結果不太準確,較快)

非流式:語音以一整段語音的方式推入引擎。(識別結果較準確,較慢)

斷句檢測:如果語音以流式推入引擎,則需要斷句檢測,原理參考:

WeNet 更新:支持 Endpoint 檢測

Endpoint 檢測是語音識別系統的重要組成部分,可以提高人機交互的效能和質量。它的任務是確定用戶何時結束講話,這對于實時長語音轉寫和語音搜索等交互式語音應用非常重要。

最近,WeNet 的更新則支持了 endpoint 的檢測。有了 endpoint 檢測,我們就可以愉快地進行實時長語音轉寫了。下面將從實現原理和應用方面介紹 endpoint 檢測和實時長語音轉寫的使用。

①. 識別出文字之前,檢測到了 5s 的靜音;

②. 識別出文字之后,檢測到了 2s 的靜音;

③. 解碼到概率較小的 final state,且檢測到了 1s 的靜音;

④. 解碼到概率較大的 final state,且檢測到了 0.5s 的靜音;

⑤. 已經解碼了 20s。

注意:wenet同時支持流失、非流失、以及斷句檢測。當數據以流失輸入wenet時,wenet可在返回流式結果的同時智能斷句,并返回整句的最終結果。

1.2. wenet部署方案

①. 部署在端上:win64、mac-intel64、Linux-64;

APP直接調用wenet接口(C++)-(本次demo采用)

②. 部署在服務器上:Linux-docker

APP調用websocket接口,上傳音頻,由服務器通過websocket返回結果。

1.3. wenet延時性能

①. 處理延時:處理10s音頻不超過1s;

②. 模型帶來的流式延時:不超過0.4s;

③. 斷句并重打分計算:不超過0.14s。

1.4. 參考資料

https://github.com/wenet-e2e/wenet

Welcome to wenet’s documentation! — wenet documentation

https://zhuanlan.zhihu.com/p/349586567

1.5.WeNet Endpoint?實現

WeNet 中 endpoint 檢測相關代碼的實現在?decoder/ctc_endpoint.h?和?decoder/ctc_endpoint.cc?中。

// 遍歷每一個時間步
for (int t = 0; t < ctc_log_probs.size(0); ++t) {torch::Tensor logp_t = ctc_log_probs[t];// 獲取當前時間步 blank 標簽的概率float blank_prob = expf(logp_t[config_.blank].item<float>());// 解碼幀數加一num_frames_decoded_++;// 判斷 blank 標簽的概率是否大于閾值(默認 0.8)if (blank_prob > config_.blank_threshold) {// 是,則尾部 blank 標簽的幀數加一num_frames_trailing_blank_++;} else {// 否,則尾部 blank 標簽的幀數置零num_frames_trailing_blank_ = 0;}
}

三條規則的表示如下所示,可以手動添加更多的規則或者更改規則中的時間,以滿足各種不同場景下的需求。

// rule1 times out after 5000 ms of silence, even if we decoded nothing.
CtcEndpointRule rule1;
// rule2 times out after 1000 ms of silence after decoding something.
CtcEndpointRule rule2;
// rule3 times out after the utterance is 20000 ms long, regardless of
// anything else.
CtcEndpointRule rule3;CtcEndpointConfig(): rule1(false, 5000, 0), rule2(true, 1000, 0), rule3(false, 0, 20000) {}

2. 基于保利威客戶端4.x接入方案

2.1. 采用的識別方式

①.流失:數據以流失推入wenet;

②.斷句:由于流失實時識別結果并不準確,且不帶時間戳,無法準確定位音頻。因此,使用wenet的斷句功能,斷句后獲取整句結果;

2.2. 原理

①. 接入方式:4.x采用直接調用wenet-C++接口的方式接入;

②. 延時直播:識別方式采用流失+智能斷句的方式,斷句最長會導致20s延時,加上其他延時,因此,最長不超過25s。?

③. 主流程不打斷:OBS的采集→編碼→緩沖→推流,該流程不會進行任何阻塞。 wenet識別→敏感詞檢測均在子線程處理,若無法找到敏感詞對應的音頻數據包,則會直接丟棄。

配圖企業直播客戶端軟件接入敏感語音屏蔽技術

?我的熱門文章匯總:

  • 開通微信視頻號直播需要滿足哪些條件?
  • 徹底永久關閉WIN10系統的自動更新(操作步驟)
  • 視頻碼率、幀率、分辨率、視頻標清、高清、全高清的全面介紹與參考表
  • Thinkpad電腦系列產品進入Bios設置和U盤啟動(重裝系統)
  • 網線水晶頭接法圖解詳細8根線芯順序排序圖示

我的在線教育原創文章匯總:

  • Vue3框架對接保利威云點播播放器的實踐(實例)
  • 視頻點播web端AI智能大綱(自動生成視頻內容大綱)的代碼與演示
  • html5視頻播放器的斷點續播和記憶播放是如何做的?
  • 視頻安全之視頻防盜鏈和視頻防盜錄
  • 課程學習網站視頻禁止拖拽快進是如何做的?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/94422.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/94422.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/94422.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

42.MySQL視圖

1.一個需求emp 表的列信息很多&#xff0c;有些信息是個人重要信息 (比如 sal, comm, mgr, hiredate)&#xff0c;如果我們希望某個用戶只能查詢 emp 表的 (empno、ename, job 和 deptno ) 信息&#xff0c;有什么辦法&#xff1f;表的數據&#xff1a;想讓用戶查詢到的&#x…

MinIO01-入門

零、文章目錄 MinIO01-入門 1、介紹 &#xff08;1&#xff09;介紹 MinIO 是一款基于 Apache License v2.0 的開源對象存儲系統&#xff0c;專為海量非結構化數據&#xff08;如圖片、視頻、日志文件等&#xff09;設計&#xff0c;兼容 Amazon S3 API&#xff0c;支持高性…

*Docker數據卷(Volume)核心機制剖析:持久化與共享的終極解決方案

根本問題當容器被刪除時&#xff0c;其內部產生的所有文件&#xff08;包括配置文件、數據庫、日志&#xff09;都會不可逆丟失。數據卷&#xff08;Volume&#xff09;通過外置存儲方案徹底解決此痛點。一、數據卷與普通容器存儲對比實驗 場景1&#xff1a;無卷模式下的寫入悲…

原型模式在C++中的實現與面向對象設計原則

引言 在軟件開發中&#xff0c;原型模式是一種常用的設計模式&#xff0c;主要用于創建對象的克隆。通過原型模式&#xff0c;我們可以避免復雜的對象創建過程&#xff0c;尤其是當對象的初始化需要大量資源或復雜操作時。本文將通過一個具體的例子&#xff0c;詳細介紹如何在C…

SpringCloud學習------Gateway詳解

在微服務架構中&#xff0c;隨著服務數量的激增&#xff0c;如何統一管理服務入口、實現請求路由、保障服務安全等問題日益突出。SpringCloud Gateway 作為 Spring 官方推出的網關組件&#xff0c;憑借其強大的功Gateway 是 Spring 官方基于 Spring、SpringBoot 和 Project Rea…

計算機網絡:子網掩碼在路由轉發中的關鍵作用

在路由表中,子網掩碼是一個不可或缺的組成部分,其核心作用是精確界定IP地址中“網絡位”和“主機位”的邊界,從而實現路由器對數據包的準確轉發。以下從多個角度詳細解釋其必要性: 1. 區分網絡位與主機位,定位目標網絡 IP地址由“網絡標識”(網絡位)和“主機標識”(主…

14.Home-新鮮好物和人氣推薦實現

新鮮好物實現1.準備模板<script setup>import HomePanel from ./HomePanel.vue</script><template><homePanel></HomePanel><!-- 下面是插槽主體內容模版<ul class"goods-list"><li v-for"item in newList" :ke…

Linux 系統重置用戶密碼指南

Linux 系統重置用戶密碼指南 在 Linux 系統運維中&#xff0c;重置用戶密碼&#xff08;尤其是 root 密碼&#xff09;是一項核心技能。當您忘記密碼時&#xff0c;可以通過進入單用戶模式或恢復模式來修改密碼。此方法適用于大多數 Linux 發行版&#xff0c;如 RHEL/CentOS、D…

[自動化Adapt] GUI交互(窗口/元素) | 系統配置 | 非侵入式定制化

第三章&#xff1a;GUI交互&#xff08;窗口/元素&#xff09; 各位OpenAdapt探索者&#xff0c;歡迎回來~ 在第一章&#xff1a;錄制引擎中&#xff0c;我們揭示了OpenAdapt如何通過"眼睛和耳朵"捕捉所有操作細節。接著在第二章&#xff1a;數據模型中&#xff0c…

Java 模版進階

文章目錄模版通配符模版 通配符 實例 import java.util.ArrayList; import java.util.List;class Message<T> {private T message ;public T getMessage() {return message;}public void setMessage(T message) {this.message message;} } public class test {public …

統計魚兒分布情況 Java

假設有一個池塘&#xff0c;管理員在池塘中添加隨機數量的魚類&#xff0c;為了統計魚類的分布情況&#xff0c;他將池塘劃分為8*8的二維網格&#xff0c;魚兒隨機游動&#xff0c;但是每個網格中最多容納100條魚&#xff0c;要求編寫程序顯示魚兒分布情況&#xff0c;并計算魚…

【HUST】計算機|大學計算機基礎內容(純科普向)+數據結構數組、樹、隊列【舊文搬運】

最初發布時間&#xff1a;2020-09-19 23:17:48 以前寫這篇文章&#xff0c;主要是接觸到一些非計算機學院的同學&#xff0c;為了交流方便我寫下了這篇文章……雖然現在回過頭來看寫得也比較草率&#xff0c;但確實是我對電腦的基礎操作的最早的認識&#xff0c;放到現在我絕對…

CRT調試堆檢測:從原理到實戰的資源泄漏排查指南

在C/C開發中&#xff0c;內存泄漏和資源管理不當是導致程序崩潰、性能下降的常見原因。微軟提供的C運行時庫&#xff08;CRT&#xff09;內置了強大的調試工具&#xff0c;能夠幫助開發者在開發階段及時發現并修復資源泄漏問題。本文將深入解析CRT調試堆的工作原理&#xff0c;…

filezilla出現connected refused的時候排查問題

問題描述: 系統是ubuntu20.04&#xff0c;使用filezilla&#xff0c;兩個主機之間能夠ping通&#xff0c;但是filezilla使用sftp連接的時候顯示的是 FATAL ERROR: Connection refused Could connect to the server應該如何排查問題呢 這是一個非常典型的SFTP連接問題。“Connec…

FPGA 基本設計思想--乒乓操作、串并轉換、流水線

乒乓操作&#xff08;Ping-Pong&#xff09;的理解&#xff1a;為什么是另一種pipeline&#xff1f;-CSDN博客 FPGA菜鳥學習筆記——2、四大設計思想 - 知乎 乒乓操作&#xff08;Ping-Pong&#xff09;-CSDN博客 乒乓操作原理與FPGA設計-CSDN博客 乒乓操作 — [野火]FPGA …

2023 年 6 月 GESP Python 二級試卷真題+答案+解析

2023 年 6 月 GESP Python 二級試卷解析 一、單選題&#xff08;每題 2 分 &#xff0c;共 30 分&#xff09; 1 、 高級語言編寫的程序需要經過以下&#xff08; &#xff09;操作&#xff0c;可以生成在計算機上運行的可執行代碼。 A. 編輯 B. 保存 C. 調試…

數據對齊:如何處理時間序列與空間對齊問題?

在多模態學習中&#xff0c;不同模態&#xff08;文本、語音、圖像、視頻、傳感器數據等&#xff09;具有不同的采樣率、時間步長、空間分辨率。例如&#xff0c;視頻是連續幀&#xff0c;音頻是高采樣頻率的波形&#xff0c;文本是離散符號序列。為了實現有效融合&#xff0c;…

兩個任務同一個調用時間 CRON:0 0 3 * * ?,具體如何調度的,及任務如何執行的

xxLjob兩個任務 pullGuanjiaSalesJob&#xff0c;不同的執行參數&#xff0c;配置了同一個 XxlJob("pullGuanjiaSalesJob")兩個任務同一個調用時間 CRON&#xff1a;0 0 3 * * ?&#xff0c;具體如何調度的&#xff0c;及任務如何執行的在 XXL-JOB 中&#xff0c;當…

【基于WAF的Web安全測試:繞過Cloudflare/Aliyun防護策略】

當Cloudflare或阿里云WAF矗立在Web應用前端&#xff0c;它們如同智能護盾&#xff0c;過濾惡意流量。然而&#xff0c;真正的Web安全測試不止于驗證防護存在&#xff0c;更需挑戰其邊界——理解并模擬攻擊者如何繞過這些先進防護&#xff0c;才能暴露深藏的風險。這不是鼓勵攻擊…

使用YOLOv8-gpu訓練自己的數據集并預測

本篇將教學使用示例代碼訓練自己的數據集&#xff08;train&#xff09;以及預測&#xff08;predict&#xff09;。 目錄 一、代碼獲取 二、訓練 1、添加自己的訓練集 2、創建訓練集設置文件 3、 修改訓練代碼中數據集設置文件 4、開始訓練 三、預測 1、 修改圖片路徑…