Stereo Ses Akışlarında Deterministik Konuşmacı Ayrımı: VAD, Kanal Sahipliği ve Segment Sınırları
Stereo kayıtlarda kanal eşlemesi altyapı tarafından garanti edildiğinde konuşmacı kimliği tahmin edilmek yerine kanal sahipliğinden türetilebilir. Bu yaklaşım, bağımsız kanal VAD sonuçlarını, doğrulama pencerelerini, tek aktif segment durum makinesini ve açık süre sınırlarını birleştirerek tekrarlanabilir segmentler üretir.
VL(t) ∈ {0, 1} ve VR(t) ∈ {0, 1} kararları, stereo kayıtta sol ve sağ kanalların geçerli konuşma taşıyıp taşımadığını ayrı ayrı gösterir. Kanal eşlemesi kayıt mimarisi tarafından garanti edildiğinde,
sol kanal → konuşmacı A
sağ kanal → konuşmacı Bkonuşmacı kimliği biyometrik olarak tahmin edilmez; fiziksel giriş kanalından türetilir. Bu durumda temel sorun, hangi zaman aralığında hangi kanalın geçerli konuşma taşıdığını ve bu konuşmanın hangi segmentte işleneceğini belirlemektir.
Genel konuşmacı günlükleme, tek ses akışındaki parçaları akustik benzerliklerine göre kümeler ve konuşmacı etiketi atar. Kanal tabanlı ayrım ise uygun bir durum makinesi, güvenilir bir ses etkinliği algılayıcısı ve açık segment kurallarıyla deterministik olabilir. Aynı PCM girdisi, aynı konuşmacı sırasını, segment sınırlarını ve çıktı zamanlarını üretir.
Kanal sahipliği ve VAD kararları
Kanal sahipliğinin güvenilirliği aşağıdaki altyapı varsayımına bağlıdır:
channelOwner(left) = A
channelOwner(right) = BBu eşleme iki uçlu telefon, telsiz veya operatör sistemleri gibi yapılarda sağlanabilir. Ancak bir kanalda enerji bulunması, o kanal sahibinin konuştuğunu tek başına göstermez. Karşı kanal sızıntısı, hoparlör-mikrofon yankısı, otomatik kazanç kontrolü, çevresel gürültü, tonlar, kısa darbeler ve codec artefaktları yanlış etkinlik oluşturabilir.
Bu nedenle aşağıdaki enerji karşılaştırması yeterli değildir:
energy(left) > energy(right) ise konuşmacı ABu kural yalnızca baskın genliği seçer; konuşma etkinliğini, diğer kanalın gerçekten sessiz olup olmadığını veya eşzamanlı konuşmayı belirlemez. Daha sağlam yaklaşım, her kanal için bağımsız VAD kararı üretmektir:
VL = 0, VR = 0 → sessizlik
VL = 1, VR = 0 → sol kanal adayı
VL = 0, VR = 1 → sağ kanal adayı
VL = 1, VR = 1 → eşzamanlı veya belirsiz etkinlikİki kanalın eşzamanlı etkinliği için evrensel bir doğru politika yoktur. Tek aktif segment ve çakışmayan çıktı koşulunda, mevcut sahibin önceliğini korumak deterministik bir tercihtir. Aktif segment A'ya aitken iki kanal da etkin olduğunda A sürer; B, A'nın etkinliği sonlandıktan ve B etkinliği doğrulandıktan sonra sahip olabilir. Bu yaklaşım gerçek eşzamanlı konuşmanın tüm ayrıntılarını temsil etmez, ancak çakışan zaman aralıkları üretmez ve tek ses akışı bekleyen aşağı akış ASR sistemleriyle uyumludur.
Çerçeve, dönüş ve segment zaman ölçekleri
VAD kısa PCM çerçeveleri üzerinde çalışır. Örnek yapılandırmada örnekleme hızı 16 kHz, örnek biçimi 16 bit signed little-endian ve çerçeve süresi 10 ms'dir. Tek kanal için çerçevedeki örnek sayısı:
N = 16000 × 0,010 = 160 örnekHer örnek iki bayt olduğunda mono çerçeve boyutu 320 bayt, stereo interleaved çerçeve boyutu ise 640 bayttır:
160 × 2 = 320 bayt
160 × 2 kanal × 2 bayt = 640 baytTek bir 10 ms VAD kararı, doğrudan segment açma veya konuşmacı değiştirme kararına dönüştürülmemelidir. Gürültü darbeleri, patlamalı ünsüzler, yankı ve geçici sızıntılar kısa süreli karar değişimlerine yol açabilir. Bu nedenle üç zaman ölçeği ayrılmalıdır:
- Çerçeve düzeyi: VAD'nin anlık gözlemi.
- Dönüş düzeyi: Konuşmacı değişiminin doğrulandığı kısa pencere.
- Segment düzeyi: ASR veya başka bir modele gönderilen uzun zaman aralığı.
Aday sahip, belirli sayıda ardışık çerçevede baskın kalmadan aktif sahip değiştirilmez:
candidateFrames >= confirmThreshold10 ms çerçevelerde confirmThreshold = 4, yaklaşık 40 ms doğrulama penceresine karşılık gelir. Sekiz çerçeve ise yaklaşık 80 ms gözlem sağlar. Bu eşikler dilsel birimi ölçmez; sinyal kararının zamansal kararlılığını sınar.
Tek aktif segmentli bir durum makinesi aşağıdaki değişkenlerle kurulabilir:
owner ∈ {NONE, A, B}
segmentStart
segmentEnd
candidateOwner ∈ {NONE, A, B}
candidateCount
silenceCountAktif sahip yokken yalnızca bir kanal yeterince uzun konuşma taşıyorsa yeni segment açılır. A aktifken sol kanal etkin kaldığında segment uzatılır. Sol kanal sessizleşip sağ kanal etkinleştiğinde doğrudan A → B geçişi yapılmaz; önce B aday olur. Doğrulama süresi tamamlanırsa A segmenti kapatılır ve B segmenti açılır:
A → candidate B → BSessizlik, hedef süre ve zorunlu sınırlar
Sessizlik toleransı segment uzunluğuna göre değiştirilebilir:
segment < 3 saniye → yaklaşık 1000 ms
3 saniye ≤ segment < 25 → yaklaşık 300 ms
segment ≥ 25 saniye → yaklaşık 200 msParça parça tanımlanan eşik fonksiyonu şöyledir:
1000 ms, 0 ≤ T < 3
G(T) = 300 ms, 3 ≤ T < 25
200 ms, T ≥ 25Burada T aktif segment süresi, G(T) ise segmenti kapatmak için gereken ardışık sessizlik süresidir. Kısa segmentlerde daha uzun bekleme, bir veya iki kelimelik başlangıçtan sonraki doğal duraklamanın segmenti erken kapatmasını önler. Uzun segmentlerde daha kısa eşik ise segment büyümesini, model çağrısı gecikmesini ve bellek kullanımını sınırlar.
İki farklı uzunluk sınırı birlikte kullanılabilir:
hedef süre : 25 saniye
sert üst sınır : 29 saniyeUygulama davranışı şu şekilde tanımlanır:
T < 25 s
doğal sessizlik kurallarını uygula
25 s ≤ T < 29 s
ilk uygun sessizlikte kapat
T ≥ 29 s
sessizlik beklemeden zorunlu kapatHedef süre doğal duraklamalarda kapanışı tercih eder. Sert üst sınır, kesintisiz konuşmada segmentin büyüklüğünü kesin biçimde sınırlar. Bu sınırlar ASR çıkarım süresini, geçici tensor boyutlarını, özellik çıkarımı maliyetini, kuyruk gecikmesini ve hata durumunda yeniden işlenecek veri miktarını denetlemeye yardımcı olur.
Sert sınır çerçeve sınırına hizalanmalıdır. 10 ms çerçevelerde 29 saniye 2900 çerçevedir:
29 × 100 = 2900 çerçeveYuvarlama hatalarını önlemek için süre, kayan noktalı saniyeler yerine işlenmiş örnek veya çerçeve sayısıyla izlenebilir:
frameStart = processedSamples
frameEnd = frameStart + validSamplesZaman damgası örnek konumundan türetilir:
timeMs = sampleIndex × 1000 / sampleRate16 kHz için:
timeMs = sampleIndex / 16Tamsayı bölme sırası ve yuvarlama politikası sistem genelinde aynı kalmalıdır.
Minimum konuşma süresi ve ortak yönlendirme
Her VAD etkinliğinin doğrudan modele gönderilmesi verimli değildir. Kısa gürültüler, ünlemler ve yarım kelimeler gereksiz çıkarım oluşturabilir. Bu nedenle iki ayrı alt sınır kullanılabilir:
minimum gerçek konuşma süresi : 1 saniye
minimum model giriş süresi : 3 saniyeBir saniyeden kısa etkinlikler segment olarak reddedilebilir. Bir ile üç saniye arasındaki geçerli konuşma, modele gönderilmeden önce sessizlikle üç saniyeye tamamlanabilir. Geçerlilik ve model giriş boyutu ayrı değişkenlerle değerlendirilmelidir:
speechDuration = gerçek etkin konuşma süresi
modelDuration = konuşma + eklenen sessizlikGeçerlilik kararı speechDuration üzerinden, model giriş boyutu ise modelDuration üzerinden verilmelidir. Padding içerik miktarını artırmaz; yalnızca modelin minimum giriş koşulunu karşılar.
Mono girişte tek VAD sonucu doğrudan genel konuşmacı etiketi veya A'ya yönlendirilebilir:
V(t) = 1 → A
V(t) = 0 → NONEStereo girişte kanallar ayrı tamponlara ayrılır ve bağımsız VAD uygulanır. Her iki giriş türü de ortak route mantığına aynı bilgileri iletebilir:
owner
PCM verisi
geçerli bayt sayısı
frameStart
frameEndBöylece segmentleme altyapısı ortak kalır; fark yalnızca sahip belirleme aşamasındadır:
mono → tek VAD sonucu
stereo → iki VAD sonucu + sahiplik politikasıInterleaved stereo PCM düzeni L0, R0, L1, R1, L2, R2, ... biçimindedir. Kanallar ayrı tamponlara kopyalanırken iki kanaldaki n numaralı örnek aynı zaman konumunu temsil etmelidir. İşlenmiş örnek sayısı kanal başına zaman eksenini göstermelidir:
processedSamples += validSamplesPerChannelStereo toplam örnek sayısı veya toplam bayt sayısı bu değişkene doğrudan eklenmemelidir.
Determinizm ve kanal ayrımının sınırları
Sabit çerçeve boyutu, önceden ayrılmış tamponlar, tamsayı örnek sayaçları ve açık durum geçişleri kullanıldığında çerçeve başına işlem maliyeti yaklaşık sabittir:
O(N)Burada N çerçevedeki örnek sayısıdır. Toplam maliyet ses süresiyle doğrusal büyür:
O(F × N)F, toplam çerçeve sayısını gösterir. Her çerçevede yeni nesne, koleksiyon, stream, lambda veya geçici kanal dizisi oluşturmak çöp toplayıcı basıncını ve gecikme değişkenliğini artırabilir. Önceden ayrılmış tamponlar ile yeniden kullanılan VAD durumları, zaman davranışını daha öngörülebilir kılar. Aynı girdiden aynı segmentlerin üretilmesi, hata ayıklamada VAD, kanal seçimi, ASR ve metin sonrası işlemlerin ayrı incelenmesini sağlar.
Kanal tabanlı sahiplik, genel diarization'ın yerine her durumda geçebilen bir yöntem değildir. Aynı kanalı birden fazla kişi kullanıyorsa, mikrofonlar konuşmacıya sabit değilse, stereo kayıt yalnızca mekânsal ses için oluşturulmuşsa, kanallar mikslenmişse, bir konuşmacı iki kanala benzer düzeyde yayılıyorsa veya yönlendirme kayıtlar arasında değişiyorsa kanal kimliği konuşmacı kimliği olarak kullanılamaz. Bu koşullarda embedding tabanlı temsilciler, kümeleme, speaker verification veya beamforming gibi yöntemler gerekir.
Buna karşılık kanal eşlemesi altyapı tarafından güvenilir biçimde sağlanıyorsa, konuşmacı kimliğini yeniden tahmin etmek gereksiz hesaplama ve belirsizlik ekleyebilir. VAD yalnızca konuşma etkinliğini gözlemler; kanal eşlemesi kimliği verir; durum makinesi zaman içi tutarlılığı sağlar; segment kuralları ise aşağı akış modelinin gecikme ve giriş sınırlarını korur.