yeyupiaoling/VoiceprintRecognition-Pytorch
This project uses a variety of advanced voiceprint recognition models such as EcapaTdnn, ResNetSE, ERes2Net, CAM++, etc. It is not excluded that more models will be supported in the future. At the same time, this project also supports MelSpectrogram, Spectrogram data preprocessing methods
VoiceprintRecognition-Pytorch
PyTorchで構築された 話者照合 / 声紋認証 ツールキットです。音声クリップから誰が話しているかを認識するモデルのトレーニング、評価、デプロイが可能です。
機能
- 最先端の話者照合バックボーン(Ecapa-Tdnn, TDNN, Res2Net, ResNetSE, ERes2Net, CAM++)を実装。
- さまざまなプーリング層(ASP, SAP, TSP, TAP, TSTP)と損失関数(AAMLoss/ArcFace, SphereFace2, AMLoss, ARMLoss, CELossなど)を提供。
- 複数のフロントエンドをサポート:従来の音響特徴量(MelSpectrogram, Spectrogram, MFCC, Fbank)およびHugging-Faceの事前学習済み音声モデル(wav2vec2, wavLMなど)。
- データ拡張ユーティリティ(速度、音量、ノイズ、残響、SpecAugment)を同梱。
- データ準備、特徴抽出、モデルトレーニング、評価、推論API用のスクリプトを提供。
- 声紋比較、話者識別、話者分離のための、すぐに使えるWebおよびWeChatミニプログラムデモが付属。
主な特徴
| 特徴 | 詳細 |
|---|---|
| バックボーン | EcapaTdnn, TDNN, Res2Net, ResNetSE, ERes2Net, CAM++ |
| プーリング | AttentiveStatsPool, SelfAttentivePooling, TemporalStatisticsPooling, TemporalAveragePooling, TemporalStatsPool |
| 損失関数 | AAMLoss (ArcFace), SphereFace2, AMLoss, ARMLoss, CELoss, SubCenterLoss, TripletAngularMarginLoss |
| フロントエンド | MelSpectrogram, Spectrogram, MFCC, Fbank, wav2vec2.0, wavLM |
| データ拡張 | 速度変化, 音量ゲイン, 加算ノイズ, 残響, SpecAugment |
| 対応データセット | CN-Celeb, VoxCeleb1/2 (およびユーザー提供のリスト) |
| 評価指標 | EER, MinDCF |
| デモ | 声紋比較 / 識別 / 分離のためのオンラインWebページおよびWeChatミニプログラム |
インストール
# PyTorch GPU (CUDA 11.8) – 必要に応じてバージョンを調整してください
conda install pytorch==2.4.0 torchvision==0.19.0 torchaudio==2.4.0 pytorch-cuda=11.8 -c pytorch -c nvidia
# プロジェクトで使用するヘルパーライブラリをインストール
python -m pip install mvector -U -i https://pypi.tuna.tsinghua.edu.cn/simple
# パッケージのクローンとインストール (編集可能インストールを推奨)
git clone https://github.com/yeyupiaoling/VoiceprintRecognition-Pytorch.git
cd VoiceprintRecognition-Pytorch
pip install .
クイックスタート (典型的なワークフロー)
- データ準備 – 話者データセット(例:CN-CelebやVoxCeleb)をダウンロードし、
dataset/配下に配置して以下を実行:python create_data.py # トレーニング/登録/試行リストファイルを作成 - (オプション) 特徴抽出 – トレーニングを高速化:
設定内のリストパスをpython extract_features.py --configs=configs/cam++.yml --save_dir=dataset/features*_features.txtファイルに更新してください。 - モデルトレーニング – 設定(例:
configs/ecapa_tdnn.yml)を選択して実行:
ログはCUDA_VISIBLE_DEVICES=0 python train.py # シングルGPU # またはマルチGPU CUDA_VISIBLE_DEVICES=0,1 torchrun --standalone --nnodes=1 --nproc_per_node=2 train.pylog/に書き込まれ、VisualDLで可視化できます:visualdl --logdir=log --host 0.0.0.0 - 評価 – 設定で
do_eval: Trueになっている場合、同じtrain.pyスクリプトが評価を実行し、EERとMinDCFを報告します。 - 推論 – トレーニング後、提供されている推論API(リポジトリ内の
inference.pyを参照)を使用して、新しい発話の埋め込みを行い、登録済み話者と比較します。
デモとオンラインサービス
- 声紋比較 – https://tools.yeyupiaoling.cn/speech/voiceprint_compare
- 話者識別 – https://tools.yeyupiaoling.cn/speech/voiceprint_recognition
- 話者分離 – https://tools.yeyupiaoling.cn/speech/speaker_diarization
- README内のQRコードから、同じ機能を提供するWeChatミニプログラムにアクセスできます。
ライセンス
このリポジトリはMITライセンスの下で公開されています (READMEのLICENSEバッジを参照)。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト