Gradio全解20——Streaming:流式傳輸的多媒體應用(3)——實時語音識別技術

Gradio全解20——Streaming:流式傳輸的多媒體應用(3)——實時語音識別技術

  • 本篇摘要
  • 20. Streaming:流式傳輸的多媒體應用
    • 20.3 實時語音識別技術
      • 20.3.1 環境準備和開發步驟
        • 1. 環境準備
        • 2. ASR應用開發步驟(基于Transformers)
      • 20.3.2 配置ASR模型
      • 20.3.3 構建全上下文ASR演示系統
      • 20.3.4 構建流式ASR演示系統
    • 參考文獻:

本章目錄如下:

  1. 《Gradio全解20——Streaming:流式傳輸的多媒體應用(1)——流式傳輸音頻:魔力8號球》;
  2. 《Gradio全解20——Streaming:流式傳輸的多媒體應用(2)——構建對話式聊天機器人》;
  3. 《Gradio全解20——Streaming:流式傳輸的多媒體應用(3)——實時語音識別技術》;
  4. 《Gradio全解20——Streaming:流式傳輸的多媒體應用(4)——基于Groq的帶自動語音檢測功能的多模態Gradio應用》;
  5. 《Gradio全解20——Streaming:流式傳輸的多媒體應用(5)——基于WebRTC的攝像頭實時目標檢測》;
  6. 《Gradio全解20——Streaming:流式傳輸的多媒體應用(6)——構建視頻流目標檢測系統》。

本篇摘要

本章講述流式傳輸的應用,包括音頻、圖像和視頻格式的流式傳輸。

20. Streaming:流式傳輸的多媒體應用

本章講述流式傳輸的應用,包括音頻、圖像和視頻格式的流式傳輸。音頻應用包括流式傳輸音頻、構建音頻對話式聊天機器人、實時語音識別技術和自動語音檢測功能;圖像應用包括基于WebRTC的攝像頭實時目標檢測;視頻應用包括構建視頻流目標檢測系統。

20.3 實時語音識別技術

自動語音識別技術(Automatic speech recognition:ASR)作為機器學習中將語音信號轉換為文本的重要領域,正處于快速發展階段。當前ASR算法已普遍應用于智能手機設備,并逐步滲透到專業工作流程中,如醫護人員的數字助理系統。由于ASR算法直接面向終端用戶,所以必須確保其能夠實時準確處理各種語音特征(包括不同口音、音高及背景噪聲環境)。

通過Gradio平臺,開發者可快速構建ASR算法模型的演示系統,便于測試團隊驗證或通過麥克風等設備進行自主實時測試。本教程將通過兩部分演示如何將預訓練語音轉文本模型部署至Gradio交互界面:第一部分采用全上下文模式,即用戶完成整段錄音后才執行預測;第二部分將演示改造為流式處理模式,實現語音實時轉換功能。

20.3.1 環境準備和開發步驟

開始之前,先準備環境,比如安裝gradio、Transformers及ffmpeg等python包,再按照應用開發步驟進行實戰。

1. 環境準備

請確保已安裝gradio的Python包,同時本教程需要預訓練語音識別模型支持,我們還需要以下兩個ASR庫構建演示系統:Transformers(安裝命令:pip install torch transformers torchaudio),我們使用Transformers中Whisper模型實現語音識別;FFmpeg處理麥克風輸入文件,因為Transformers會自動安裝ffmpeg,所以建議至少安裝其中一個庫以便跟進教程。FFmpeg是領先的多媒體框架,能夠解碼、編碼、轉碼、復用、解復用、流式傳輸、過濾及播放幾乎所有人類與機器創建的媒體內容。該框架支持從最冷門的古老格式到最前沿的技術標準——無論這些格式是由標準委員會、開源社區還是商業公司設計,詳細信息請參閱:FFmpeg。

2. ASR應用開發步驟(基于Transformers)

