使用 FunASR 工具包實現音頻文件的語音識別

使用 FunASR 工具包實現音頻文件的語音識別,并將識別結果保存為文本文件,支持單文件處理和批量處理。電腦環境需要配置,我使用的PyTorch版本: 2.4.1+cu121,CUDA可用: True。

FunASR 是一個功能強大、性能卓越、面向工業應用的語音識別開源項目。?? 它憑借其非自回歸的 Paraformer 模型提供了極快的推理速度。如果您正在尋找一個能夠進行高性能、低延遲、離線部署的中文(也支持英文和多語言)語音識別解決方案,FunASR 是一個非常好的選擇。

主要流程

  • 1、創建識別器實例,加載預訓練的語音識別模型,并自動選擇運行設備(GPU 優先)。
class FunASRRecognizer:def __init__(self):# 打印環境信息print(f"PyTorch版本: {torch.__version__}")print(f"CUDA可用: {torch.cuda.is_available()}")# 加載模型(指定預訓練模型和運行設備)self.model = AutoModel(model="iic/speech_paraformer-large-vad-punc_asr_nat-zh-cn-16k-common-vocab8404-pytorch",device="cuda" if torch.cuda.is_available() else "cpu")
  • 2、接收音頻文件路徑,調用模型進行語音識別,返回識別結果。
def recognize_audio(self, audio_path):try:# 調用模型生成識別結果(核心識別邏輯)result = self.model.generate(input=audio_path)return resultexcept Exception as e:print(f"識別錯誤: {e}")return None
  • 3、將識別結果提取為文本,保存到指定目錄的 TXT 文件中(文件名與音頻文件對應)。
def save_result_to_txt(self, audio_path, result):# 提取音頻文件名(不含擴展名)audio_name = Path(audio_path).stemtxt_path = f"res2/{audio_name}.txt"  # 保存路徑# 提取文本內容(處理模型返回的結果格式)if isinstance(result, list) and len(result) > 0:text = result[0].get('text', '')else:text = str(result)# 寫入文件with open(txt_path, 'w', encoding='utf-8') as f:f.write(text)return txt_path
  • 4、整合 “識別” 與 “保存” 步驟,檢查文件存在性,輸出處理狀態。
def process_single_audio(self, audio_path):# 檢查文件是否存在if not os.path.exists(audio_path):print(f"音頻文件不存在: {audio_path}")return False# 調用識別方法result = self.recognize_audio(audio_path)# 若識別成功,保存結果并打印if result:self.save_result_to_txt(audio_path, result)print(f"識別文本: {result[0].get('text', '')}")return Trueelse:print("識別失敗")return False
  • 5、批量文件處理,掃描指定文件夾中的所有音頻文件(支持多種格式),逐個調用單文件處理邏輯。
def process_multiple_audios(self, audio_folder, extensions=['.mp3', '.wav', '.flac', '.m4a']):# 檢查文件夾存在性if not os.path.exists(audio_folder):print(f"文件夾不存在: {audio_folder}")return# 收集所有指定格式的音頻文件(含大小寫擴展名)audio_files = []for ext in extensions:audio_files.extend(Path(audio_folder).glob(f"*{ext}"))audio_files.extend(Path(audio_folder).glob(f"*{ext.upper()}"))# 逐個處理音頻文件并統計成功數量success_count = 0for audio_file in audio_files:if self.process_single_audio(str(audio_file)):success_count += 1print(f"處理完成!成功: {success_count}/{len(audio_files)}")

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

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

相關文章

【STM32】定時器編碼器接口

【STM32】定時器編碼器接口一、編碼器接口1.1 正交編碼器1.2 編碼器接口基本結構1.3 工作模式二、編碼器接口測速一、編碼器接口 編碼器接口可接收增量(正交)編碼器的信號,根據編碼器旋轉產生的正交信號脈沖,自動控制CNT的自增或…

