模型概述
模型特點
模型能力
使用案例
🚀 Moonshine
Moonshine是由有用傳感器公司(Useful Sensors)訓練併發布的自動語音識別(ASR)模型。它能夠將英語語音音頻轉錄為英文文本,適用於對內存容量和計算資源要求苛刻的平臺,助力開發者部署英語語音識別系統。
🚀 快速開始
Moonshine模型在Hugging Face 🤗 Transformers庫中得到支持。要運行該模型,首先需安裝Transformers庫。在本示例中,我們還將安裝 🤗 Datasets 以從Hugging Face Hub加載玩具音頻數據集,並安裝 🤗 Accelerate 以減少模型加載時間:
pip install --upgrade pip
pip install --upgrade transformers datasets[audio]
from transformers import MoonshineForConditionalGeneration, AutoProcessor
from datasets import load_dataset, Audio
import torch
device = "cuda:0" if torch.cuda.is_available() else "cpu"
torch_dtype = torch.float16 if torch.cuda.is_available() else torch.float32
model = MoonshineForConditionalGeneration.from_pretrained('UsefulSensors/moonshine-base').to(device).to(torch_dtype)
processor = AutoProcessor.from_pretrained('UsefulSensors/moonshine-base')
dataset = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
dataset = dataset.cast_column("audio", Audio(processor.feature_extractor.sampling_rate))
sample = dataset[0]["audio"]
inputs = processor(
sample["array"],
return_tensors="pt",
sampling_rate=processor.feature_extractor.sampling_rate
)
inputs = inputs.to(device, torch_dtype)
# 為避免幻覺循環,我們根據每秒預期的令牌數限制生成文本的最大長度
token_limit_factor = 6.5 / processor.feature_extractor.sampling_rate # 每秒最多6.5個令牌
seq_lens = inputs.attention_mask.sum(dim=-1)
max_length = int((seq_lens * token_limit_factor).max().item())
generated_ids = model.generate(**inputs, max_length=max_length)
print(processor.decode(generated_ids[0], skip_special_tokens=True))
✨ 主要特性
- 支持多平臺:可在內存容量和計算資源受限的平臺上運行。
- 高性能:在標準數據集上的準確率優於同規模的現有ASR系統。
📦 安裝指南
要運行Moonshine模型,需要安裝相關依賴庫。可以使用以下命令進行安裝:
pip install --upgrade pip
pip install --upgrade transformers datasets[audio]
💻 使用示例
基礎用法
from transformers import MoonshineForConditionalGeneration, AutoProcessor
from datasets import load_dataset, Audio
import torch
device = "cuda:0" if torch.cuda.is_available() else "cpu"
torch_dtype = torch.float16 if torch.cuda.is_available() else torch.float32
model = MoonshineForConditionalGeneration.from_pretrained('UsefulSensors/moonshine-base').to(device).to(torch_dtype)
processor = AutoProcessor.from_pretrained('UsefulSensors/moonshine-base')
dataset = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
dataset = dataset.cast_column("audio", Audio(processor.feature_extractor.sampling_rate))
sample = dataset[0]["audio"]
inputs = processor(
sample["array"],
return_tensors="pt",
sampling_rate=processor.feature_extractor.sampling_rate
)
inputs = inputs.to(device, torch_dtype)
# 為避免幻覺循環,我們根據每秒預期的令牌數限制生成文本的最大長度
token_limit_factor = 6.5 / processor.feature_extractor.sampling_rate # 每秒最多6.5個令牌
seq_lens = inputs.attention_mask.sum(dim=-1)
max_length = int((seq_lens * token_limit_factor).max().item())
generated_ids = model.generate(**inputs, max_length=max_length)
print(processor.decode(generated_ids[0], skip_special_tokens=True))
📚 詳細文檔
模型詳情
Moonshine模型專為語音識別任務而訓練,能夠將英語語音音頻轉錄為英文文本。有用傳感器公司開發這些模型是為了支持其基於低成本硬件開發即時語音轉錄產品的業務方向。目前有2種不同大小和能力的模型,總結如下表:
屬性 | 詳情 |
---|---|
模型類型 | 序列到序列的自動語音識別(ASR)和語音翻譯模型 |
訓練數據 | 模型在從互聯網收集的200,000小時音頻及相應的轉錄文本,以及HuggingFace上公開可用的數據集上進行訓練。具體使用的開放數據集列在隨附論文中。 |
大小 | 參數數量 | 僅英文模型 | 多語言模型 |
---|---|---|---|
tiny | 27 M | ✓ | |
base | 61 M | ✓ |
發佈日期
2024年10月
論文與示例
模型使用
評估使用
這些模型的主要目標用戶是希望在內存容量和計算資源嚴重受限的平臺上部署英語語音識別系統的AI開發者。我們認識到,一旦模型發佈,就不可能將其使用限制在“預期”用途範圍內,也難以制定合理的安全使用指南。
模型主要在英語ASR任務上進行訓練和評估。它們可能具備其他能力,特別是在針對某些任務(如語音活動檢測、說話人分類或說話人分割)進行微調時,但在這些領域尚未進行全面評估。我們強烈建議用戶在特定上下文和領域中對模型進行全面評估後再進行部署。
特別需要注意的是,我們警告不要使用Moonshine模型在未經個人同意的情況下轉錄其錄音,或聲稱使用這些模型進行任何形式的主觀分類。我們不建議在高風險領域(如決策場景)中使用該模型,因為準確性的缺陷可能導致結果出現明顯偏差。這些模型旨在轉錄英語語音,將其用於分類不僅未經過評估,而且不合適,特別是用於推斷人類屬性時。
性能與侷限性
我們的評估表明,該模型在標準數據集上的準確率優於同規模的現有ASR系統。
然而,像任何機器學習模型一樣,預測結果可能包含音頻輸入中實際未說出的文本(即幻覺)。我們推測這是因為模型基於其對語言的一般知識,在嘗試預測音頻中的下一個單詞時,會與嘗試轉錄音頻本身相結合。
此外,模型的序列到序列架構使其容易生成重複文本,雖然可以通過束搜索和溫度調度在一定程度上緩解,但無法完全消除。對於短音頻片段,或片段開頭或結尾部分單詞被截斷的情況,這種行為和幻覺現象可能會更嚴重。
更廣泛的影響
我們預計Moonshine模型的轉錄能力可用於改進輔助工具,特別是即時轉錄工具。基於Moonshine模型構建的有益應用的實際價值表明,這些模型的不同性能可能會產生實際的經濟影響。
發佈Moonshine模型也存在潛在的兩用問題。雖然我們希望該技術主要用於有益目的,但使ASR技術更易於獲取可能會使更多參與者能夠構建強大的監控技術或擴大現有監控工作,因為其速度和準確性允許對大量音頻通信進行經濟實惠的自動轉錄和翻譯。此外,這些模型可能具備直接識別特定個人的能力,這反過來又帶來了與兩用和不同性能相關的安全問題。實際上,我們預計轉錄成本不是擴大監控項目的限制因素。
🔧 技術細節
模型基於序列到序列的架構,能夠將輸入的語音序列轉換為文本序列。在訓練過程中,使用了大量的英語語音數據進行訓練,以提高模型的準確性和泛化能力。
📄 許可證
本項目採用MIT許可證。
📖 引用
如果您從我們的工作中受益,請引用我們:
@misc{jeffries2024moonshinespeechrecognitionlive,
title={Moonshine: Speech Recognition for Live Transcription and Voice Commands},
author={Nat Jeffries and Evan King and Manjunath Kudlur and Guy Nicholson and James Wang and Pete Warden},
year={2024},
eprint={2410.15608},
archivePrefix={arXiv},
primaryClass={cs.SD},
url={https://arxiv.org/abs/2410.15608},
}
⚠️ 重要提示
不要使用Moonshine模型在未經個人同意的情況下轉錄其錄音,或聲稱使用這些模型進行任何形式的主觀分類。不建議在高風險領域(如決策場景)中使用該模型。
💡 使用建議
在特定上下文和領域中對模型進行全面評估後再進行部署。對於短音頻片段或部分單詞被截斷的情況,需注意可能出現的幻覺和重複文本問題。



