LHOTSE是一個Python圖書館,旨在使更廣泛的社區靈活且可訪問語音和音頻數據準備。與K2一起,它是下一代Kaldi演講處理庫的一部分。
目前,我們在examples
目錄中可用以下教程:
查看以下鏈接以查看如何使用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
,我們不會檢查已安裝的Torchaudio並將其從要求中刪除。它將禁用LHOTSE的許多功能,但將保留基本功能(包括用soundfile
讀取音頻)。LHOTSE_AUDIO_DURATION_MISMATCH_TOLERANCE
當我們從文件加載音頻並接收到與Recording.num_samples
中聲明的不同示例時使用。這有時是必要的,因為在解碼壓縮音頻時,不同的編解碼器(甚至相同編解碼器的不同版本)可能會使用不同的填充。通常值最高為0.1,甚至0.3(第二)仍然是合理的,而除此之外的任何內容都表明了一個嚴重的問題。LHOTSE_AUDIO_BACKEND
可以設置為從Cli lhotse list-audio-backends
返回的任何值,以覆蓋反複試驗的默認行為,並始終使用特定的音頻後端。LHOTSE_AUDIO_LOADING_EXCEPTION_VERBOSE
設置為1
,當每個可用音頻後端無法加載給定文件時,我們將發射Full Exception堆棧跟踪(它們可能很大)。LHOTSE_DILL_ENABLED
將其設置為1|True|true|yes
,我們將跨進程啟用dill
的CutSet
和Sampler
的序列化(即使安裝了dill
,默認情況下也可以禁用它)。LHOTSE_LEGACY_OPUS_LOADING
-( =1
)恢復為遺留操作加載機制,該機制觸發了每個opus文件的新FFMPEG子程序。LHOTSE_PREPARING_RELEASE
開發人員在發布新版本的LHOTSE時內部使用。TORCHAUDIO_USE_BACKEND_DISPATCHER
設置為1
,Torchaudio版本低於2.1,我們將啟用Torchaudio的實驗FFMPEG後端。AIS_ENDPOINT
,以確定AISTORE端點URL。 AISTORE DATALOADING所需。RANK
, WORLD_SIZE
, WORKER
和NUM_WORKERS
內部用於通知lhotse shar dataLoading子流程。READTHEDOCS
內部用於文檔構建。其他PIP包。您可以通過安裝相關的支持軟件包來利用LHOTSE的可選功能:
torchaudio
曾經是LHOTSE的核心依賴性,但現在是可選的。請參閱官方的Pytorch文檔以進行安裝。pip install lhotse[kaldi]
用於與Kaldi兼容性相關的最大功能集。它包括庫,例如kaldi_native_io
( kaldi_io
的更有效變體)和kaldifeat
,並將某些Kaldi功能移植到Python中。pip install lhotse[orjson]
最多可以更快地讀取JSONL表現。pip install lhotse[webdataset]
。我們支持將您的數據“編譯”到WebDataSet Tarball格式中,以提高IO。您仍然可以與數據互動,就好像是常規的懶惰切割機一樣。要了解更多信息,請查看以下教程:pip install h5py
如果要提取語音功能並將其存儲為HDF5陣列。pip install dill
。安裝dill
時,我們將其用於在諸如.map
或.filter
之類的呼叫中使用lambda功能的泡菜切割集。這對於使用num_jobs>0
Pytorch數據加載器很有幫助。沒有dill
,根據您的環境,您會看到一個例外或懸掛腳本。pip install aistore
使用Aistore支持的URL(設置AIS_ENDPOINT
環境變量以激活IT)來讀取清單,焦油蠅和其他數據。有關更多詳細信息,請參見Aistore文檔。pip install smart_open
以讀寫清單和數據在smart_open
支持的任何位置(例如Cloud,HTTP)。pip install opensmile
用於使用OpenSmile Toolkit的Python包裝器進行特徵提取。Sph2 -Pipe。要讀取舊的LDC Sphere(.sph)音頻文件,這些文件被FFMPEG和SOX不支持的編解碼器壓縮,請運行:
# CLI
lhotse install-sph2pipe
# Python
from lhotse.tools import install_sph2pipe
install_sph2pipe()
它將將其下載到~/.lhotse/tools
,對其進行編譯,並在PATH
中自動註冊。 LHOTSE應自動檢測並使用該程序。
我們有示例配方顯示如何準備數據並將其加載到Python中,作為Pytorch Dataset
。它們位於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幀):