Python yordamida nutqni aniqlash sirlarini oching. Ushbu keng qamrovli qo'llanma xom tovush to'lqinlarini mashina o'qiy oladigan matnga aylantiradigan audio signallarni qayta ishlashning muhim usullarini o'rganadi. Dasturchilar va ma'lumotlar bo'yicha olimlar uchun juda mos keladi.
Python yordamida nutqni aniqlash: Audio signallarni qayta ishlashga chuqur kirish
Smartfonlarimizdan yo'nalish so'rashdan tortib, aqlli uy qurilmalarini boshqarishgacha bo'lgan ovozli buyruqlar tobora ustunlik qilayotgan dunyoda Avtomatik Nutqni Aniqlash (ASR) texnologiyasi kundalik hayotimizga uzviy bog'lanib qoldi. Lekin siz buyruq berganingiz va qurilmangiz uni tushunishi orasida nima sodir bo'lishi haqida hech o'ylab ko'rganmisiz? Bu sehr emas; bu o'nlab yillik tadqiqotlarga asoslangan murakkab jarayon bo'lib, uning poydevori audio signallarga ishlov berishdir.
Xom audio kompyuter uchun shunchaki bosim to'lqinini ifodalovchi uzun sonlar qatoridir. U o'zida hech qanday ma'no saqlamaydi. Har qanday ASR tizimining birinchi va hal qiluvchi qadami bu xom, tushunarsiz ma'lumotlarni mashinaviy ta'lim modeli talqin qila oladigan tuzilmali ko'rinishga aylantirishdir. Bu o'zgartirish audio signallarni qayta ishlashning asosidir.
Ushbu qo'llanma Python dasturchilari, ma'lumotlar bo'yicha olimlar, mashinaviy ta'lim muhandislari va ovozli texnologiyalarning ichki ishlashiga qiziquvchilar uchun mo'ljallangan. Biz tovushning jismoniy tabiatidan boshlab, Mel-chastotali kepstral koeffitsientlar (MFCCs) kabi murakkab belgi vektorlarini yaratishgacha bo'lgan sayohatga chiqamiz. Biz Python'ning kuchli ilmiy kutubxonalaridan foydalanib, tushunchalarni oydinlashtiramiz va amaliy, qo'lda bajariladigan misollar keltiramiz.
Tovush tabiatini tushunish
Tovushga ishlov berishdan oldin, avvalo uning nima ekanligini tushunishimiz kerak. Aslida, tovush mexanik to'lqin — havo, suv yoki qattiq jismlar kabi muhit orqali uzatiladigan bosim tebranishidir. Biz gapirganda, ovoz paychalarimiz tebranib, mikrofonga yetib boradigan ushbu bosim to'lqinlarini hosil qiladi.
Tovush to'lqinining asosiy xususiyatlari
- Amplituda: Bu tovushning intensivligi yoki balandligiga mos keladi. To'lqin shaklida bu to'lqinning balandligidir. Cho'qqilar qanchalik baland bo'lsa, tovush shunchalik baland bo'ladi.
- Chastota: Bu tovushning baland-pastligini (pitch) belgilaydi. Bu to'lqinning bir soniyada bajargan sikllar soni bo'lib, Gerts (Hz) bilan o'lchanadi. Yuqori chastota yuqori ohangni anglatadi.
- Tembr: Bu tovushning sifati yoki xarakteri bo'lib, ovozlar va musiqa asboblari kabi turli xil tovush manbalarini farqlaydi. Bu karnayning skripka bilan bir xil notani bir xil balandlikda chalganidan farq qilishiga sabab bo'ladi. Tembr tovushning garmonik tarkibining natijasidir.
Analogdan raqamliga: O'zgartirish jarayoni
Mikrofon analog bosim to'lqinini analog elektr signaliga aylantiradi. Kompyuter esa diskret raqamli ma'lumotlar bilan ishlaydi. Analog signalni raqamliga o'tkazish jarayoni raqamlashtirish yoki diskretlash (sampling) deb ataladi.
- Diskretlash chastotasi (Sampling Rate): Bu bir soniyada olingan audio signal namunalarining (suratlarining) soni. Masalan, CD sifatidagi audio 44,100 Hz (yoki 44.1 kHz) diskretlash chastotasiga ega, ya'ni har soniyada 44,100 ta namuna olinadi. Naykvist-Shennon diskretlash teoremasiga ko'ra, signalni aniq tiklash uchun diskretlash chastotasi signalda mavjud bo'lgan eng yuqori chastotadan kamida ikki baravar yuqori bo'lishi kerak. Inson eshitish diapazoni taxminan 20 kHz gacha bo'lganligi sababli, 44.1 kHz diskretlash chastotasi yetarlidan ham ortiq. Nutq uchun esa 16 kHz chastotasi ko'pincha standart hisoblanadi, chunki u inson ovozining chastota diapazonini yetarli darajada qamrab oladi.
- Bit chuqurligi (Bit Depth): Bu har bir namunaning amplitudasini ifodalash uchun ishlatiladigan bitlar sonini belgilaydi. Yuqori bit chuqurligi kattaroq dinamik diapazonni (eng past va eng baland tovushlar orasidagi farq) ta'minlaydi va kvantlash shovqinini kamaytiradi. Nutq uchun keng tarqalgan 16-bit chuqurligi 65,536 (2^16) ta alohida amplituda qiymatini ifodalash imkonini beradi.
Bu jarayon natijasida bir o'lchamli massiv (yoki vektor) hosil bo'ladi. Bu massiv tovush to'lqinining diskret vaqt intervallaridagi amplitudasini ifodalaydi. Bu massiv biz Python'da ishlaydigan xom ashyodir.
Audioni qayta ishlash uchun Python ekotizimi
Python murakkab audio ishlov berish vazifalarini osonlashtiradigan boy kutubxonalar ekotizimiga ega. Bizning maqsadlarimiz uchun bir nechta asosiy kutubxonalar ajralib turadi.
- Librosa: Bu musiqa va audio tahlili uchun eng muhim Python paketidir. U audioni yuklash, uni vizualizatsiya qilish va eng muhimi, turli xil belgilarni ajratib olish uchun yuqori darajadagi abstraksiyalarni taqdim etadi.
- SciPy: Ilmiy Python to'plamining asosiy qismi bo'lgan SciPy'ning `scipy.signal` va `scipy.fft` modullari signalni qayta ishlash vazifalari, jumladan, filtrlash va Furye o'zgartirishlarini bajarish uchun kuchli, quyi darajadagi vositalarni taklif etadi.
- NumPy: Python'da raqamli hisoblashlar uchun fundamental paket. Audio sonlar massivi sifatida ifodalanganligi sababli, NumPy ma'lumotlarimiz ustida matematik amallarni samarali bajarish uchun ajralmas hisoblanadi.
- Matplotlib & Seaborn: Bular ma'lumotlarni vizualizatsiya qilish uchun standart kutubxonalardir. Biz ulardan to'lqin shakllari va spektrogrammalarni chizish orqali audio ma'lumotlar haqidagi intuitiv tushunchamizni shakllantirish uchun foydalanamiz.
Birinchi tanishuv: Audioni yuklash va vizualizatsiya qilish
Keling, oddiy vazifadan boshlaymiz: audio faylni yuklash va uning to'lqin shaklini vizualizatsiya qilish. Avvalo, kerakli kutubxonalar o'rnatilganligiga ishonch hosil qiling:
pip install librosa numpy matplotlib
Endi, audio faylni (masalan, `.wav` faylini) yuklaydigan va uning qanday ko'rinishini ko'rsatadigan skript yozamiz.
import librosa
import librosa.display
import matplotlib.pyplot as plt
import numpy as np
# Audio faylingizga yo'lni belgilang
# Global auditoriya uchun umumiy yo'ldan foydalanish yaxshiroq
audio_path = 'path/to/your/audio.wav'
# Audio faylni yuklash
# y - bu vaqt qatori (NumPy massivi sifatida audio to'lqin shakli)
# sr - bu diskretlash chastotasi
y, sr = librosa.load(audio_path)
# Ma'lumotlarimiz shaklini ko'rib chiqamiz
print(f"To'lqin shakli: {y.shape}")
print(f"Diskretlash chastotasi: {sr} Hz")
# To'lqin shaklini vizualizatsiya qilish
plt.figure(figsize=(14, 5))
librosa.display.waveshow(y, sr=sr)
plt.title('Audio to\'lqin shakli')
plt.xlabel('Vaqt (s)')
plt.ylabel('Amplituda')
plt.grid(True)
plt.show()
Ushbu kodni ishga tushirganingizda, vaqt o'tishi bilan audioning amplitudasini ko'rsatuvchi grafikni ko'rasiz. Bu vaqt-domenidagi tasvir intuitivdir, lekin u nutqni tushunish uchun hayotiy muhim bo'lgan chastota tarkibi haqida aniq ma'lumot bermaydi.
Dastlabki ishlov berish bosqichi: Audioni tozalash va normallashtirish
Haqiqiy dunyodagi audio tartibsiz bo'ladi. U fon shovqini, sukunat davrlari va ovoz balandligidagi o'zgarishlarni o'z ichiga oladi. "Yomon ma'lumot kirsa, yomon natija chiqadi" tamoyili ayniqsa mashinaviy ta'limda to'g'ri keladi. Dastlabki ishlov berish - bu bizning belgilarni ajratib olishimiz mustahkam va izchil bo'lishini ta'minlash uchun audioni tozalash va standartlashtirishning muhim bosqichidir.
1. Normallashtirish
Audio fayllar juda xilma-xil ovoz balandligi darajalariga ega bo'lishi mumkin. Baland yozuvlarda o'qitilgan model past yozuvlarda yomon ishlashi mumkin. Normallashtirish amplituda qiymatlarini barqaror diapazonga, odatda -1.0 dan 1.0 gacha o'lchaydi. Keng tarqalgan usul - bu cho'qqi normallashtirish bo'lib, bunda butun signal uning maksimal mutlaq amplitudasiga bo'linadi.
# Cho'qqi normallashtirish
max_amplitude = np.max(np.abs(y))
if max_amplitude > 0:
y_normalized = y / max_amplitude
else:
y_normalized = y # Ovozsiz audio uchun nolga bo'lishning oldini olish
print(f"Asl maksimal amplituda: {np.max(np.abs(y)):.2f}")
print(f"Normallashtirilgan maksimal amplituda: {np.max(np.abs(y_normalized)):.2f}")
2. Qayta diskretlash (Resampling)
ASR modeli barcha kiruvchi ma'lumotlarning bir xil diskretlash chastotasiga ega bo'lishini kutadi. Biroq, audio fayllar turli xil chastotalarga ega bo'lgan turli manbalardan kelishi mumkin (masalan, 48 kHz, 44.1 kHz, 22.05 kHz). Biz ularni nutqni aniqlash vazifalari uchun ko'pincha 16 kHz bo'lgan maqsadli chastotaga qayta diskretlashimiz kerak.
target_sr = 16000
if sr != target_sr:
y_resampled = librosa.resample(y=y, orig_sr=sr, target_sr=target_sr)
print(f"Qayta diskretlangan to'lqin shakli: {y_resampled.shape}")
sr = target_sr # Diskretlash chastotasi o'zgaruvchisini yangilash
else:
y_resampled = y
3. Kadrlarga bo'lish va Oynalash
Nutq dinamik, nostatsionar signaldir; uning statistik xususiyatlari (chastota tarkibi kabi) vaqt o'tishi bilan o'zgaradi. Masalan, 'sh' tovushi yuqori chastotali tarkibga ega, 'o' unli tovushi esa pastroq chastotali tarkibga ega. Butun audio klipni bir vaqtning o'zida tahlil qilish bu tafsilotlarni aralashtirib yuboradi.
Buni hal qilish uchun biz kadrlarga bo'lish (framing) deb nomlangan usuldan foydalanamiz. Biz audio signalni qisqa, bir-birini qoplaydigan kadrlarga, odatda 20-40 millisekund uzunlikda, bo'lib chiqamiz. Har bir qisqa kadr ichida biz signalni kvazi-statsionar deb hisoblashimiz mumkin, bu esa uni chastota tahlili uchun mos qiladi.
Biroq, signalni shunchaki kadrlarga bo'lish chekkalarda keskin uzilishlarni keltirib chiqaradi, bu esa chastota domenida keraksiz artefaktlarni (spektral oqish deb ataladigan hodisa) paydo qiladi. Buni yumshatish uchun har bir kadrga oyna funksiyasi (masalan, Hamming, Hanning yoki Blackman oynasi) qo'llaymiz. Bu funksiya kadrning amplitudasini boshida va oxirida nolga yaqinlashtiradi, o'tishlarni silliqlaydi va artefaktlarni kamaytiradi.
Librosa biz keyingi bo'limda muhokama qiladigan Qisqa vaqtli Furye o'zgartirishini (STFT) amalga oshirganimizda kadrlarga bo'lish va oynalashni avtomatik ravishda bajaradi.
Vaqtdan chastotaga: Furye o'zgartirishining kuchi
To'lqin shakli bizga amplituda vaqt o'tishi bilan qanday o'zgarishini ko'rsatadi, ammo nutq uchun biz har bir lahzada qanday chastotalar mavjudligi bilan ko'proq qiziqamiz. Aynan shu yerda Furye o'zgartirishi yordamga keladi. Bu vaqt domenidagi signalni uning tarkibiy chastota komponentlariga ajratadigan matematik vositadir.
Buni prizma kabi tasavvur qiling. Prizma oq yorug'lik nurini (vaqt-domenidagi signal) olib, uni ranglar kamalakiga (chastota-domenidagi komponentlar) ajratadi. Furye o'zgartirishi tovush uchun ham xuddi shunday vazifani bajaradi.
Qisqa vaqtli Furye o'zgartirishi (STFT)
Nutqning chastota tarkibi vaqt o'tishi bilan o'zgarganligi sababli, biz butun signalga faqat bitta Furye o'zgartirishini qo'llay olmaymiz. Buning o'rniga, biz Qisqa vaqtli Furye o'zgartirishi (STFT)dan foydalanamiz. STFT quyidagi jarayonlardan iborat:
- Signalni qisqa, bir-birini qoplaydigan kadrlarga bo'lish (kadrlash).
- Har bir kadrga oyna funksiyasini qo'llash (oynalash).
- Har bir oynalangan kadr uchun Diskret Furye o'zgartirishini (DFT) hisoblash. Tezkor Furye O'zgartirishi (FFT) shunchaki DFTni hisoblash uchun juda samarali algoritmdir.
STFT natijasi kompleks qiymatli matritsa bo'lib, unda har bir ustun kadrni, har bir qator esa chastota qutisini ifodalaydi. Bu matritsadagi qiymatlarning kattaligi bizga har bir chastotaning har bir vaqt nuqtasidagi intensivligini bildiradi.
Chastotalarni vizualizatsiya qilish: Spektrogramma
STFT natijasini vizualizatsiya qilishning eng keng tarqalgan usuli bu spektrogrammadir. Bu quyidagilarga ega bo'lgan 2D grafik:
- X o'qi: Vaqt
- Y o'qi: Chastota
- Rang/Intensivlik: Ma'lum bir vaqtdagi ma'lum bir chastotaning amplitudasi (yoki energiyasi).
Spektrogramma tovushni "ko'rish" imkonini beradigan kuchli vositadir. Biz unga qarab unlilar, undoshlar va nutq ritmini aniqlashimiz mumkin. Keling, Librosa yordamida bitta yaratamiz.
# Biz avvalgi qadamdagi qayta diskretlangan audiodan foydalanamiz
y_audio = y_resampled
# STFT parametrlari
# n_fft - FFT uchun oyna o'lchami. Keng tarqalgan qiymat 2048.
# hop_length - ketma-ket kadrlar orasidagi namunalar soni. Qoplanishni belgilaydi.
# win_length - oyna funksiyasining uzunligi. Odatda n_fft bilan bir xil.
n_fft = 2048
hop_length = 512
# STFTni bajarish
stft_result = librosa.stft(y_audio, n_fft=n_fft, hop_length=hop_length)
# Natija kompleks. Vizualizatsiya uchun biz kattalikni olib, detsibellarga (dB) aylantiramiz.
D = librosa.amplitude_to_db(np.abs(stft_result), ref=np.max)
# Spektrogrammani ko'rsatish
plt.figure(figsize=(14, 5))
librosa.display.specshow(D, sr=sr, hop_length=hop_length, x_axis='time', y_axis='log')
plt.colorbar(format='%+2.0f dB')
plt.title('Spektrogramma (logarifmik chastota shkalasi)')
plt.xlabel('Vaqt (s)')
plt.ylabel('Chastota (Hz)')
plt.show()
Ushbu vizualizatsiya nutqning boy spektral tuzilishini ochib beradi. Yorqin gorizontal chiziqlar formantalar deb ataladi, ular ma'lum chastotalar atrofida akustik energiyaning to'planishidir. Formantalar turli unli tovushlarni farqlash uchun juda muhimdir.
Ilg'or belgilarni ajratib olish: Mel-chastotali kepstral koeffitsientlar (MFCCs)
Spektrogramma ajoyib tasvir bo'lsa-da, uning ASR uchun ikkita muammosi bor:
- Perseptual nomuvofiqlik: Chastota o'qi chiziqlidir. Biroq, inson eshitishi bunday emas. Biz ohangni logarifmik shkalada idrok etamiz; biz past chastotalardagi o'zgarishlarga yuqori chastotalardagiga qaraganda ancha sezgirmiz. Masalan, 100 Hz va 200 Hz orasidagi farq 10,000 Hz va 10,100 Hz orasidagi farqdan ancha sezilarli.
- Yuqori o'lchamlilik va korrelyatsiya: Spektrogramma juda ko'p ma'lumotni o'z ichiga oladi va qo'shni chastota qutilari ko'pincha yuqori darajada bog'liq bo'ladi. Bu ba'zi mashinaviy ta'lim modellarining samarali o'rganishini qiyinlashtirishi mumkin.
Mel-chastotali kepstral koeffitsientlar (MFCCs) bu muammolarni hal qilish uchun ishlab chiqilgan. Ular an'anaviy ASR uchun oltin standart belgilar bo'lib, bugungi kunda ham kuchli asos bo'lib qolmoqda. MFCC'larni yaratish jarayoni inson eshitishining ba'zi jihatlarini taqlid qiladi.
Mel shkalasi
Perseptual muammoni hal qilish uchun biz Mel shkalasidan foydalanamiz. Bu tinglovchilar bir-biridan teng masofada deb hisoblaydigan ohanglarning perseptual shkalasidir. U taxminan 1 kHz dan pastda chiziqli va undan yuqorida logarifmikdir. Biz inson idrokiga yaxshiroq moslashish uchun chastotalarni Gerts'dan Mel shkalasiga o'tkazamiz.
MFCC hisoblash jarayoni
Audio signaldan MFCC'lar qanday hisoblanishining soddalashtirilgan bosqichma-bosqich tavsifi:
- Kadrlash va Oynalash: STFT uchun bo'lgani kabi.
- FFT va Quvvat spektri: Har bir kadr uchun FFTni hisoblang va keyin quvvat spektrini (kattalikning kvadrati) hisoblang.
- Mel filtrlar to'plamini qo'llash: Bu asosiy qadam. Quvvat spektriga uchburchak filtrlar to'plami (filtrbank) qo'llaniladi. Bu filtrlar past chastotalarda chiziqli va yuqori chastotalarda logarifmik ravishda joylashgan bo'lib, Mel shkalasini taqlid qiladi. Bu qadam turli chastota qutilaridagi energiyani kamroq sonli Mel-shkalasi qutilariga jamlaydi va o'lchamlilikni kamaytiradi.
- Logarifm olish: Filtrbank energiyalarining logarifmini oling. Bu insonning ovoz balandligini idrok etishini taqlid qiladi, bu ham logarifmikdir.
- Diskret Kosinus O'zgartirishi (DCT): Log filtrbank energiyalariga DCTni qo'llang. DCT FFTga o'xshaydi, lekin faqat haqiqiy sonlardan foydalanadi. Uning bu yerdagi maqsadi filtrbank energiyalarini dekorrelyatsiya qilishdir. Natijadagi DCT koeffitsientlari juda ixcham bo'lib, asosiy spektral ma'lumotlarni o'zida saqlaydi.
Natijada olingan koeffitsientlar MFCC'lardir. Odatda, biz faqat birinchi 13-20 koeffitsientni saqlab qolamiz, chunki ular nutq fonemalari uchun eng muhim ma'lumotlarni o'z ichiga oladi, yuqori koeffitsientlar esa ko'pincha shovqin yoki nutq mazmuniga kamroq aloqador bo'lgan nozik detallarni ifodalaydi.
Python'da MFCC'larni hisoblash
Yaxshiyamki, Librosa bu murakkab jarayonni bitta funksiya chaqiruvi bilan nihoyatda osonlashtiradi.
# MFCC'larni hisoblash
# n_mfcc - qaytariladigan MFCC'lar soni
n_mfcc = 13
mfccs = librosa.feature.mfcc(y=y_audio, sr=sr, n_fft=n_fft, hop_length=hop_length, n_mfcc=n_mfcc)
print(f"MFCC'lar shakli: {mfccs.shape}")
# MFCC'larni vizualizatsiya qilish
plt.figure(figsize=(14, 5))
librosa.display.specshow(mfccs, sr=sr, hop_length=hop_length, x_axis='time')
plt.colorbar(label='MFCC Koeffitsient qiymati')
plt.title('MFCCs')
plt.xlabel('Vaqt (s)')
plt.ylabel('MFCC Koeffitsient indeksi')
plt.show()
Natija 2D massiv bo'lib, unda har bir ustun kadr va har bir qator MFCC koeffitsientidir. Bu ixcham, perseptual ahamiyatga ega va dekorrelyatsiyalangan matritsa mashinaviy ta'lim modeli uchun mukammal kirish ma'lumotidir.
Barchasini birlashtirish: Amaliy ish jarayoni
Keling, o'rganganlarimizning barchasini audio fayl yo'lini olib, qayta ishlangan MFCC belgilarini qaytaradigan yagona, qayta foydalanish mumkin bo'lgan funksiyaga jamlaymiz.
import librosa
import numpy as np
def extract_features_mfcc(audio_path):
"""Audio fayldan MFCC belgilarini ajratib oladi.
Args:
audio_path (str): Audio faylga yo'l.
Returns:
np.ndarray: MFCC belgilarining 2D massivi (n_mfcc x n_frames).
"""
try:
# 1. Audio faylni yuklash
y, sr = librosa.load(audio_path, duration=30) # Dastlabki 30 soniyani yuklash
# 2. Standart chastotaga qayta diskretlash (masalan, 16 kHz)
target_sr = 16000
if sr != target_sr:
y = librosa.resample(y=y, orig_sr=sr, target_sr=target_sr)
sr = target_sr
# 3. Audioni normallashtirish
max_amp = np.max(np.abs(y))
if max_amp > 0:
y = y / max_amp
# 4. MFCC'larni ajratib olish
# Nutq uchun keng tarqalgan parametrlar
n_fft = 2048
hop_length = 512
n_mfcc = 13
mfccs = librosa.feature.mfcc(
y=y,
sr=sr,
n_fft=n_fft,
hop_length=hop_length,
n_mfcc=n_mfcc
)
# (Ixtiyoriy, lekin tavsiya etiladi) Belgilarni masshtablash
# Belgilarni nol o'rtacha qiymat va birlik dispersiyaga ega bo'lish uchun standartlashtirish
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
mfccs_scaled = scaler.fit_transform(mfccs.T).T
return mfccs_scaled
except Exception as e:
print(f"{audio_path} ni qayta ishlashda xatolik: {e}")
return None
# --- Foydalanish namunasi ---
audio_file = 'path/to/your/audio.wav'
features = extract_features_mfcc(audio_file)
if features is not None:
print(f"Belgilar muvaffaqiyatli ajratib olindi, shakli: {features.shape}")
# Bu 'features' massivi endi mashinaviy ta'lim modeliga uzatish uchun tayyor.
MFCC'lardan tashqari: Boshqa muhim audio belgilar
MFCC'lar kuchli va keng qo'llaniladigan belgi bo'lsa-da, audio ishlov berish sohasi kengdir. Chuqur o'rganishning rivojlanishi bilan, ba'zan oddiyroq bo'lgan boshqa belgilar ham yuqori samaradorlikni ko'rsatdi.
- Log-Mel Spektrogrammalari: Bu DCTdan oldingi MFCC hisoblashdagi oraliq qadamdir. Zamonaviy Konvolyutsion Neyron Tarmoqlari (CNNs) fazoviy naqshlarni o'rganishda juda yaxshi. Butun log-Mel spektrogrammasini CNNga uzatish orqali, model tegishli korrelyatsiyalarni o'zi o'rganishi mumkin, ba'zan esa qo'lda dekorrelyatsiyalangan MFCC'lardan yaxshiroq natija ko'rsatadi. Bu zamonaviy, to'liq (end-to-end) ASR tizimlarida juda keng tarqalgan yondashuvdir.
- Nol kesishish darajasi (ZCR): Bu signalning ishorasini o'zgartirish (musbatdan manfiyga yoki aksincha) tezligidir. Bu signalning shovqinliligi yoki chastota tarkibining oddiy o'lchovidir. 's' yoki 'f' kabi jarangsiz tovushlar unlilar kabi jarangli tovushlarga qaraganda ancha yuqori ZCRga ega.
- Spektral Markaz (Spectral Centroid): Bu spektrning "og'irlik markazi"ni aniqlaydi. Bu tovushning yorqinligi o'lchovidir. Yuqori spektral markaz yuqori chastotali tarkibga ega bo'lgan yorqinroq tovushga mos keladi.
- Xroma Belgilari (Chroma Features): Bular 12 ta standart ohang sinflarining har biridagi (C, C#, D va hokazo) energiyani ifodalovchi belgilardir. Asosan musiqa tahlili uchun (masalan, akkordlarni aniqlash) ishlatilsa-da, ular tonalli tillarda yoki prozodiyani tahlil qilishda foydali bo'lishi mumkin.
Xulosa va keyingi qadamlar
Biz tovushning fundamental fizikasidan boshlab, murakkab, mashina o'qiy oladigan belgilarni yaratishgacha bo'lgan sayohatni bosib o'tdik. Asosiy xulosa shuki, audio signallarga ishlov berish bu o'zgartirish jarayonidir — xom, murakkab to'lqin shaklini olib, uni tizimli ravishda nutq uchun muhim bo'lgan xususiyatlarni ta'kidlaydigan ixcham, mazmunli tasvirga aylantirishdir.
Endi siz tushunasizki:
- Raqamli audio uzluksiz tovush to'lqinining diskret tasviri bo'lib, uning diskretlash chastotasi va bit chuqurligi bilan belgilanadi.
- Normallashtirish va qayta diskretlash kabi dastlabki ishlov berish bosqichlari mustahkam tizim yaratish uchun hal qiluvchi ahamiyatga ega.
- Furye o'zgartirishi (STFT) vaqt domenidan chastota domeniga o'tish eshigi bo'lib, u spektrogramma orqali vizualizatsiya qilinadi.
- MFCC'lar Mel shkalasidan foydalanib inson eshitish idrokini taqlid qiladigan va DCT yordamida ma'lumotlarni dekorrelyatsiya qiladigan kuchli belgilar to'plamidir.
Yuqori sifatli belgilarni ajratib olish barcha muvaffaqiyatli nutqni aniqlash tizimlarining poydevoridir. Zamonaviy to'liq (end-to-end) chuqur o'rganish modellari qora quti kabi ko'rinishi mumkin bo'lsa-da, ular ham asosan ichki darajada shu kabi o'zgartirishlarni bajarishni o'rganadilar.
Bundan keyin nima qilish kerak?
- Tajriba qiling: Ushbu qo'llanmadagi kodni turli audio fayllar bilan ishlating. Erkak ovozi, ayol ovozi, shovqinli yozuv va toza yozuvni sinab ko'ring. To'lqin shakllari, spektrogrammalar va MFCC'lar qanday o'zgarishini kuzating.
- Yuqori darajali kutubxonalarni o'rganing: Tezkor ilovalar yaratish uchun Google'ning `SpeechRecognition` kabi kutubxonalari barcha signalni qayta ishlash va modellashtirishni siz uchun bajaradigan oson ishlatiladigan API'ni taqdim etadi. Bu yakuniy natijani ko'rishning ajoyib usuli.
- Model yarating: Endi siz belgilarni ajratib olishni bilasiz, keyingi mantiqiy qadam ularni mashinaviy ta'lim modeliga uzatishdir. TensorFlow/Keras yoki PyTorch yordamida oddiy kalit so'zni aniqlash modelidan boshlang. Siz yaratgan MFCC'larni oddiy neyron tarmog'iga kirish sifatida ishlatishingiz mumkin.
- Ma'lumotlar to'plamlarini kashf eting: Haqiqiy ASR modelini o'qitish uchun sizga ko'p ma'lumotlar kerak. Katta hajmdagi audio ma'lumotlar qanday ko'rinishga ega ekanligini ko'rish uchun LibriSpeech, Mozilla Common Voice yoki TED-LIUM kabi mashhur ochiq manbali ma'lumotlar to'plamlarini o'rganing.
Audio va nutq dunyosi chuqur va qiziqarli sohadir. Signalni qayta ishlash tamoyillarini o'zlashtirib, siz ovozli texnologiyalarning keyingi avlodini yaratish eshigini ochdingiz.