浪潮科技Java開發面試題及參考答案(120道題-中)

請介紹一下 SpringMVC 的運行流程?從用戶發送請求到響應返回的完整步驟是什么?SpringMVC 是基于MVC架構的Web框架,其運行流程圍繞“前端控制器(DispatcherServlet)”展開,通過多個組件協同工作,…

k8s初始化常見問題

執行初始化:kubeadm init --apiserver-advertise-address192.168.88.110 --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr10.244.0.0/16 --control-plane-endpointweb01報錯信息:age-repository registry.aliyuncs.com/…

Python學習筆記--使用Django修改和刪除數據

一、修改方式一:模型類的對象.屬性 更改的屬性值,模型類的對象.save()返回值:編輯的模型類的對象。def update_book(request):book models.Book.objects.filter(pk1).first()book.price "169"book.save()return HttpResponse(bo…

如何評價2025年數學建模國賽?

2025年全國大學生數學建模競賽將于9月4日正式舉行! 有些第一次參加數學競賽的同學可能覺得自己還沒準備好,臨近比賽感到緊張很正常,但需調整心態——數學建模比賽本就是學習過程,遇到不會的知識及時搜索、現學現用即可&#xff0…

uniapp [全端兼容] - 實現全景圖Vr 720°全景效果查看預覽功能,3D全景圖流暢不卡頓渲染+手勢拖拽+懸浮工具按鈕,uniAPP實現vr看720度全景效果示例代碼(H5小程序APP全兼容)

前言 如果您需要 Vue 版本,請訪問 這篇文章。 在 uni-app 全平臺兼容(H5網頁網站、支付寶/微信小程序、安卓App、蘋果App、nvue)開發中,詳細實現全景圖Vr 720全景查看+用戶可流暢拖動預覽+自定義工具欄/按鈕元素等,uniApp如何實現在線觀看720度全景圖,適用于全景圖VR看房…

51單片機-實現串口模塊教程

本章概述思維導圖:51單片機實現串口模塊教程通信基本概念通信,至少是需要兩個對象,一個收一個發數據。根據數據通信的傳輸時序協調方式,可分為:同步通信和異步通信;根據數據通信的傳輸線路可分為&#xff1…

Linux echo 命令使用說明

echo 命令使用說明(Linux) 適用環境 Bash/Zsh 等常見 Shell(echo 通常為內建命令)也可能存在外部 /bin/echo(行為與內建略有差異) 基本語法 echo [選項] [字符串...]常用選項 -n: 結尾不輸出換行-e: 解析反…

Java搭建高效后端,Vue打造友好前端,聯合構建電子采購管理系統,實現采購流程電子化、自動化,涵蓋采購全周期管理,功能完備,附詳細可運行源碼

前言:在當今數字化浪潮席卷的時代,企業的采購管理面臨著前所未有的挑戰與機遇。傳統采購模式因流程繁瑣、效率低下、信息不透明等問題,已難以滿足企業快速發展的需求。電子采購管理系統作為一種創新的采購解決方案,借助先進的信息…

應用開發使用緩存

在 Java 開發的典型架構(結合前端、后端、MyBatis、MySQL 及緩存機制)中,緩存層次可以從前端到后端再到數據庫進行劃分,通常涉及以下多層緩存:1. 前端緩存瀏覽器緩存:瀏覽器自帶的緩存機制(如 H…

leetcode算法刷題的第二十六天

今天主要是要用貪心算法來解決重置區間的問題。 1.leetcode 452.用最少數量的箭引爆氣球 題目鏈接 class Solution { public:static bool cmp(const vector<int>& a,const vector<int>& b){return a[0]<b[0];}int findMinArrowShots(vector<vecto…

BlueZ 學習之GATT Server開發

Linux下&#xff0c;使用C語言開發一個簡單的GATT Server&#xff0c;我的Ubuntu上跑的BlueZ版本是5.79&#xff0c;使用的GLib庫版本是2.85.2&#xff0c;這里我直接使用GLib里的D?Bus來實現與BlueZ通信。BlueZ 官方推薦通過 D-Bus 進行通信和控制&#xff0c;如果是要使用原…

【Linux基礎】Linux文件系統深度解析:EXT4與XFS技術詳解與應用

目錄 引言 1 Linux文件系統概述 1.1 文件系統的基本概念 1.2 日志文件系統的概念 2 EXT4文件系統詳解 2.1 EXT4概述 2.2 EXT4的磁盤結構 2.3 EXT4的inode結構 2.4 EXT4的新特性 2.4.1 Extents 2.4.2 延遲分配 2.4.3 快速文件系統檢查 2.5 EXT4的性能特點 3 XFS文…

埃文科技榮獲2025年“數據要素×”大賽河南分賽二等獎

2025年8月19日&#xff0c;2025年“數據要素”大賽河南分賽決賽在鄭州舉行&#xff0c;本屆河南分賽聚焦數據價值賦能。鄭州埃文科技有限公司&#xff08;以下簡稱“埃文科技”&#xff09;憑借其前沿成果“IP地址高精度地理定位及應用場景劃分數據集”&#xff0c;從500多支參…

鏈上迷局:區塊鏈技術的法律暗礁與合規導航

高鵬律師首席數據官&#xff0c;數字經濟團隊創作AI輔助區塊鏈&#xff0c;這個被譽為“信任機器”的技術&#xff0c;正以顛覆性的力量重塑數字經濟的底層邏輯。從比特幣的橫空出世到NFT的全民狂歡&#xff0c;從DeFi的金融革命到DAO的組織重構&#xff0c;技術永不眠&#xf…

線性代數基礎 | 基底 / 矩陣 / 行列式 / 秩 / 線性方程組

注&#xff1a;本文為 “線性代數基礎 ” 相關合輯。 略作重排&#xff0c;未作全校。 如有內容異常&#xff0c;請看原文。 線性代數的本質&#xff08;1&#xff09;——基底、向量、線性變換、逆陣、行列式 野指針小李于 2020-08-13 16:34:45 發布 零、基底 在展開后續內…

GORM.io詳細指南

GORM.io 詳細指南 GORM&#xff08;全稱 Go ORM&#xff09;是一個功能豐富的 ORM&#xff08;Object-Relational Mapping&#xff09;庫&#xff0c;用于 Go 語言。它簡化了數據庫操作&#xff0c;將 SQL 查詢映射到 Go 結構體&#xff0c;支持多種數據庫后端。GORM 的設計理念…

【Flask】測試平臺開發,應用管理模塊實現-第十一篇

概述通過Element UI抽屜和表單校驗&增改接口合并實現應用管理Drawer 抽屜之前產品修改和添加是使用Dialog組件實現的&#xff0c;但這個組件有時候并不滿足我們的需求, 比如表單很長, 亦或是你需要臨時展示一些文檔, Drawer 是可以從側面彈出的一個層&#xff0c;可以容納更…

Elasticsearch 深分頁限制與解決方案

最近在準備面試&#xff0c;正把平時積累的筆記、項目中遇到的問題與解決方案、對核心原理的理解&#xff0c;以及高頻業務場景的應對策略系統梳理一遍&#xff0c;既能加深記憶&#xff0c;也能讓知識體系更扎實&#xff0c;供大家參考&#xff0c;歡迎討論。在項目中遇到一個…

基于偏最小二乘法PLS多輸入單輸出的回歸預測【MATLAB】

基于偏最小二乘法&#xff08;PLS&#xff09;多輸入單輸出的回歸預測【MATLAB】 在科學研究和工程實踐中&#xff0c;我們常常需要根據多個相關變量來預測一個關鍵結果。例如&#xff0c;根據氣溫、濕度、風速等多個氣象因素預測空氣質量指數&#xff0c;或根據多種原材料成分…