實時語音識別(ASR)應用開發步驟全部基于Transformers,具體步驟如下:

  1. 配置ASR模型環境;
  2. 構建全上下文ASR演示系統;
  3. 構建流式ASR演示系統。

20.3.2 配置ASR模型

首先,需要準備一個ASR模型——可以是自行訓練的模型,或是下載預訓練模型。本教程將使用Whisper的預訓練ASR模型作為示例,以下是加載Hugging Face Transformers中Whisper模型的代碼:

from transformers import pipelinepl = pipeline("automatic-speech-recognition", model="openai/whisper-base.en")

配置完成!

20.3.3 構建全上下文ASR演示系統

然后,創建全上下文ASR演示,即用戶需完整錄制音頻后,系統才會調用ASR模型進行推理。利用Gradio實現這一功能非常簡單——只需基于上述pipeline對象創建處理函數即可。

具體實現將采用Gradio內置的Audio組件:輸入組件將接收用戶麥克風輸入并返回錄音文件路徑,輸出組件將使用標準Textbox組件顯示識別結果。代碼如下:

import gradio as gr
from transformers import pipeline
import numpy as nptranscriber = pipeline("automatic-speech-recognition", model="openai/whisper-base.en")def transcribe(audio):sr, y = audio# Convert to mono if stereoif y.ndim > 1:y = y.mean(axis=1)y = y.astype(np.float32)y /= np.max(np.abs(y))return transcriber({"sampling_rate": sr, "raw": y})["text"]  demo = gr.Interface(transcribe,gr.Audio(sources="microphone"),"text",
)
demo.launch()

transcribe函數接受單一參數audio,這是一個用戶錄制的音頻numpy數組。管道對象期望音頻為float32格式,因此我們首先將其轉換為float32,然后使用transcriber提取轉錄文本。

此程序在Hugging Face的地址為:gradio/asr,演示截圖如下:
在這里插入圖片描述

20.3.4 構建流式ASR演示系統

要實現流式處理,需進行以下配置調整:

  1. 在Audio組件中設置streaming=True以支持流式傳輸;
  2. 在Interface中啟用live=True參數以支持實時傳輸;
  3. 添加狀態存儲機制state以保存用戶音頻流。

具體實現代碼如下:

import gradio as gr
from transformers import pipeline
import numpy as nptranscriber = pipeline("automatic-speech-recognition", model="openai/whisper-base.en")
def transcribe(stream, new_chunk):sr, y = new_chunk# Convert to mono if stereoif y.ndim > 1:y = y.mean(axis=1)y = y.astype(np.float32)y /= np.max(np.abs(y))if stream is not None:stream = np.concatenate([stream, y])else:stream = yreturn stream, transcriber({"sampling_rate": sr, "raw": stream})["text"]  demo = gr.Interface(transcribe,["state", gr.Audio(sources=["microphone"], streaming=True)],["state", "text"],live=True,
)
demo.launch()

請注意,我們現在有一個狀態變量,因為我們需要跟蹤所有音頻歷史。隨著接口運行,每次有新的小段音頻時,transcribe函數將會被調用,在狀態中跟蹤迄今為止所有的音頻記錄并將新音頻片段作為new_chunk;new_chunk經過處理后,將返回新的完整音頻并存儲回當前狀態,同時也返回轉錄文本。整個過程中,我們只需要簡單地將音頻拼接在一起,并對整個音頻調用轉錄器對象;也可以優化為其它更有效率的處理方式,比如每次接收到新音頻片段時,僅重新處理最后5秒的音頻。

現在,ASR模型將在用戶說話時進行推理!注意在進度條開始后錄音,運行截圖如下:
在這里插入圖片描述

參考文獻:

  1. Streaming AI Generated Audio
  2. Run Inference on servers
  3. Spaces ZeroGPU: Dynamic GPU Allocation for Spaces

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

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

相關文章

使用xlwings將兩張順序錯亂的表格進行數據核對

有如下一個excel表,姓名列的內容相同,順序不同;月薪有部分內容不同。 目的:要找出哪幾條月薪不同。 通常的做法,要使用excel的高級篩選。 在此,使用xlwings實現,在不同的內容上涂色。 代碼如…

