Lhotse ist eine Python -Bibliothek, mit der Sprach- und Audiodatenvorbereitung flexibel und für eine breitere Community zugänglich sind. Neben K2 ist es Teil der Kaldi -Sprachbibliothek der nächsten Generation.
Derzeit haben wir die folgenden Tutorials im examples
:
Schauen Sie sich die folgenden Links an, um zu sehen, wie Lhotse verwendet wird:
Lhotse bietet wie Kaldi Standarddatenvorbereitungsrezepte, erweitert dies jedoch mit einer nahtlosen Pytorch-Integration durch aufgabenspezifische Datensatzklassen. Die Daten und die Meta-Daten werden in menschlich-lesbaren Text manifestiert und dem Benutzer durch bequeme Pythonklassen ausgesetzt.
Lhotse führt den Begriff von Audiokürzungen ein, um die Trainingsdatenkonstruktion mit Operationen wie Mischung, Kürzung und Polsterung zu erleichtern, die im Laufe der Fliege durchgeführt werden, um den erforderlichen Speicher zu minimieren. Die Datenerweiterung und die Feature-Extraktion werden sowohl im vorbereiteten Modus als auch im vorgefertigten Modus unterstützt, wobei hochkomprimierte Feature-Matrizen auf der Festplatte gespeichert sind, und im Fliegemodus, der die Transformationen auf Anfrage berechnet. Darüber hinaus führt Lhotse die Mischung zum Funktionsbereich ein, um das Beste aus beiden Welten zu machen.
Lhotse unterstützt Python Version 3.7 und später.
Lhotse ist auf PYPI erhältlich:
pip install lhotse
Um die neueste, unveröffentlichte Version zu installieren, tun Sie:
pip install git+https://github.com/lhotse-speech/lhotse
Für die Entwicklungsinstallation können Sie das Github -Repo aufgehen/klonen und mit PIP installieren:
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
Dies ist eine bearbeitbare Installation ( -e
-Option), was bedeutet, dass Ihre Änderungen am Quellcode beim Importieren von LHOTSE automatisch reflektiert werden (keine Neuinstallation erforderlich). Der [dev]
-Teil bedeutet, dass Sie zusätzliche Abhängigkeiten installieren, mit denen Tests ausgeführt, Dokumentation erstellt oder Jupyter -Notizbücher gestartet werden können.
Lhotse verwendet mehrere Umgebungsvariablen, um das Verhalten anzupassen. Sie sind wie folgt:
LHOTSE_REQUIRE_TORCHAUDIO
- Wenn es festgelegt ist und nicht eine von 1|True|true|yes
, wir werden nicht nach der Installation von Torchaudio überprüfen und aus den Anforderungen entfernen. Es wird viele Funktionen von Lhotse deaktivieren, aber die grundlegenden Funktionen bleiben bestehen (einschließlich des Lesens von Audio mit soundfile
).LHOTSE_AUDIO_DURATION_MISMATCH_TOLERANCE
- verwendet, wenn wir Audio aus einer Datei laden und eine andere Anzahl von Stichproben erhalten als in Recording.num_samples
deklariert.num_samples. Dies ist manchmal notwendig, da verschiedene Codecs (oder sogar verschiedene Versionen derselben Codec) beim Dekodieren von komprimiertem Audio unterschiedliche Polsterung verwenden können. Normalerweise sind die Werte bis zu 0,1 oder sogar 0,3 (zweite) immer noch vernünftig, und alles, was über das hinausgeht, weist auf ein ernstes Problem hin.LHOTSE_AUDIO_BACKEND
-Kann auf einen der von Cli lhotse list-audio-backends
zurückgegebenen Werte eingestellt werden, um das Standardverhalten von Versuch und Irrtum zu überschreiben und immer ein bestimmtes Audio-Backend zu verwenden.LHOTSE_AUDIO_LOADING_EXCEPTION_VERBOSE
- Wenn wir auf 1
festgelegt sind, geben wir die vollständigen Ausnahme -Stapel -Spuren ab, wenn jedes verfügbare Audio -Backend eine bestimmte Datei nicht lädt (sie sind möglicherweise sehr groß).LHOTSE_DILL_ENABLED
- Wenn es auf 1|True|true|yes
eingestellt ist, aktivieren wir die dill
Serialisierung von CutSet
und Sampler
über Prozesse hinweg (es ist standardmäßig deaktiviert, auch wenn dill
installiert ist).LHOTSE_LEGACY_OPUS_LOADING
- ( =1
) kehrt zu einem Lade -Opus -Lademechanismus zurück, der für jede OPUS -Datei einen neuen FFMPEG -Subprozess ausgelöst hat.LHOTSE_PREPARING_RELEASE
- intern von Entwicklern verwendet, um eine neue Version von Lhotse zu veröffentlichen.TORCHAUDIO_USE_BACKEND_DISPATCHER
- Wenn Sie auf 1
und die Torchaudio -Version gesetzt sind, befinden wir uns unter 2.1. Wir werden das experimentelle FFMPEG -Backend von Torchaudio aktivieren.AIS_ENDPOINT
wird vom AISTORE -Client gelesen, um die AISTORE -Endpunkt -URL zu bestimmen. Erforderlich für Aistore Dataloading.RANK
, WORLD_SIZE
, WORKER
und NUM_WORKERS
werden intern verwendet, um Lhotse Shar Dataloading -Subprozesse zu informieren.READTHEDOCS
wird intern für Dokumentationsergebnisse verwendet.Andere PIP -Pakete. Sie können optionale Funktionen von Lhotse nutzen, indem Sie das entsprechende unterstützende Paket installieren:
torchaudio
war früher eine Kernabhängigkeit in Lhotse, ist aber jetzt optional. Siehe offizielle Pytorch -Dokumentation zur Installation.pip install lhotse[kaldi]
für einen maximalen Merkmalssatz in Bezug auf Kaldi -Kompatibilität. Es enthält Bibliotheken wie kaldi_native_io
(eine effizientere Variante von kaldi_io
) und kaldifeat
, die einige Kaldi -Funktionen in Python portieren.pip install lhotse[orjson]
für bis zu 50% schnelleres Lesen von JSONL -Manifikationen.pip install lhotse[webdataset]
. Wir unterstützen "Kompilieren" Ihrer Daten in das Webdataset -Tarball -Format für effektiveres IO. Sie können immer noch mit den Daten interagieren, als ob es sich um ein regelmäßiges faules Schneiden handelt. Um mehr zu erfahren, lesen Sie das folgende Tutorial:pip install h5py
Wenn Sie Sprachfunktionen extrahieren und als HDF5 -Arrays speichern möchten.pip install dill
. Wenn dill
installiert ist, werden wir es für ein Gurkenschnitt verwenden, das eine Lambda -Funktion in Aufrufen wie .map
oder .filter
verwendet. Dies ist hilfreich bei Pytorch Dataloader mit num_jobs>0
. Abhängig von Ihrer Umgebung sehen Sie ohne dill
eine Ausnahme oder ein hängendes Skript.pip install aistore
um Manifests, Teer-Flohs und andere Daten aus Aistore unter Verwendung von AISTORE-unterstützten URLs zu lesen (Setzen Sie die Umgebungsvariable AIS_ENDPOINT
, um sie zu aktivieren). Weitere Informationen finden Sie unter AISTORE -Dokumentation.pip install smart_open
um Manifests und Daten an einem beliebigen Ort zu lesen und zu schreiben, der von smart_open
(z. B. Cloud, HTTP) unterstützt wird.pip install opensmile
für die Feature -Extraktion mit dem Python -Wrapper von OpenSmile Toolkit.sph2pipe. Für das Lesen älterer LDC -Sphere (.SPH) -Ausio -Dateien, die mit Codecs komprimiert werden, die von FFMPEG und SOX nicht unterstützt werden, führen Sie bitte aus:
# CLI
lhotse install-sph2pipe
# Python
from lhotse.tools import install_sph2pipe
install_sph2pipe()
Es wird es auf ~/.lhotse/tools
heruntergeladen, es kompilieren und automatisch im PATH
registriert. Das Programm sollte automatisch von Lhotse erkannt und verwendet werden.
Wir haben Beispielrezepte, die zeigen, wie Daten vorbereitet und in Python als Pytorch Dataset
geladen werden. Sie befinden sich im examples
.
Ein kurzer Ausschnitt, um zu zeigen, wie Lhotse die Vorbereitung von Audiodaten schnell und einfach machen kann:
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 ))
Der VadDataset
liefert eine Stapel mit Feature- und Überwachungs -Tensoren wie folgt - die Rede beginnt ungefähr in der ersten Sekunde (100 Frames):