Lhotse adalah perpustakaan Python yang bertujuan untuk membuat persiapan data pidato dan audio fleksibel dan dapat diakses oleh komunitas yang lebih luas. Bersama K2, ini adalah bagian dari Perpustakaan Pemrosesan Pidato Kaldi Generasi berikutnya.
Saat ini kami memiliki tutorial berikut yang tersedia di Direktori examples
:
Lihat tautan berikut untuk melihat bagaimana Lhotse digunakan:
Seperti Kaldi, Lhotse menyediakan resep persiapan data standar, tetapi memperluasnya dengan integrasi Pytorch yang mulus melalui kelas dataset khusus tugas. Data dan meta-data diwakili dalam teks yang dapat dibaca manusia bermanifestasi dan terpapar kepada pengguna melalui kelas Python yang nyaman.
Lhotse memperkenalkan gagasan pemotongan audio, yang dirancang untuk memudahkan konstruksi data pelatihan dengan operasi seperti pencampuran, pemotongan dan bantalan yang dilakukan secara langsung untuk meminimalkan jumlah penyimpanan yang diperlukan. Augmentasi data dan ekstraksi fitur didukung baik dalam mode pra-komputasi, dengan matriks fitur yang sangat terkompresi disimpan pada disk, dan mode on-the-fly yang menghitung transformasi berdasarkan permintaan. Selain itu, Lhotse memperkenalkan pencampuran potongan ruang fitur untuk memanfaatkan yang terbaik dari kedua dunia.
Lhotse mendukung Python versi 3.7 dan yang lebih baru.
Lhotse tersedia di PYPI:
pip install lhotse
Untuk menginstal versi terbaru yang belum dirilis, lakukan:
pip install git+https://github.com/lhotse-speech/lhotse
Untuk instalasi pengembangan, Anda dapat membayar/mengkloning repo github dan menginstal dengan 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
Ini adalah instalasi yang dapat diedit ( -e
opsi), yang berarti bahwa perubahan Anda pada kode sumber secara otomatis tercermin saat mengimpor lhotse (tidak diperlukan instal ulang). Bagian [dev]
berarti Anda memasang dependensi tambahan yang digunakan untuk menjalankan tes, membangun dokumentasi, atau meluncurkan buku catatan Jupyter.
Lhotse menggunakan beberapa variabel lingkungan untuk menyesuaikan perilakunya. Mereka adalah sebagai berikut:
LHOTSE_REQUIRE_TORCHAUDIO
- Ketika diatur dan bukan dari 1|True|true|yes
, kami tidak akan memeriksa Torchaudio yang diinstal dan menghapusnya dari persyaratan. Ini akan menonaktifkan banyak fungsi lhotse tetapi kemampuan dasar akan tetap (termasuk membaca audio dengan soundfile
).LHOTSE_AUDIO_DURATION_MISMATCH_TOLERANCE
- digunakan saat kita memuat audio dari file dan menerima jumlah sampel yang berbeda dari yang dinyatakan dalam Recording.num_samples
. Ini kadang -kadang diperlukan karena codec yang berbeda (atau bahkan versi yang berbeda dari codec yang sama) dapat menggunakan bantalan yang berbeda saat decoding audio terkompresi. Biasanya nilai hingga 0,1, atau bahkan 0,3 (kedua) masih masuk akal, dan apa pun di luar itu menunjukkan masalah serius.LHOTSE_AUDIO_BACKEND
-dapat diatur ke salah satu nilai yang dikembalikan dari lhotse list-audio-backends
untuk mengesampingkan perilaku default dari coba-coba dan selalu menggunakan backend audio tertentu.LHOTSE_AUDIO_LOADING_EXCEPTION_VERBOSE
- Ketika diatur ke 1
kami akan memancarkan jejak tumpukan pengecualian penuh ketika setiap backend audio yang tersedia gagal memuat file yang diberikan (mereka mungkin sangat besar).LHOTSE_DILL_ENABLED
- Ketika diatur ke 1|True|true|yes
, kami akan mengaktifkan serialisasi CutSet
dan Sampler
berbasis dill
di seluruh proses (dinonaktifkan secara default bahkan ketika dill
diinstal).LHOTSE_LEGACY_OPUS_LOADING
- ( =1
) kembali ke mekanisme pemuatan opus lama yang memicu subproses FFMPEG baru untuk setiap file opus.LHOTSE_PREPARING_RELEASE
- Digunakan secara internal oleh pengembang saat merilis versi baru Lhotse.TORCHAUDIO_USE_BACKEND_DISPATCHER
- Ketika diatur ke 1
dan versi Torchaudio di bawah 2.1, kami akan mengaktifkan backend ffmpeg eksperimental dari Torchaudio.AIS_ENDPOINT
dibaca oleh klien Aistore untuk menentukan URL titik akhir Aistore. Diperlukan untuk Aistore Dataloading.RANK
, WORLD_SIZE
, WORKER
, dan NUM_WORKERS
digunakan secara internal untuk menginformasikan subproses dataloading shar lhotse.READTHEDOCS
digunakan secara internal untuk pembuatan dokumentasi.Paket Pip lainnya. Anda dapat memanfaatkan fitur opsional Lhotse dengan menginstal paket pendukung yang relevan:
torchaudio
dulunya merupakan ketergantungan inti di lhotse, tetapi sekarang opsional. Lihat dokumentasi Pytorch resmi untuk instalasi.pip install lhotse[kaldi]
untuk set fitur maksimal yang terkait dengan kompatibilitas Kaldi. Ini termasuk perpustakaan seperti kaldi_native_io
(varian yang lebih efisien dari kaldi_io
) dan kaldifeat
itu port beberapa fungsionalitas Kaldi menjadi Python.pip install lhotse[orjson]
hingga 50% pembacaan lebih cepat dari manifes JSONL.pip install lhotse[webdataset]
. Kami mendukung "menyusun" data Anda ke dalam format Tarball WebDataset untuk IO yang lebih efektif. Anda masih dapat berinteraksi dengan data seolah -olah itu adalah cutset malas biasa. Untuk mempelajari lebih lanjut, lihat tutorial berikut:pip install h5py
jika Anda ingin mengekstrak fitur ucapan dan menyimpannya sebagai array HDF5.pip install dill
. Saat dill
dipasang, kami akan menggunakannya untuk acar cutset yang menggunakan fungsi lambda dalam panggilan seperti .map
atau .filter
. Ini bermanfaat di Pytorch Dataloader dengan num_jobs>0
. Tanpa dill
, tergantung pada lingkungan Anda, Anda akan melihat pengecualian atau skrip gantung.pip install aistore
untuk membaca manifes, tar fles, dan data lain dari Aistore menggunakan URL yang didukung Aistore (set variabel lingkungan AIS_ENDPOINT
untuk mengaktifkannya). Lihat Dokumentasi Aistore untuk lebih jelasnya.pip install smart_open
untuk membaca dan menulis manifes dan data di setiap lokasi yang didukung oleh smart_open
(misalnya Cloud, HTTP).pip install opensmile
untuk ekstraksi fitur menggunakan pembungkus Python OpenSmile Toolkit.sph2pipe. Untuk membaca file audio LDC Sphere (.sph) yang lebih lama yang dikompresi dengan codec yang tidak didukung oleh FFMPEG dan SOX, silakan jalankan:
# CLI
lhotse install-sph2pipe
# Python
from lhotse.tools import install_sph2pipe
install_sph2pipe()
Ini akan mengunduhnya ke ~/.lhotse/tools
, kompilasi, dan register otomatis di PATH
. Program harus secara otomatis terdeteksi dan digunakan oleh Lhotse.
Kami memiliki contoh resep yang menunjukkan cara menyiapkan data dan memuatnya di Python sebagai Dataset
Pytorch. Mereka terletak di direktori examples
.
Cuplikan pendek untuk menunjukkan bagaimana lhotse dapat membuat persiapan data audio cepat dan mudah:
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
akan menghasilkan batch dengan pasangan fitur dan tensor pengawasan seperti berikut - pidato dimulai secara kasar pada detik pertama (100 frame):