Lhotseは、スピーチとオーディオデータの準備を柔軟にし、より広いコミュニティがアクセスできるようにすることを目的としたPythonライブラリです。 K2と並んで、次世代のKaldi音声処理ライブラリの一部です。
現在、次のチュートリアルをexamples Directoryで利用できます。
次のリンクをチェックして、Lhotseがどのように使用されているかを確認してください。
Kaldiと同様に、Lhotseは標準のデータ準備レシピを提供しますが、タスク固有のデータセットクラスを通じてシームレスなPytorch統合でそれを拡張します。データとメタデータは、人間の読み取り可能なテキストマニフェストで表され、便利なPythonクラスを通じてユーザーにさらされます。
Lhotseは、必要なストレージの量を最小限に抑えるためにフライで実行される混合、切り捨て、パディングなどの操作を使用して、トレーニングデータ構築を容易にするように設計されたオーディオカットの概念を導入します。データの増強と特徴抽出は、事前に計算されたモードでサポートされており、高度に圧縮された特徴マトリックスがディスクに保存され、リクエストに応じて変換を計算するフライモードの両方でサポートされています。さらに、Lhotseは機能空間カットミキシングを導入して、両方の世界を最大限に活用します。
Lhotseは、Pythonバージョン3.7以降をサポートしています。
LhotseはPypiで入手できます。
pip install lhotse
最新の未発表バージョンをインストールするには、次のことを行います。
pip install git+https://github.com/lhotse-speech/lhotse
開発のインストールのために、GitHubリポジトリをフォーク/クローンして、PIPでインストールできます。
git clone https://github.com/lhotse-speech/lhotse
cd lhotse
pip install -e '.[dev]'
pre-commit install # installs pre-commit hooks with style checks
# Running unit tests
pytest test
# Running linter checks
pre-commit run
これは編集可能なインストール( -eオプション)です。つまり、lhotseをインポートするときにソースコードの変更が自動的に反映されることを意味します(再インストールは必要ありません)。 [dev]パートとは、テストの実行、ドキュメントの構築、またはJupyterノートブックの起動に使用される追加の依存関係をインストールしていることを意味します。
Lhotseはいくつかの環境変数を使用して、動作をカスタマイズします。彼らは次のとおりです:
LHOTSE_REQUIRE_TORCHAUDIOそれが設定されていて、 1|True|true|yes 、トーチャウディオがインストールされていることを確認し、要件から削除することはありません。 Lhotseの多くの機能は無効になりますが、基本的な機能は残ります( soundfileを使用してオーディオを読むことを含む)。LHOTSE_AUDIO_DURATION_MISMATCH_TOLERANCEファイルからオーディオをロードし、 Recording.num_samplesで宣言されたものとは異なる数のサンプルを受信するときに使用されます。num_samples。これは、異なるコーデック(または同じコーデックの異なるバージョン)が圧縮オーディオを解読するときに異なるパディングを使用する可能性があるため、必要になることがあります。通常、最大0.1、または0.3(2番目)までの値は依然として合理的であり、それ以上のものは深刻な問題を示しています。LHOTSE_AUDIO_BACKEND -cli lhotse list-audio-backendsから返された値のいずれかに設定して、試行錯誤のデフォルト動作をオーバーライドし、常に特定のオーディオバックエンドを使用します。LHOTSE_AUDIO_LOADING_EXCEPTION_VERBOSE 1に設定すると、使用可能なすべてのオーディオバックエンドが特定のファイルのロードに失敗した場合(非常に大きい可能性があります)、完全な例外スタックトレースを発します。LHOTSE_DILL_ENABLED 1|True|true|yesに設定されている場合、プロセス全体でdill CutSetとSamplerのシリアル化を有効にします( dillがインストールされていてもデフォルトでは無効になります)。LHOTSE_LEGACY_OPUS_LOADING -( =1 )は、各OPUSファイルの新しいFFMPEGサブプロセスをトリガーするレガシーOPUSロードメカニズムに戻ります。LHOTSE_PREPARING_RELEASE新しいバージョンのLHOTSEをリリースするときに開発者が内部的に使用します。TORCHAUDIO_USE_BACKEND_DISPATCHER 1に設定し、Torchaudioバージョンが2.1未満の場合、Torchaudioの実験的なFFMPEGバックエンドを有効にします。AIS_ENDPOINTは、Aistoreクライアントによって読まれ、AistoreエンドポイントURLを決定します。 Aistore Dataloadingに必要です。RANK 、 WORLD_SIZE 、 WORKER 、およびNUM_WORKERS 、内部的に使用され、lhotse shar dataloadingサブプロセスを通知します。READTHEDOCSは、ドキュメントビルドに内部的に使用されます。他のピップパッケージ。関連するサポートパッケージをインストールすることにより、Lhotseのオプション機能を活用できます。
torchaudio以前はLhotseのコア依存関係でしたが、現在はオプションです。インストールについては、公式のPytorchドキュメントを参照してください。pip install lhotse[kaldi] 。 kaldi_native_io ( kaldi_ioのより効率的なバリアント)やkaldifeatなどのライブラリには、Kaldi機能の一部をPythonに移植します。pip install lhotse[orjson] JSONLマニフェストを最大50%速く読み取ります。pip install lhotse[webdataset] 。より効果的なIOのために、データをWebDataset Tarball形式に「コンパイル」することをサポートしています。データとは、通常の怠zyなカットセットであるかのように対話することができます。詳細については、次のチュートリアルをご覧ください。pip install h5py機能を抽出し、HDF5アレイとして保存する場合。pip install dill 。 dillがインストールされたら、 .mapや.filterなどの呼び出しでラムダ関数を使用するピクルカットセットに使用します。これはnum_jobs>0のPytorch Dataloaderで役立ちます。 dillがなければ、環境に応じて、例外または吊り下げスクリプトが表示されます。pip install aistore ( AIS_ENDPOINT環境変数を設定してアクティブ化)。詳細については、Aistoreのドキュメントを参照してください。pip install smart_open smart_open (cloud、httpなど)でサポートされている任意の場所でマニフェストとデータを読み書きします。pip install opensmile 。SPH2PIPE。 FFMPEGとSOXによってサポートされていないコーデックで圧縮された古いLDC Sphere(.SPH)オーディオファイルを読み取るには、実行してください。
# CLI
lhotse install-sph2pipe
# Python
from lhotse.tools import install_sph2pipe
install_sph2pipe()
~/.lhotse/toolsにダウンロードし、コンパイルし、 PATHで自動登録します。プログラムは、Lhotseで自動的に検出および使用する必要があります。
Pytorch Datasetとしてデータを準備してPythonにロードする方法を示すレシピの例があります。それらはexamplesディレクトリにあります。
Lhotseがオーディオデータの準備を迅速かつ簡単にする方法を示す短いスニペット:
from torch . utils . data import DataLoader
from lhotse import CutSet , Fbank
from lhotse . dataset import VadDataset , SimpleCutSampler
from lhotse . recipes import prepare_switchboard
# Prepare data manifests from a raw corpus distribution.
# The RecordingSet describes the metadata about audio recordings;
# the sampling rate, number of channels, duration, etc.
# The SupervisionSet describes metadata about supervision segments:
# the transcript, speaker, language, and so on.
swbd = prepare_switchboard ( '/export/corpora3/LDC/LDC97S62' )
# CutSet is the workhorse of Lhotse, allowing for flexible data manipulation.
# We create 5-second cuts by traversing SWBD recordings in windows.
# No audio data is actually loaded into memory or stored to disk at this point.
cuts = CutSet . from_manifests (
recordings = swbd [ 'recordings' ],
supervisions = swbd [ 'supervisions' ]
). cut_into_windows ( duration = 5 )
# We compute the log-Mel filter energies and store them on disk;
# Then, we pad the cuts to 5 seconds to ensure all cuts are of equal length,
# as the last window in each recording might have a shorter duration.
# The padding will be performed once the features are loaded into memory.
cuts = cuts . compute_and_store_features (
extractor = Fbank (),
storage_path = 'feats' ,
num_jobs = 8
). pad ( duration = 5.0 )
# Construct a Pytorch Dataset class for Voice Activity Detection task:
dataset = VadDataset ()
sampler = SimpleCutSampler ( cuts , max_duration = 300 )
dataloader = DataLoader ( dataset , sampler = sampler , batch_size = None )
batch = next ( iter ( dataloader )) VadDataset 、次のような機能のペアと監督テンソルのペアを備えたバッチを生成します。スピーチは、最初の秒(100フレーム)でほぼ始まります。