モデル概要
モデル特徴
モデル能力
使用事例
🚀 Moonshine
Moonshineは、低コストハードウェアに基づくリアルタイム音声文字起こし製品の開発を目的として開発された、自動音声認識(ASR)モデルです。このモデルは、英語の音声を文字に起こすことができ、Hugging Face 🤗 Transformersでサポートされています。
🚀 クイックスタート
Moonshineを使用するには、まずTransformersライブラリをインストールする必要があります。以下のコマンドを使用して、必要なライブラリをインストールしましょう。
pip install --upgrade pip
pip install --upgrade transformers datasets[audio]
次に、以下のPythonコードを使用して、モデルを実行します。
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)
# 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))
✨ 主な機能
- 音声認識:英語の音声を文字に起こすことができます。
- 低コストハードウェア対応:低コストのハードウェアでも実行可能です。
- Hugging Face 🤗 Transformersサポート:Hugging Face 🤗 Transformersでサポートされています。
📦 インストール
Moonshineを使用するには、まずTransformersライブラリをインストールする必要があります。以下のコマンドを使用して、必要なライブラリをインストールしましょう。
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)
# 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モデルは、音声認識タスク用にトレーニングされており、英語の音声を英語のテキストに起こすことができます。以下は、異なるサイズと機能の2つのモデルの概要です。
サイズ | パラメータ数 | 英語専用モデル | 多言語モデル |
---|---|---|---|
tiny | 27 M | ✓ | |
base | 61 M | ✓ |
リリース日
2024年10月
モデルの種類
シーケンス-to-シーケンスのASR(自動音声認識)および音声翻訳モデル
論文とサンプル
モデルの使用
評価された使用法
これらのモデルの主な対象ユーザーは、メモリ容量と計算リソースが厳しく制限されたプラットフォームに英語音声認識システムを展開したいAI開発者です。モデルがリリースされた後は、「意図された」使用法のみにアクセスを制限することや、安全な使用法とそうでない使用法の合理的なガイドラインを定めることは不可能であることを認識しています。
モデルは主に英語のASRタスクでトレーニングおよび評価されています。音声アクティビティ検出、話者分類、または話者分離などの特定のタスクで微調整すると、追加の機能が発揮される可能性がありますが、これらの領域では十分に評価されていません。ユーザーは、モデルを特定のコンテキストやドメインで展開する前に、モデルの堅牢な評価を行うことを強くお勧めします。
特に、ユーザーの同意なしに録音された個人の音声をMoonshineモデルで起こすことや、これらのモデルを何らかの主観的な分類に使用することは避けてください。精度の欠陥が結果に大きな欠陥を引き起こす可能性のある高リスクのドメインでの使用はお勧めしません。モデルは英語の音声を起こすことを目的としており、分類に使用することは評価されておらず、特に人間の属性を推測するために使用することは適切ではありません。
トレーニングデータ
モデルは、インターネットから収集された200,000時間の音声とそれに対応する文字起こし、およびHuggingFaceで公開されているデータセットを使用してトレーニングされています。使用されたオープンデータセットは、付随する論文に記載されています。
性能と制限
評価の結果、これらのモデルは同サイズの既存のASRシステムよりも標準データセットで高い精度を示しています。
ただし、他の機械学習モデルと同様に、予測結果には実際に音声入力に含まれていないテキスト(幻覚)が含まれる可能性があります。これは、モデルが言語の一般知識を持っているため、音声の次の単語を予測することと、音声自体を文字起こしすることを同時に試みるために起こると考えられています。
また、モデルのシーケンス-to-シーケンスアーキテクチャのため、繰り返しのテキストが生成されやすくなっています。これはビームサーチや温度スケジューリングによってある程度軽減できますが、完全に解消することはできません。この挙動や幻覚は、短い音声セグメントや、セグメントの始めや終わりで単語の一部が切り取られているセグメントではさらに悪化する可能性があります。
広範な影響
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ライセンスの下で公開されています。



