模型概述
模型特點
模型能力
使用案例
🚀 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-tiny').to(device).to(torch_dtype)
processor = AutoProcessor.from_pretrained('UsefulSensors/moonshine-tiny')
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)
# to avoid hallucination loops, we limit the maximum length of the generated text based expected number of tokens per second
token_limit_factor = 6.5 / processor.feature_extractor.sampling_rate # Maximum of 6.5 tokens per second
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))
✨ 主要特性
- 模型規格多樣:有不同大小和能力的 2 種模型,可滿足不同場景需求。
- 高精度識別:在標準數據集上的準確率優於同類大小的現有 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-tiny').to(device).to(torch_dtype)
processor = AutoProcessor.from_pretrained('UsefulSensors/moonshine-tiny')
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)
# to avoid hallucination loops, we limit the maximum length of the generated text based expected number of tokens per second
token_limit_factor = 6.5 / processor.feature_extractor.sampling_rate # Maximum of 6.5 tokens per second
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 模型專為語音識別任務而訓練,能夠將英語語音音頻轉錄為英文文本。該模型由 Useful Sensors 開發,以支持其基於低成本硬件開發即時語音轉錄產品的業務方向。有 2 種不同大小和能力的模型,具體信息如下表所示:
大小 | 參數數量 | 僅支持英語的模型 | 多語言模型 |
---|---|---|---|
tiny | 27 M | ✓ | |
base | 61 M | ✓ |
發佈日期
2024 年 10 月
模型類型
序列到序列的自動語音識別(ASR)和語音翻譯模型
論文與示例
模型使用
評估用途
這些模型的主要目標用戶是希望在內存容量和計算資源嚴重受限的平臺上部署英語語音識別系統的 AI 開發人員。我們認識到,一旦模型發佈,就不可能將其訪問限制在“預期”用途上,也難以圍繞什麼是安全使用、什麼不是安全使用制定合理的指導方針。
這些模型主要在英語 ASR 任務上進行訓練和評估。它們可能具有其他功能,特別是在針對某些任務(如語音活動檢測、說話人分類或說話人分割)進行微調時,但在這些領域尚未進行全面評估。我們強烈建議用戶在特定上下文和領域中對模型進行全面評估後再進行部署。
特別要注意的是,我們警告不要使用 Moonshine 模型在未經個人同意的情況下轉錄其錄音,或聲稱使用這些模型進行任何形式的主觀分類。我們不建議在高風險領域(如決策場景)中使用該模型,因為準確性的缺陷可能導致結果出現明顯偏差。這些模型旨在轉錄英語語音,將其用於分類不僅未經過評估,而且不合適,特別是用於推斷人類屬性時。
訓練數據
這些模型在從互聯網收集的 200,000 小時音頻及其相應轉錄文本,以及 HuggingFace 上公開可用的數據集上進行訓練。所使用的開放數據集在隨附論文中列出。
性能與侷限性
我們的評估表明,這些模型在標準數據集上的準確率優於同類大小的現有 ASR 系統。
然而,像任何機器學習模型一樣,預測結果可能包含音頻輸入中實際未說出的文本(即幻覺)。我們假設這是因為模型基於其對語言的一般知識,在嘗試預測音頻中的下一個單詞時,會與嘗試轉錄音頻本身相結合。
此外,模型的序列到序列架構使其容易生成重複文本,儘管可以通過束搜索和溫度調度在一定程度上緩解,但無法完全消除。對於短音頻片段,或片段開頭或結尾部分單詞被截斷的情況,這種行為和幻覺可能會更嚴重。
更廣泛的影響
我們預計 Moonshine 模型的轉錄能力可用於改進輔助工具,特別是即時轉錄。基於 Moonshine 模型構建的有益應用的實際價值表明,這些模型的不同性能可能會產生實際的經濟影響。
發佈 Moonshine 也存在潛在的雙重用途問題。雖然我們希望該技術主要用於有益目的,但使 ASR 技術更易於獲取可能會使更多參與者能夠構建強大的監控技術,或擴大現有監控工作的規模,因為其速度和準確性允許對大量音頻通信進行經濟實惠的自動轉錄和翻譯。此外,這些模型可能具有一些直接識別特定個人的能力,這反過來又帶來了與雙重用途和不同性能相關的安全問題。實際上,我們預計轉錄成本不是擴大監控項目的限制因素。
引用
如果您從我們的工作中受益,請引用我們:
@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},
}
📄 許可證
本項目採用 MIT 許可證。



