Багатомікрофонне розпізнавання мови з діаризацією та AEC

Багатомікрофонне розпізнавання мови з діаризацією та AEC

Напрямки AI-розробки

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1440
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    997
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1264
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    712
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    1002

Багатомікрофонне розпізнавання мови з діаризацією та 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 для переговорної?

  1. Виміряйте акустику приміщення: рівень реверберації (RT60) та розташування джерел шуму.
  2. Виберіть мікрофонний масив: лінійний 4–6 мікрофонів для стандартної кімнати.
  3. Реалізуйте захоплення звуку з синхронізацією через PTP або програмну кореляцію.
  4. Застосуйте Delay-and-Sum для первинного формування променя, потім MVDR при високому рівні реверберації.
  5. Додайте AEC для придушення луни від динаміків відеоконференції.
  6. Використовуйте 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 та налагодити транскрибацію зустрічей.