2025大模型安全研究十大框架合集(10份)

2025大模型安全研究十大框架合集的詳細介紹: Anthropic AI信任研究框架 Anthropic于2024年10月更新的《安全責任擴展政策》(RSP),提出了一個靈活的動態AI風險治理框架。該框架規定當AI模型達到特定能力時,將自動升級安全措施,如…

Qt/C++開發監控GB28181系統/云臺控制/獲取預置位信息/添加刪除調用預置位

一、前言 之前用onvif已經完美實現了設備的云臺控制和預置位的功能,這個基礎功能在監控系統中是使用頻率很高的,所有gb28181肯定也提供了這樣的功能,很多人以為是通過包含xml數據,對應節點指定對應的動作來實現,其實不…

第T8周:貓狗識別

● 語言環境:Python3.8.8 ● 編譯器:Jupyter Lab ● 深度學習環境:TensorFlow2.4.1 貓狗識別 一、前期工作1. 設置GPU 二、數據預處理1. 加載數據2.再次檢查數據3.配置數據集 三、構建VG-16網絡四、編譯五、訓練模型六、模型評估七、預測八、…

主流微前端框架比較

主流微前端框架比較 以下表格列出了當前主流微前端框架的核心對比信息,包括基本介紹、核心特性、適用場景、技術棧兼容性、優缺點、社區維護情況和典型應用案例等: 框架基本介紹核心特性與機制適用場景技術棧兼容性優缺點社區維護情況典型應用案例qiankun螞蟻金服推出的生產…

大學生入學審核系統設計與實現【基于SpringBoot + Vue 前后端分離技術】

一、項目概述 1.1 項目背景 隨著高校的不斷擴招,傳統的入學審核管理模式已不能滿足大規模學生數據的處理需求。人工管理不僅效率低下,還容易出現疏漏。本系統通過信息化手段,提升入學審核過程中的數據管理和審批效率。 1.2 系統目標 系統…

云計算-容器云-服務網格Bookinfo

服務網格:創建 Ingress Gateway 將 Bookinfo 應用部署到 default 命名空間下,請為 Bookinfo 應用創建一個網 關,使外部可以訪問 Bookinfo 應用。 上傳ServiceMesh.tar.gz包 [rootk8s-master-node1 ~]# tar -zxvf ServiceMesh.tar.gz [rootk…

Spring 分批處理 + 冷熱數據分離:歷史訂單高效遷移與數據清理實戰

在實際業務中,隨著時間推移,訂單量持續增長,若未及時進行數據治理,會造成數據庫膨脹、查詢緩慢、性能下降等問題。為了實現數據分層管理和系統高性能運行,我們在項目中采用了“冷熱數據分離 分批遷移 數據清理”的綜…

新手SEO優化核心步驟

內容概要 對于SEO新手而言,建立系統化的優化框架是突破入門瓶頸的關鍵。SEO的核心在于通過技術手段與內容策略的結合,提升網站在搜索引擎中的可見性與用戶價值。具體而言,新手需優先掌握關鍵詞研究,明確目標用戶的搜索意圖&#…

C++ 之 【list的簡介、list 的構造函數、iterator、容量操作、元素訪問、增刪查改與迭代器失效】

目錄 1.list的介紹 2.list的使用 2.1 構造函數 2.2 iterator 的使用 2.3 容量操作 2.4 元素訪問 2.5 增刪查改 2.5.1頭插頭刪與尾插尾刪 2.5.2 insert 、erase 函數 2.5.3 clear、swap函數 2.5.4 關于find函數 3.迭代器失效 1.list的介紹 (1)list的底層通常實現為帶…

Laravel Octane 項目加速與靜態資源優化指南

Laravel Octane 項目加速與靜態資源優化指南 一、Octane 核心加速配置 擴展安裝與環境配置 composer require laravel/octane # 安裝核心擴展?php artisan octane:install # 生成配置文件(選擇 Swoole/RoadRunner 等服務器)?服務器參數調優? …

