Lhotse는 음성 및 오디오 데이터 준비를 유연하고 더 넓은 커뮤니티에 접근 할 수 있도록하는 Python 라이브러리입니다. K2와 함께 차세대 Kaldi Speech Processing Library의 일부입니다.
현재 examples
디렉토리에서 다음과 같은 자습서가 있습니다.
LHOTSE를 어떻게 사용하는지 확인하려면 다음 링크를 확인하십시오.
Kaldi와 마찬가지로 Lhotse는 표준 데이터 준비 레시피를 제공하지만 작업 별 데이터 세트 클래스를 통해 완벽한 Pytorch 통합으로 확장합니다. 데이터 및 메타 데이터는 사람이 읽을 수있는 텍스트 매니페스트로 표시되며 편리한 파이썬 클래스를 통해 사용자에게 노출됩니다.
LHOTSE는 필요한 스토리지 양을 최소화하기 위해 즉시 수행되는 믹싱, 잘림 및 패딩과 같은 작업을 통해 교육 데이터 구성을 완화하도록 설계된 오디오 컷 개념을 소개합니다. 데이터 확대 및 기능 추출은 사전 계산 모드에서 모두 지원되며, 디스크에 저장된 고도로 압축 된 기능 행렬 및 요청시 변환을 계산하는 비행 금속 모드와 함께 지원됩니다. 또한 Lhotse는 기능 공간 컷 믹싱을 도입하여 두 세계를 모두 최대한 활용합니다.
Lhotse는 Python 버전 3.7 이상을 지원합니다.
lhotse는 PYPI에서 사용할 수 있습니다.
pip install lhotse
최신 미공개 버전을 설치하려면 다음을 수행하십시오.
pip install git+https://github.com/lhotse-speech/lhotse
개발 설치를 위해 Github Repo를 포크/복제하고 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
에서 선언 한 것과 다른 수의 샘플을받을 때 사용됩니다 .num_samples. 다른 코덱 (또는 동일한 코덱의 다른 버전)이 압축 오디오를 디코딩 할 때 다른 패딩을 사용할 수 있기 때문에 때때로 필요합니다. 일반적으로 최대 0.1 또는 0.3 (두 번째)까지의 값은 여전히 합리적이며 그 이상은 심각한 문제를 나타냅니다.LHOTSE_AUDIO_BACKEND
Cli lhotse list-audio-backends
에서 반환 된 값 중 어느 값으로 설정되어 시행 및 오류의 기본 동작을 무시하고 항상 특정 오디오 백엔드를 사용합니다.LHOTSE_AUDIO_LOADING_EXCEPTION_VERBOSE
1
으로 설정하면 사용 가능한 모든 오디오 백엔드가 주어진 파일을로드하지 않으면 전체 예외 스택 추적을 방출합니다 (매우 클 수 있습니다).LHOTSE_DILL_ENABLED
1|True|true|yes
, 프로세스에서 CutSet
와 Sampler
의 dill
기반 직렬화를 활성화 할 것입니다 ( 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 데이터로드에 필요합니다.RANK
, WORLD_SIZE
, WORKER
및 NUM_WORKERS
내부적으로 Lhotse Shar Dataloading 하위 프로세스를 알리는 데 사용됩니다.READTHEDOCS
는 내부적으로 문서 작성에 사용됩니다.다른 PIP 패키지. 관련 지원 패키지를 설치하여 LHOTSE의 선택적 기능을 활용할 수 있습니다.
torchaudio
Lhotse에서 핵심 의존성 이었지만 이제 선택 사항입니다. 설치를 위해 공식 Pytorch 문서를 참조하십시오.pip install lhotse[kaldi]
. 여기에는 kaldi_native_io
( kaldi_io
의보다 효율적인 변형) 및 Kaldi 기능의 일부를 Python으로 포트하는 kaldifeat
와 같은 라이브러리가 포함됩니다.pip install lhotse[orjson]
.pip install lhotse[webdataset]
. 보다 효과적인 IO를 위해 귀하의 데이터를 WebDataset Tarball 형식으로 "컴파일"합니다. 정기적 인 게으른 컷셋 인 것처럼 데이터와 여전히 상호 작용할 수 있습니다. 자세한 내용은 다음 자습서를 확인하십시오.pip install h5py
.pip install dill
. dill
설치되면 .map
또는 .filter
와 같은 통화에서 Lambda 함수를 사용하는 Pickle Cutset에 사용합니다. 이것은 num_jobs>0
가진 pytorch dataloader에서 유용합니다. dill
없으면 환경에 따라 예외 나 매달려 스크립트가 표시됩니다.pip install aistore
( AIS_ENDPOINT
환경 변수를 활성화). 자세한 내용은 Aistore 문서를 참조하십시오.smart_open
(예 : Cloud, HTTP)에서 지원하는 모든 위치에서 pip install smart_open
.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에서 자동으로 감지하고 사용해야합니다.
데이터를 준비하고 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 프레임)에서 시작합니다.