Rozpoznawanie i tłumaczenie mowy w czasie rzeczywistym w C#
Program przechwytuje strumień dźwięku z platform takich jak Teams, dzieli go na frazy na podstawie amplitudy głosu i pauz. Następnie model Whisper przetwarza mowę na język rosyjski, angielski lub francuski, po czym następuje tłumaczenie. Implementacja w C# zawiera około 20% kodu ręcznego — reszta to integracje. Obsługuje tryb nagrywania (diktófon) przy wyborze jednego języka: tylko rozpoznawanie z opcjonalnym zapisem dźwięku.
Ustawienia pozwalają dostroić:
- Poziom amplitudy głosu do wykrywania mowy.
- Długość pauzy między frazami.
Statystyka w prawym dolnym rogu wyświetla aktualne poziomy dźwięku i flagi wykrycia — umożliwia precyzyjne dopasowanie. Przechwytywanie działa tylko przez systemowy mikser (słuchawki/dynamiczne), mikrofon bezpośredni nie jest obsługiwany.
Wybór modelu Whisper i wydajność
Przetestowane lokalne rozwiązania STT:
- Sherpa (ONNX): wersja strumieniowa dla francuskiego nie pasowała do architektury.
- Foundry Local (Microsoft): surowe dane, komunikacja plikowa, oparte na Whisper.
Wybrano Whisper:
| Model | Szybkość | Logika | Uwagi |
|--------|----------|--------|-------------|
| Base | Szybka | Brak | Minimalna, bez kontekstu |
| Small | Średnia | Tak | Optymalny balans, temperatura 0,1–0,2 |
| Medium | Powolna | Dobrze | Kolejka fragmentów rośnie podczas żywej konferencji |
Bez NPU/GPU — obciążenie RAM, ale jakość jest akceptowalna przy dobrym jakości dźwięku z spotkań.
Integracja usług tłumaczenia
Dwa podejścia:
- OpenAI: klucz, model, URL w ustawieniach.
- Azure Translator: klucz, 2 miliony znaków miesięcznie za darmo, wymaga konta.
Interfejs ITranslationService upraszcza dodawanie nowych serwisów (możliwe API Yandex z billingiem). Lokalne tłumaczniki nie miały odpowiedników o porównywalnej jakości.
Przykład konfiguracji dla Azure:
public class AzureTranslationService : ITranslationService
{
private readonly string _key;
// ...
}
Praktyczne scenariusze i ograniczenia
Narzędzie rozwiązuje problem tłumaczenia w czasie rzeczywistym na spotkaniach zagranicznych bez nagrywania. Testowane na francuskim, angielskim i rosyjskim. Nie jest uniwersalnym nagrywaczem — tylko wyjście systemowe.
Dla programistów średniozaawansowanych i zaawansowanych: architektura modułowa, skupiona na przetwarzaniu strumieniowym fragmentów. Rozszerzalność poprzez zmianę STT/tłumaczenia lub dodanie algorytmów VAD.
Co ważne:
- Przechwytywanie dźwięku systemowego, dzielenie fraz według parametrów podobnych do VAD.
- Whisper Small to optymalne rozwiązanie dla RT: temperatura 0,1–0,2, bez GPU.
- Prosty interfejs dla usług tłumaczeniowych, Azure darmowe do 2M znaków.
- Tryb STT-only do transkrypcji bez tłumaczenia.
- Statystyka do dopasowania wykrywania mowy.
— Editorial Team
Brak komentarzy.