高露潔牙膏是哪個國家的品牌?高露潔牙膏哪一款最好?

高露潔是來自于美國一個比較有知名度的品牌,在1806年的時候創立。總部是在美國紐約公園大道,在1873年時,高露潔就已經開始銷售罐裝牙膏。 在1896年時期推出可折疊管牙膏,在口腔護理產品發展的過程中擁有著不容忽視的地位。在1992…

【Python爬蟲詳解】第八篇:突破反爬體系的工程實踐

當矛與盾的較量進入白熱化,突破反爬需要的不只是技巧,更是一套完整的工程化解決方案——本文將揭示對抗現代反爬體系的九大核心戰術。 一、JavaScript混淆的深度破解 1. AST(抽象語法樹)解混淆 案例:某電商平臺商品價…

【Linux調整FTP端口】

Linux調整FTP端口 一、確保新端口未被占用在修改端口之前,可以使用以下命令檢查端口是否被占用: 二、修改vsftpd配置文件1. 打開vsftpd配置文件2. 找到并修改端口配置3. 保存并退出4. 重啟vsftpd服務 三、配置防火墻 在Linux系統中修改FTP端口&#xff0…

npm打包內存不足- JavaScript heap out of memory

直接貼出報錯信息 <--- Last few GCs --->[30904:0000010F60FE58E0] 22090 ms: Scavenge 2037.4 (2069.4) -> 2036.4 (2074.2) MB, 2.5 / 0.0 ms (average mu 0.228, current mu 0.216) allocation failure [30904:0000010F60FE58E0] 22101 ms: Scavenge 2…

AI大語言模型破譯“未知未知”的密鑰:開源情報、被動收入與智能體協作的深層機理與實踐

在人類認識世界的漫長征程中&#xff0c;信息與知識的獲取和運用一直是核心驅動力。我們從“一無所知”的狀態&#xff0c;逐漸積累“已知已知”&#xff0c;并在此基礎上識別“已知未知”&#xff0c;設定目標去探索解答。然而&#xff0c;真正能夠帶來范式轉變、顛覆現有格局…

kubelet 清理資源以緩解磁盤壓力

kubelet 資源清理緩解磁盤壓力指南 在 Kubernetes 集群中&#xff0c;當節點磁盤壓力過大時&#xff0c;可通過以下幾種方式利用 kubelet 清理資源&#xff0c;從而緩解磁盤壓力。 一、鏡像垃圾回收 自動回收 kubelet 內置了鏡像垃圾回收機制&#xff0c;其行為由配置參數控…

SPOJ 11576 TRIP2 - A Famous King’s Trip 【Tarjan+歐拉回路】

自我吐槽 &#xff08;哭 題目傳送門 SPOJ 洛谷 題目大意 讓你在簡單無向圖上刪去2條邊&#xff0c;使該圖聯通并存在歐拉回路 輸出字典序最小的一對邊 思路 考慮到存在歐拉回路的充要條件&#xff0c;即 i n x ≡ 0 ( m o d 2 ) ? i ( 1 ≤ i ≤ n ) in_x\equiv 0 (\m…

藏文情感分析器入門學習實踐

&#x1f3af; 項目目標&#xff1a; 輸入一段藏文短句。自動分析這句話的情感傾向&#xff1a;積極&#xff08;正面&#xff09;/消極&#xff08;負面&#xff09;/中立。 &#x1f50d; 技術原理簡介 情感分析是什么&#xff1f; 情感分析&#xff08;Sentiment Analysi…

雙指針(5)——有效三角形個數

題目&#xff1a; 這道題我們首先可能會想到暴力解法&#xff0c;三個for循環然后進行check&#xff08;&#xff09;。時間復雜度肯定是不允許的。 同時&#xff0c;驗證可以組成三角形的條件是任意兩邊之和大于第三邊&#xff0c;這就意味著我們每組要進行三次比較。但也有捷…