Lhotse เป็นไลบรารี Python ที่มีจุดประสงค์เพื่อให้การเตรียมข้อมูลคำพูดและเสียงมีความยืดหยุ่นและสามารถเข้าถึงได้สำหรับชุมชนที่กว้างขึ้น ข้าง K2 มันเป็นส่วนหนึ่งของห้องสมุดการประมวลผลคำพูด Kaldi รุ่นต่อไป
ขณะนี้เรามีบทเรียนต่อไปนี้ในไดเรกทอรี examples
:
ตรวจสอบลิงค์ต่อไปนี้เพื่อดูว่า Lhotse ใช้งานอย่างไร:
เช่นเดียวกับ Kaldi, Lhotse ให้บริการสูตรการเตรียมข้อมูลมาตรฐาน แต่ขยายออกไปด้วยการรวม Pytorch ที่ไร้รอยต่อผ่านคลาสชุดข้อมูลเฉพาะงาน ข้อมูลและเมตาดาต้าจะแสดงในข้อความที่มนุษย์อ่านได้ปรากฏขึ้นและสัมผัสกับผู้ใช้ผ่านคลาส Python ที่สะดวก
Lhotse แนะนำแนวคิดของการตัดเสียงที่ออกแบบมาเพื่อบรรเทาการสร้างข้อมูลการฝึกอบรมด้วยการดำเนินงานเช่นการผสมการตัดทอนและการขยายที่ดำเนินการทันทีเพื่อลดปริมาณการจัดเก็บที่ต้องการ การเพิ่มข้อมูลและการแยกฟีเจอร์ได้รับการสนับสนุนทั้งในโหมดที่คำนวณล่วงหน้าพร้อมเมทริกซ์คุณสมบัติที่มีการบีบอัดสูงที่เก็บไว้ในดิสก์และโหมด on-the-fly ที่คำนวณการแปลงตามคำขอ นอกจากนี้ 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
เราจะเปิดใช้งาน serialization ตาม dill
ของ CutSet
และ Sampler
ข้ามกระบวนการ (มันปิดใช้งานโดยค่าเริ่มต้นแม้ว่าจะติดตั้ง dill
)LHOTSE_LEGACY_OPUS_LOADING
- ( =1
) เปลี่ยนเป็นกลไกการโหลดแบบดั้งเดิมที่เรียกใช้กระบวนการย่อย FFMPEG ใหม่สำหรับแต่ละไฟล์ OPUSLHOTSE_PREPARING_RELEASE
- ใช้ภายในโดยนักพัฒนาเมื่อปล่อย Lhotse เวอร์ชันใหม่TORCHAUDIO_USE_BACKEND_DISPATCHER
- เมื่อตั้งค่าเป็น 1
และเวอร์ชัน Torchaudio ต่ำกว่า 2.1 เราจะเปิดใช้งานแบ็กเอนด์ FFMPEG ทดลองของ TorchaudioAIS_ENDPOINT
ถูกอ่านโดยไคลเอนต์ AISTORE เพื่อกำหนด URL ปลายทาง AISTORE จำเป็นสำหรับ Aistore DataloadingRANK
, WORLD_SIZE
, WORKER
และ NUM_WORKERS
ถูกนำมาใช้ภายในเพื่อแจ้งการประมวลผล subprocesses dataloading lhotse SharREADTHEDOCS
ใช้สำหรับการสร้างเอกสารแพ็คเกจ PIP อื่น ๆ คุณสามารถใช้ประโยชน์จากคุณสมบัติเสริมของ LHOTSE โดยการติดตั้งแพ็คเกจสนับสนุนที่เกี่ยวข้อง:
torchaudio
เคยเป็นการพึ่งพาหลักใน Lhotse แต่ตอนนี้เป็นทางเลือก อ้างถึงเอกสาร Pytorch อย่างเป็นทางการสำหรับการติดตั้งpip install lhotse[kaldi]
สำหรับชุดคุณสมบัติสูงสุดที่เกี่ยวข้องกับความเข้ากันได้ของ Kaldi มันรวมถึงห้องสมุดเช่น kaldi_native_io
(ตัวแปรที่มีประสิทธิภาพมากขึ้นของ kaldi_io
) และ kaldifeat
ที่พอร์ตฟังก์ชันการทำงานของ kaldi บางอย่างลงใน Pythonpip install lhotse[orjson]
สำหรับการอ่าน JSONL ที่เร็วขึ้นถึง 50%pip install lhotse[webdataset]
เราสนับสนุน "รวบรวม" ข้อมูลของคุณในรูปแบบ webDataset tarball เพื่อ IO ที่มีประสิทธิภาพมากขึ้น คุณยังสามารถโต้ตอบกับข้อมูลราวกับว่ามันเป็น cutset ขี้เกียจปกติ หากต้องการเรียนรู้เพิ่มเติมลองดูบทช่วยสอนต่อไปนี้:pip install h5py
หากคุณต้องการดึงคุณสมบัติการพูดและเก็บไว้เป็นอาร์เรย์ HDF5pip install dill
เมื่อติดตั้ง dill
เราจะใช้มันกับดอง cutset ที่ใช้ฟังก์ชั่นแลมบ์ดาในการโทรเช่น .map
หรือ .filter
สิ่งนี้มีประโยชน์ใน Pytorch Dataloader ด้วย num_jobs>0
หากไม่มี dill
ขึ้นอยู่กับสภาพแวดล้อมของคุณคุณจะเห็นข้อยกเว้นหรือสคริปต์ที่แขวนอยู่pip install aistore
เพื่ออ่าน manifests, tar fles และข้อมูลอื่น ๆ จาก Aistore โดยใช้ URL ที่รองรับ Aistore (ตั้งค่าตัวแปรสภาพแวดล้อม AIS_ENDPOINT
เพื่อเปิดใช้งาน) ดูเอกสาร Aistore สำหรับรายละเอียดเพิ่มเติมpip install smart_open
เพื่ออ่านและเขียนข้อมูลและข้อมูลในสถานที่ใด ๆ ที่สนับสนุนโดย smart_open
(เช่นคลาวด์, http)pip install opensmile
สำหรับการแยกคุณสมบัติโดยใช้ wrapper python ของ opensmile toolkitSPH2Pipe สำหรับการอ่านไฟล์เสียง LDC Sphere เก่า (.sph) ที่ถูกบีบอัดด้วยตัวแปลงสัญญาณที่ไม่ได้รับการสนับสนุนโดย FFMPEG และ SOX โปรดเรียกใช้:
# CLI
lhotse install-sph2pipe
# Python
from lhotse.tools import install_sph2pipe
install_sph2pipe()
มันจะดาวน์โหลดไปยัง ~/.lhotse/tools
รวบรวมและลงทะเบียนอัตโนมัติใน PATH
โปรแกรมควรตรวจพบและใช้งานโดย LHOTSE โดยอัตโนมัติ
เรามีตัวอย่างสูตรที่แสดงวิธีการเตรียมข้อมูลและโหลดใน Python เป็น Dataset
Pytorch พวกเขาอยู่ในไดเรกทอรี 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 เฟรม):