🚀 AST 偽音声検出用ファインチューニング済みモデル
このモデルは、MIT/ast-finetuned-audioset-10-10-0.4593 をベースに、偽音声/合成音声を検出するためにファインチューニングされた二値分類ヘッド付きのモデルです。元の AST (Audio Spectrogram Transformer) の分類ヘッドは、偽音声検出に最適化された二値分類レイヤーに置き換えられています。
✨ 主な機能
- 音声データを用いた偽音声検出が可能です。
- 高精度な分類性能を持ち、複数の評価指標で良好な結果を示します。
📦 モデル情報
属性 |
詳情 |
モデルタイプ |
音声分類 |
ベースモデル |
MIT/ast-finetuned-audioset-10-10-0.4593 (AudioSetで事前学習されたAST) |
タスク |
二値分類 (偽音声/本物音声検出) |
入力 |
メルスペクトログラムに変換された音声 (128メルビン、1024タイムフレーム) |
出力 |
確率 [偽音声確率, 本物音声確率] |
学習ハードウェア |
2x NVIDIA T4 GPU |
評価指標 |
正解率、F1スコア、再現率、適合率 |
学習データセット |
WpythonW/real-fake-voices-dataset2、mozilla-foundation/common_voice_17_0 |
💻 使用例
基本的な使用法
import torch
import torchaudio
import soundfile as sf
import numpy as np
from transformers import AutoFeatureExtractor, AutoModelForAudioClassification
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model_name = "WpythonW/ast-fakeaudio-detector"
extractor = AutoFeatureExtractor.from_pretrained(model_name)
model = AutoModelForAudioClassification.from_pretrained(model_name).to(device)
model.eval()
audio_files = ["audio1.wav", "audio2.mp3", "audio3.ogg"]
processed_batch = []
for audio_path in audio_files:
audio_data, sr = sf.read(audio_path)
if len(audio_data.shape) > 1 and audio_data.shape[1] > 1:
audio_data = np.mean(audio_data, axis=1)
if sr != 16000:
waveform = torch.from_numpy(audio_data).float()
if len(waveform.shape) == 1:
waveform = waveform.unsqueeze(0)
resample = torchaudio.transforms.Resample(
orig_freq=sr,
new_freq=16000
)
waveform = resample(waveform)
audio_data = waveform.squeeze().numpy()
processed_batch.append(audio_data)
inputs = extractor(
processed_batch,
sampling_rate=16000,
padding=True,
return_tensors="pt"
)
inputs = {k: v.to(device) for k, v in inputs.items()}
with torch.no_grad():
logits = model(**inputs).logits
probabilities = torch.nn.functional.softmax(logits, dim=-1)
for filename, probs in zip(audio_files, probabilities):
fake_prob = float(probs[0].cpu())
real_prob = float(probs[1].cpu())
prediction = "FAKE" if fake_prob > real_prob else "REAL"
print(f"\nFile: {filename}")
print(f"Fake probability: {fake_prob:.2%}")
print(f"Real probability: {real_prob:.2%}")
print(f"Verdict: {prediction}")
📚 詳細ドキュメント
制限事項
⚠️ 重要提示
このモデルを使用する際の重要な考慮事項は以下の通りです。
- モデルは16kHzの音声入力で動作します。
- 学習データに含まれていない異なるタイプの音声操作では、性能が異なる場合があります。
- モデルは4から10秒の音声サンプルで学習されています。
📄 ライセンス
このモデルは Apache-2.0 ライセンスの下で提供されています。