FunASR簡介
????????FunASR是由阿里巴巴達摩院開源的語音識別工具包,提供包括語音識別(ASR)、語音活動檢測(VAD)、標點恢復、語言模型、說話人驗證、說話人分離及多說話人ASR等多種功能。FunASR工具包支持工業級語音識別模型的訓練和微調,旨在幫助研究人員和開發者更高效地進行語音識別模型的研究和生產,推動語音識別技術的發展。FunASR基于提供預訓練模型和易于使用的接口,使用戶快速部署語音識別服務,滿足不同場景的應用需求。2024年10月16日,FunASR新增支持Whisper-large-v3-turbo模型,進一步擴展在語音識別領域的應用能力。
- 語音識別(ASR):將語音信號轉換為文本信息。
- 語音活動檢測(VAD):識別語音信號中的有效語音部分,過濾掉靜音或背景噪音。
- 標點恢復:在語音識別結果中自動添加標點符號,提高文本的可讀性。
- 說話人驗證:識別并驗證說話人的身份。
- 說話人分離:在多人對話中區分不同說話人的聲音。
- 多說話人ASR:處理多人同時說話的場景,識別和區分每個人的語音。
FunASR的技術原理
- 自然語言處理(NLP):理解和生成自然語言,實現流暢對話。
- 語音識別和合成:將用戶的語音轉換為文本,合成虛擬角色的語音輸出。
- 語音端點檢測(VAD):基于FSMN-VAD模型,準確檢測語音的起始和結束,提高語音識別的準確性。
- 標點預測:集成標點預測模型,能在轉錄文本中自動添加標點符號,使轉錄結果更加符合閱讀習慣,提升文本的可讀性。
FunASR的項目地址
- 項目官網:funasr.com
- GitHub倉庫:GitHub - modelscope/FunASR: A Fundamental End-to-End Speech Recognition Toolkit and Open Source SOTA Pretrained Models, Supporting Speech Recognition, Voice Activity Detection, Text Post-processing etc.
代碼實現
在項目中主要使用的是speech_seaco_paraformer這個音轉文模型。
import json
import time
from funasr import AutoModel
# 計時開始
start_time = time.time()
# 初始化模型 - 使用支持熱詞的新模型
model = AutoModel(# model="iic/speech_paraformer-large-vad-punc-spk_asr_nat-zh-cn",model="iic/speech_seaco_paraformer_large_asr_nat-zh-cn-16k-common-vocab8404-pytorch",vad_model="iic/speech_fsmn_vad_zh-cn-16k-common-pytorch",punc_model="iic/punc_ct-transformer_zh-cn-common-vocab272727-pytorch",spk_model="iic/speech_campplus_sv_zh-cn_16k-common",vad_kwargs={"max_single_segment_time": 1000}
)
# 生成語音識別結果
res = model.generate(input="音頻文件.wav",merge_vad=False,
)# 提取所需字段
simplified_result = []
durations = [] # 用于存儲每段的時間長度
print('總音頻',res[0]['text'])#以下代碼可以獲取生成時間,需要輸出時間的情況。
#for i,segment in enumerate(res):
# segmentText = res[0]['text']
# # print(self.device_clerk,i,"[%.2fs -> %.2fs] %s" % #(segment.start, segment.end, segmentText))
# print(f"{self.device_clerk} {i} [{segment.get('start', 0):.2f}s #-> {segment.get('end', 0):.2f}s] {segmentText}")
Faster_whisper
faster-whisper是基于OpenAI的Whisper模型的高效實現,它利用CTranslate2,一個專為Transformer模型設計的快速推理引擎。這種實現不僅提高了語音識別的速度,還優化了內存使用效率。faster-whisper的核心優勢在于其能夠在保持原有模型準確度的同時,大幅提升處理速度,這使得它在處理大規模語音數據時更加高效。
代碼實現
具體的調用代碼:
from faster_whisper import WhisperModelmodel = WhisperModel(model_path, device="cuda", device_index=[cuda_index], compute_type="float16")segments, info = self.model.transcribe(audio_file, language="zh",vad_filter=True) for i,segment in enumerate(res):segmentText = res[0]['text']print(self.device_clerk,i,"[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segmentText))
結論
模型經過對比
FunASR的速度要比Faster_whisper要快,并且FunASR是中文模型,使用的是中文數據進行訓練,并且支持添加標點符號模型、語句中斷模型等。
如果你需要中文音轉文,那么FunASR的speech_seaco_paraformer是優先考慮模型。