Powrót do strony głównej

Rozpoznawanie mowy Whisper w C# dla spotkań

Program w C# przechwytuje systemowy strumień audio, używa Whisper do STT i tłumaczy przez Azure/OpenAI. Optymalny model Small, ustawienia VAD dla fraz. Modułowa architektura do rozszerzenia.

Narzędzie C#: Whisper STT + tłumaczenie w czasie rzeczywistym
Advertisement 728x90

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.

Google AdInline article slot

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 |

Google AdInline article slot

|--------|----------|--------|-------------|

| Base | Szybka | Brak | Minimalna, bez kontekstu |

| Small | Średnia | Tak | Optymalny balans, temperatura 0,1–0,2 |

Google AdInline article slot

| 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

Advertisement 728x90

Czytaj dalej