Багатомікрофонне розпізнавання мови з діаризацією та AEC
Проблема та технічні складності
Уявіть переговорну на вісім осіб — кожен говорить, мікрофони на столі ловлять суміш голосів, луна від динаміків, шум кондиціонера. Звичайний STT з одним мікрофоном дає Word Error Rate (WER) 35–40% при двох активних мовцях. Без просторової обробки діалог перетворюється на нечитабельну кашу. Ми вирішуємо це завдання за допомогою масиву мікрофонів, адаптивного Beamforming, AEC та діаризації мовців. Після впровадження нашої системи в одного з клієнтів WER впав з 45% до 8%, а протокол зустрічі став придатним для аналізу. Економія на обробці записів зустрічей склала до 40% (вартість рішення від $15 000, окупність 3–6 місяців). Наша команда має понад 5 років досвіду в speech processing та виконала понад 50 проєктів.
Основні проблеми — перекриття мовлення, луна та реверберація, а також синхронізація багатоканального звуку. Перекриття: коли дві людини говорять одночасно, без просторового розділення діаризація помиляється в 30% випадків. Луна: динаміки відеоконференції повертають звук колонок назад у мікрофони — без AEC розпізнавання збивається (WER зростає до 60%). Реверберація в приміщенні з твердими стінами додає хвости тривалістю до 0.5 с — звичайний Delay-and-Sum їх не прибирає. Для синхронізації використовуємо PTP (Precision Time Protocol) на мікрофонних масивах, щоб уникнути дрейфу затримок. Допустиме розходження — не більше 1 семпла при частоті 16 кГц.
Кейс: зниження WER з 45% до 8% з нашої практики
У проєкті для конференц-залу нашого клієнта (виробнича компанія) ми зібрали лінійний масив з 4 мікрофонів, реалізували Delay-and-Sum beamformer, потім подавили луну через WebRTC AEC, і тільки після цього передавали сигнал у STT. Результат: точність розпізнавання зросла з 45% (один мікрофон) до 92%. Використання масиву мікрофонів знижує WER у 5 разів порівняно з одним мікрофоном. Код DelayAndSumBeamformer використовує координати мікрофонів і швидкість звуку для обчислення затримок. Але цього недостатньо в ревербераційних приміщеннях — там потрібен MVDR або GSC beamformer. Для типової переговорної достатньо лінійного масиву з відстанню 10 см між елементами.
import numpy as np
from scipy.signal import correlate
class DelayAndSumBeamformer:
def __init__(self, mic_positions: np.ndarray, sample_rate: int = 16000):
self.mic_positions = mic_positions # (n_mics, 3) координати в метрах
self.sample_rate = sample_rate
self.speed_of_sound = 343.0 # м/с
def compute_delays(self, direction: np.ndarray) -> np.ndarray:
delays = np.dot(self.mic_positions, direction) / self.speed_of_sound
delays -= delays.min()
return (delays * self.sample_rate).astype(int)
def beamform(self, signals: np.ndarray, direction: np.ndarray) -> np.ndarray:
delays = self.compute_delays(direction)
output = np.zeros(signals.shape[1])
for i, delay in enumerate(delays):
output += np.roll(signals[i], -delay)
return output / len(delays)
Чому діаризація важлива? Налаштування
Після beamforming сигнал все ще може містити голоси кількох людей. pyannote.audio 3.1 з переднавченою моделлю дає розмітку з точністю до 0.5 секунди. Ми налаштовуємо поріг активності голосу (VAD), кількість мовців та мінімальну довжину фрагмента. Без діаризації транскрибація буде змішувати репліки.
from pyannote.audio import Pipeline
pipeline = Pipeline.from_pretrained(
"pyannote/speaker-diarization-3.1",
use_auth_token="YOUR_HF_TOKEN"
)
diarization = pipeline("beamformed_output.wav", num_speakers=4)
for turn, _, speaker in diarization.itertracks(yield_label=True):
print(f"{speaker}: {turn.start:.1f}s - {turn.end:.1f}s")
Порівняння технологій
Порівняння алгоритмів beamforming
| Алгоритм | Складність | Придушення реверберації | Приклад реалізації |
|---|---|---|---|
| Delay-and-Sum | Низька | Низьке | scipy |
| MVDR | Середня | Середнє | librosa + scipy |
| GSC | Висока | Високе | pyroomacoustics |
MVDR придушує реверберацію приблизно в 2 рази ефективніше за Delay-and-Sum, але вимагає більше обчислювальних ресурсів.
Порівняння мікрофонних масивів
| Тип масиву | Кількість мікрофонів | Поле огляду | Приклад застосування |
|---|---|---|---|
| Лінійний | 4–6 | 180° | Переговорні столи |
| Круговий | 6–8 | 360° | Конференц-зали |
| Випадковий | ≥8 | Залежить від конфігурації | Спеціалізовані акустичні завдання |
Лінійний масив простіший у калібруванні, круговий дає краще розділення мовців по колу.
Як покроково налаштувати beamforming для переговорної?
- Виміряйте акустику приміщення: рівень реверберації (RT60) та розташування джерел шуму.
- Виберіть мікрофонний масив: лінійний 4–6 мікрофонів для стандартної кімнати.
- Реалізуйте захоплення звуку з синхронізацією через PTP або програмну кореляцію.
- Застосуйте Delay-and-Sum для первинного формування променя, потім MVDR при високому рівні реверберації.
- Додайте AEC для придушення луни від динаміків відеоконференції.
- Використовуйте VAD та діаризацію для розділення мовців, потім передайте кожен сегмент у STT.
Технічні деталі реалізації AEC
Детальніше про адаптивний фільтр
Адаптивний ехокомпенсатор (AEC) використовує NLMS-алгоритм для оцінки імпульсної характеристики акустичного шляху. Типова довжина фільтра — 512–2048 відліків при 16 кГц, що покриває до 128 мс луни. Для стабільності коефіцієнт кроку вибирають в діапазоні 0.1–0.5. Після фільтрації сигнал додатково обробляється блоком придушення залишкової луни (RES).
Терміни та обсяг робіт
Орієнтовні терміни
- Базовий прототип з beamforming та STT: від 1 тижня — якщо акустика приміщення проста.
- Додавання AEC та noise reduction: ще від 1 тижня.
- Повна система з діаризацією, dereverberation та калібруванням під масив: від 3 до 4 тижнів.
- Термін залежить від кількості мовців та рівня реверберації.
Що входить у роботу
- Проєкт архітектури масиву мікрофонів.
- Реалізація beamforming, AEC, noise reduction, діаризації.
- Інтеграція з STT (Whisper, Vosk, Azure Speech).
- Розробка API для інтеграції у вашу систему.
- Документація з налаштування та експлуатації.
- Навчання ваших інженерів.
- Гарантійна підтримка 1 місяць.
Вартість рішення — від $15 000, економія до 40% операційних витрат (до $10 000 на рік для середнього бізнесу).
Типові помилки та наступні кроки
Типові помилки при впровадженні
- Використовувати WebRTC AEC без попереднього калібрування — луна залишається.
- Розміщувати мікрофони ближче 5 см до динаміків — AEC не справляється.
- Забувати про синхронізацію тактових частот — дрейф часових міток ламає beamforming.
- Відключати Voice Activity Detection — зайві шуми засмічують діаризацію.
Отримайте консультацію з оснащення переговорної
Зв'яжіться з нами — ми проаналізуємо акустику вашої переговорної, підберемо мікрофонний масив та алгоритми. Оцінимо проєкт за 1–2 дні. Наші інженери мають сертифікати з мовного аналізу та виконали понад 50 проєктів у галузі speech processing. Компанія працює на ринку з 2016 року. Замовте консультацію — розповімо, як знизити WER та налагодити транскрибацію зустрічей.







