API документація
Сервер на FastAPI приймає аудіо через WebSocket і повертає розпізнаний текст із перекладом у реальному часі.
Швидкий старт
Запусти бекенд із кореня проекту. Моделі завантажуються один раз при першому підключенні.
# Запуск WebSocket-сервера (CPU, моделі вантажаться один раз)
python server.py
# Сервер слухає на:
# HTTP: http://localhost:8000
# WebSocket: ws://localhost:8000/wsHTTP-ендпоінти
/Проста тестова HTML-сторінка з інформацією про сервер.
text/html/healthПеревірка стану сервера та список підтримуваних мов.
{ "status": "ok", "languages": ["uk", "ru", "en", "de", "pl"] }/wsДвонаправлений стрим: конфігурація сесії та аудіо → текст.
JSON-повідомлення (див. нижче)curl http://localhost:8000/health
# {"status":"ok","languages":["uk","ru","en","de","pl"]}WebSocket · /ws
Підключись до сервера, спочатку надішли config, дочекайся config_ok, потім стримь повідомлення audio.
ws://localhost:8000/wsПовідомлення клієнта
configклієнт → серверНалаштовує сесію: мову мовлення та мову перекладу. Надсилається першим.
type"config"Тип повідомленняsource_langstringКод мови мовлення (uk, ru, en, de, pl)target_langstringКод мови перекладуaudioклієнт → серверФрагмент аудіо float32 PCM, 16 kHz, моно. is_final=true запускає переклад і post-processing.
type"audio"Тип повідомленняaudionumber[]Семпли float32 (-1.0…1.0), 16 kHzis_finalbooleantrue — кінець фрази (переклад + пунктуація)Відповіді сервера
config_okсервер → клієнтПідтвердження конфігурації. Після нього можна слати аудіо.
type"config_ok"Тип повідомленняsource_langstringПідтверджена мова мовленняtarget_langstringПідтверджена мова перекладуpartialсервер → клієнтПроміжний результат розпізнавання (без перекладу).
type"partial"Тип повідомленняtextstringРозпізнаний текст (може бути порожнім)source_langstringМова мовленняfinalсервер → клієнтФінальний результат: перекладений текст + оригінал. Приходить на is_final=true.
type"final"Тип повідомленняtextstringПерекладений текстoriginalstringОригінальний розпізнаний текстsource_langstringМова мовленняtarget_langstringМова перекладуПриклад клієнта (JS)
Мінімальний браузерний клієнт. Аудіо має бути float32 PCM, 16 kHz, моно — так само, як надсилає сторінка демо.
const ws = new WebSocket("ws://localhost:8000/ws");
ws.onopen = () => {
// 1. Налаштовуємо сесію: uk → en
ws.send(JSON.stringify({
type: "config",
source_lang: "uk",
target_lang: "en",
}));
};
ws.onmessage = (event) => {
const msg = JSON.parse(event.data);
if (msg.type === "config_ok") {
// 2. Шлемо аудіо чанками (float32 PCM, 16 kHz, моно)
ws.send(JSON.stringify({
type: "audio",
audio: [/* ... float семпли ... */],
is_final: false,
}));
}
if (msg.type === "partial") console.log("проміжний:", msg.text);
if (msg.type === "final") console.log("переклад:", msg.text);
};Підтримувані мови
| Код | Мова |
|---|---|
uk | 🇺🇦 Українська |
ru | 🇷🇺 Русский |
en | 🇬🇧 English |
de | 🇩🇪 Deutsch |
pl | 🇵🇱 Polski |