Распознавание речи (Speech-to-Text) стало базовой потребностью для любого цифрового проекта: от мгновенной расшифровки голосовых сообщений в Telegram-ботах поддержки до автоматического протоколирования планерок в CRM и транскрибации подкастов. Однако использование публичного OpenAI Whisper API в российских реалиях сопряжено с серьезными препятствиями: необходимость оплаты зарубежными картами, риски внезапных блокировок аккаунтов, сетевые задержки и строгие требования 152-ФЗ при трансграничной передаче персональных данных клиентов за пределы РФ. Развертывание собственного автономного STT-сервера на базе Faster-Whisper и Speaches в связке с Docker Compose решает эти проблемы раз и навсегда. Благодаря движку CTranslate2 и 8-битному квантованию (int8) система работает в 2.5–4 раза быстрее оригинального Whisper от OpenAI и превосходно справляется с потоком аудиозаписей даже на доступных CPU-тарифах VDS без необходимости арендовать дорогостоящие видеокарты.
1. Зачем бизнесу свой STT-сервер на VDS: сравнение с облачными API
Оригинальная модель Whisper от OpenAI совершила революцию в качестве распознавания многоязычной речи, однако облачная модель монетизации («pay-as-you-go») создает финансовые и регуляторные ловушки для растущего бизнеса. Переход на собственный сервер транскрибации дает сразу пять ключевых преимуществ:
- Локализация данных и соответствие 152-ФЗ: Аудиозаписи звонков менеджеров, разговоры с клиентами, финансовые обсуждения и персональные данные обрабатываются строго внутри изолированного контура вашего VDS в российском дата-центре. Это исключает необходимость сложного согласования трансграничной передачи данных с регуляторами и риски утечек в зарубежные облака.
- Нулевая зависимость от зарубежных биллингов: Вам больше не нужны посредники, виртуальные карты или криптовалюта для пополнения баланса OpenAI API. Сервер арендуется у надежного отечественного хостинг-провайдера за рубли с закрывающими бухгалтерскими документами.
- Фиксированная и предсказуемая стоимость: Облачные API тарифицируются поминутно ($0.006 за минуту аудио). Если отдел продаж обрабатывает 500 часов звонков в месяц, облачный счет составит от 18 000 ₽ ежемесячно. Собственный VDS с 4 ядрами vCPU обойдется всего в 1 000–1 500 ₽ в месяц и сможет перемалывать неограниченный объем аудио 24/7.
- Нативная совместимость с экосистемой OpenAI: Сервер Speaches реализует стандартный протокол
/v1/audio/transcriptions. Это означает, что любой готовый софт, Telegram-бот или библиотека на Python/Node.js переключаются на ваш VDS сменой всего одной строчки конфигурации (base_url). - Отсутствие жестких Rate Limits: Публичные API ограничивают число параллельных запросов (RPM/TPM). На своем сервере вы сами управляете очередью, пакетной обработкой и приоритетами.
| Критерий оценки | OpenAI Whisper API | Оригинальный openai/whisper | Faster-Whisper на VDS |
|---|---|---|---|
| Стоимость | $0.006 за минуту (растущий чек) | Бесплатно (нужен мощный GPU VDS) | Фиксированная цена VDS (от 800 ₽/мес) |
| Скорость на CPU | Быстро (удаленный кластер) | Очень медленно (PyTorch overhead) | В 2.5–4 раза быстрее (CTranslate2 int8) |
| Потребление RAM | 0 МБ (внешний API) | 4–10 ГБ (FP32/FP16 веса) | В 2.5–3 раза меньше (int8 квантование) |
| Приватность (152-ФЗ) | Трансграничная передача в США | Полная изоляция данных | Полная изоляция в РФ (собственный VDS) |
| Готовый OpenAI REST API | Да (родной стандарт) | Нет (только Python CLI/библиотека) | Да (/v1/audio/transcriptions из коробки) |
2. Архитектура Faster-Whisper и CTranslate2: почему это работает быстро на обычном CPU
Классическая библиотека openai-whisper реализована поверх тяжеловесного фреймворка PyTorch. При выполнении инференса на центральном процессоре (CPU) PyTorch расходует огромные вычислительные ресурсы на динамические графы вычислений, управление тензорами общего назначения и работу в числах с плавающей запятой одинарной точности (FP32). В результате даже на 8-ядерном процессоре транскрибация 10-минутного аудиофайла моделью medium может занимать до 6–8 минут реального времени, полностью блокируя сервер.
Faster-Whisper кардинально меняет подход к инференсу благодаря трем ключевым инженерным решениям:
- Движок CTranslate2: Веса нейросети конвертируются в оптимизированный бинарный формат, который исполняется легковесным C++ runtime движком CTranslate2. Он использует аппаратно-ускоренные инструкции современных процессоров (AVX-512, AVX2, FMA) и полностью устраняет накладные расходы интерпретатора Python и среды PyTorch.
- 8-битное целочисленное квантование (int8): Матричные веса модели сжимаются из 32-битных чисел (FP32) в 8-битные целые числа (
int8). Это сокращает потребление оперативной памяти в 2.5–3 раза и увеличивает скорость математических матричных операций в разы практически без потери точности распознавания русского языка (разница по метрике WER составляет менее 0.3%). - Встроенный VAD (Voice Activity Detection): В оригинальном Whisper тишина в аудиофайле часто приводила к «галлюцинациям» модели — бесконечному повторению бессмысленных фраз или зависанию декодера. В Faster-Whisper встроен детектор голосовой активности Silero VAD, который предварительно нарезает аудиодорожку строго по границам человеческой речи и отбрасывает паузы, экономя до 30–50% процессорного времени.
💡 Совет инженера: Speaches как единый голосовой шлюз
Вместо того чтобы писать самописные микросервисы на FastAPI, мы используем готовый контейнер Speaches (проект от сообщества speaches-ai, ранее известный как faster-whisper-server). Он оборачивает движок Faster-Whisper в асинхронный сервер на uvloop, предоставляет 100% совместимый с OpenAI эндпоинт /v1/audio/transcriptions, поддерживает потоковый стриминг (Server-Sent Events) и автоматическую выгрузку неиспользуемых моделей из RAM по таймеру (TTL).
3. Выбор модели Whisper и расчет системных требований VDS
Семейство моделей Whisper делится на несколько весовых категорий. От выбора модели напрямую зависит баланс между точностью распознавания специфических терминов/фамилий и скоростью работы на CPU:
| Модель Faster-Whisper | Параметры | RAM (int8) | Относительная скорость | Рекомендуемый сценарий |
|---|---|---|---|---|
Systran/faster-whisper-tiny |
39 млн | ~250 МБ | Экстремально быстро (x15) | Короткие голосовые команды умного дома |
Systran/faster-whisper-small |
244 млн | ~500 МБ | Быстро (x6) | Голосовые в Telegram-ботах, чаты поддержки |
Systran/faster-whisper-medium |
769 млн | ~1.6 ГБ | Оптимально (x2–x3) | Записи звонков отдела продаж, CRM, совещания |
deepdml/faster-whisper-large-v3-turbo-ct2 |
809 млн | ~1.8 ГБ | Высокая (x4–x5) | Универсальный стандарт качества Large-v3 на CPU |
Systran/faster-whisper-large-v3 |
1550 млн | ~3.2 ГБ | Медленно на CPU (x1) | Транскрибация длинных видеолекций, субтитры |
Для большинства прикладных задач малого бизнеса (Telegram-боты, распознавание речи клиентов, CRM) идеальным выбором является модель faster-whisper-small или турбо-версия large-v3-turbo. Они обеспечивают точность свыше 95% для чистой русской речи и при этом моментально отвечают пользователю.
Минимальные и рекомендуемые требования к VDS
- Процессор (vCPU): критически важна высокая тактовая частота ядра (от 3.3 ГГц и выше), так как линейные матричные вычисления сильно зависят от IPC ядра. Минимум — 2 vCPU (для
small), рекомендуется — 4 vCPU (для одновременной обработки звонков наmedium/turbo). - Оперативная память (RAM): минимум — 2 ГБ (для модели
smallс ОС и Nginx), рекомендуется — 4–8 ГБ (для комфортной работыmedium, предотвращения вызова OOM Killer и запаса под кэш файловой системы). - Дисковая подсистема: быстрый NVMe-накопитель объемом от 20–30 ГБ. Модели Whisper скачиваются из HuggingFace и кэшируются локально (от 500 МБ до 3 ГБ на модель).
- Операционная система: Ubuntu 24.04 LTS x86_64 или Debian 12.
4. Подготовка сервера и установка Docker на Ubuntu 24.04 LTS
Перед установкой сервиса обновим пакеты системы, настроим базовые утилиты и установим свежую стабильную версию Docker Engine по официальной методике Docker:
# Обновление индекса пакетов и компонентов системы
sudo apt update && sudo apt upgrade -y
# Установка вспомогательных утилит
sudo apt install -y ca-certificates curl gnupg lsb-release htop ffmpeg
# Добавление официального GPG-ключа Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Подключение официального репозитория Docker
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Установка Docker Engine, CLI и плагина Docker Compose
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Проверка корректности установки
docker compose version
⚠️ Важное предупреждение: права группы docker
Если вы администрируете сервер под непривилегированным пользователем (например, ubuntu или deploy), добавьте его в группу docker: sudo usermod -aG docker $USER && newgrp docker. Помните, что доступ к сокету Docker эквивалентен правам суперпользователя root. Никогда не открывайте Docker-сокет наружу в сеть.
Создадим рабочую директорию проекта и выделим изолированные папки для постоянного хранения кэша загруженных моделей:
# Создание каталога проекта STT
mkdir -p /opt/faster-whisper/models_cache
# Переход в директорию
cd /opt/faster-whisper
# Назначение владельца (UID 1000 для стандартного пользователя контейнера speaches)
sudo chown -R 1000:1000 /opt/faster-whisper/models_cache
5. Развертывание Speaches (Faster-Whisper) в Docker Compose
Для продакшен-эксплуатации создадим безопасную конфигурацию. Мы строго соблюдаем три фундаментальных правила безопасности и надежности:
- Изоляция порта на loopback: Внутренний порт контейнера
8000биндится исключительно на127.0.0.1:8000. Это гарантирует, что сервис защищен от обхода межсетевого экрана UFW через таблицыiptablesDocker. Доступ снаружи будет контролироваться обратным прокси-сервером Nginx с проверкой SSL и авторизацией. - Жесткие лимиты ресурсов: Задаются нативные директивы
mem_limitиcpus. В моменты транскрибации тяжелых аудиофайлов контейнер не сможет занять 100% оперативной памяти хоста и спровоцировать системный сбой ядра. - Авторизация через Bearer-токен: Генерируется надежный секретный ключ
API_KEY, защищающий эндпоинты транскрибации от несанкционированного доступа ботов и сканеров.
Сгенерируем надежный 32-байтный ключ доступа с помощью утилиты OpenSSL:
openssl rand -hex 32
Создадим файл переменных окружения /opt/faster-whisper/.env:
# Секретный API-ключ для доступа к STT (Bearer token)
API_KEY=f9c2d84a7e6b1234567890abcdef1234567890abcdef1234567890abcdef
# Устройство инференса (cpu или cuda для серверов с GPU)
WHISPER__INFERENCE_DEVICE=cpu
# Тип квантования весов: int8 для максимальной скорости на CPU
WHISPER__COMPUTE_TYPE=int8
# Число вычислительных потоков CPU (соответствует числу ядер vCPU)
WHISPER__CPU_THREADS=4
# Тайм-аут выгрузки модели из RAM в секундах (300 сек = 5 мин, -1 = держать вечно)
WHISPER__TTL=300
# Включение пакетного режима инференса для ускорения обработки очередей
WHISPER__USE_BATCHED_MODE=true
# Путь к локальному каталогу кэша моделей HuggingFace
HF_HUB_CACHE=/home/ubuntu/.cache/huggingface/hub
💡 Совет инженера: подбор паролей и безопасность
Если под рукой нет консоли для генерации токенов, воспользуйтесь онлайн-утилитой Генератор надежных паролей SysKit: выберите длину от 32 символов в шестнадцатеричном или буквенно-цифровом формате.
Теперь сформируем файл оркестрации /opt/faster-whisper/docker-compose.yml:
services:
speaches:
image: ghcr.io/speaches-ai/speaches:0.8.3-cpu
container_name: speaches-stt
restart: unless-stopped
env_file:
- .env
ports:
# Биндинг строго на локальную петлю 127.0.0.1 для защиты от внешнего сканирования
- "127.0.0.1:8000:8000"
volumes:
# Постоянное хранилище кэша весов моделей на диске хоста
- ./models_cache:/home/ubuntu/.cache/huggingface/hub
mem_limit: 4096m
cpus: 3.8
healthcheck:
test: ["CMD", "curl", "--fail", "http://127.0.0.1:8000/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 20s
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
Запустим контейнер в фоновом режиме и проверим статус инициализации сервиса:
# Запуск контейнера в фоновом режиме
docker compose up -d
# Просмотр логов запуска
docker compose logs -f speaches
# Проверка статуса контейнера и healthcheck
docker compose ps
Проверим доступность внутреннего health-эндпоинта через локальный запрос:
curl -s http://127.0.0.1:8000/health
В ответ сервер должен мгновенно вернуть JSON-ответ со статусом: {"status":"healthy"}.
Рекомендуемые VDS-провайдеры
Отказоустойчивые сервера с быстрыми NVMe и каналом до 1 Гбит/с
Timeweb Cloud — Высокочастотные VDS
Быстрые ядра vCPU до 3.3 ГГц и быстрые NVMe-диски для максимальной скорости матричных вычислений CTranslate2 на CPU.
Selectel — Надежная инфраструктура Tier III
Стабильные серверы в РФ с гарантированной полосой пропускания, защитой от сетевых атак и быстрым дисковым массивом.
Beget — Быстрый запуск VDS
Удобная панель управления сервером, моментальный деплой Docker из готового маркетплейса и оплата для юрлиц.
6. Настройка Nginx Reverse Proxy и автоматического выпуска SSL-сертификатов
Для защищенного взаимодействия с клиентами по протоколу HTTPS и корректной передачи многомегабайтных аудиозаписей настроим веб-сервер Nginx в качестве обратного прокси.
В конфигурации виртуального хоста необходимо учесть два критических параметра:
client_max_body_size 100M;— аудиозаписи совещаний или часовые подкасты в формате MP3/WAV легко превышают стандартный лимит Nginx в 1 МБ (вызывая ошибку 413 Request Entity Too Large).proxy_read_timeout 300s;— транскрибация длинных 30-минутных аудиофайлов на CPU требует времени. Стандартный таймаут Nginx в 60 секунд приведет к обрыву соединения и ошибке 504 Gateway Time-out.
Установим веб-сервер Nginx и утилиту Certbot с плагином интеграции:
sudo apt install -y nginx certbot python3-certbot-nginx
Создадим первичную конфигурацию хоста /etc/nginx/sites-available/stt.syskit.ru.conf (замените stt.syskit.ru на ваш реальный поддомен):
server {
listen 80;
server_name stt.syskit.ru;
# Максимальный размер загружаемого аудиофайла (до 100 МБ)
client_max_body_size 100M;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_http_version 1.1;
# Передача оригинальных заголовков клиента
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# Отключение буферизации запросов для ускорения передачи потока
proxy_request_buffering off;
proxy_buffering off;
# Увеличенные таймауты для тяжелой обработки аудио на CPU
proxy_connect_timeout 60s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
}
}
Активируем конфигурационный файл, проверим синтаксис и перезагрузим Nginx:
# Создание символической ссылки
sudo ln -s /etc/nginx/sites-available/stt.syskit.ru.conf /etc/nginx/sites-enabled/
# Проверка синтаксиса
sudo nginx -t
# Перезагрузка сервиса
sudo systemctl reload nginx
Выпустим бесплатный доверенный SSL-сертификат от Let's Encrypt с автоматической настройкой HTTPS-редиректа:
sudo certbot --nginx -d stt.syskit.ru --non-interactive --agree-tos -m admin@syskit.ru --redirect
💡 Совет инженера: проверка доступности портов и SSL
Перед выпуском сертификата убедитесь, что DNS-запись домена указывает на ваш сервер и 443 порт открыт. Проверить статус портов и корректность TLS-цепочки можно онлайн через Сканер портов SysKit и Проверку SSL-сертификатов. Если вместо Nginx вы предпочитаете стек на Caddy с автоматическим TLS из коробки, воспользуйтесь готовым рецептом в нашем каталоге: Caddy Reverse Proxy Docker Compose.
7. Проверка транскрибации через cURL и официальный OpenAI Python SDK
Теперь проверим работу STT-сервера на реальном аудиофайле. Скачаем тестовую короткую запись с речью и отправим запрос через утилиту cURL:
# Тестовый запрос транскрибации через curl с авторизацией Bearer
curl -s -X POST "https://stt.syskit.ru/v1/audio/transcriptions" \
-H "Authorization: Bearer f9c2d84a7e6b1234567890abcdef1234567890abcdef1234567890abcdef" \
-F "file=@test_audio.wav" \
-F "model=Systran/faster-whisper-small" \
-F "language=ru" \
-F "temperature=0.0"
В ответ сервер вернет стандартный JSON-объект спецификации OpenAI:
{
"text": "Здравствуйте, меня зовут Алексей, я звоню по поводу оформления заявки на сервер."
}
Поскольку сервер полностью повторяет интерфейс OpenAI API, в коде на Python достаточно указать параметры base_url и api_key. Покажем эталонный пример работы через официальный пакет openai:
from pathlib import Path
from openai import OpenAI
# Инициализация клиента OpenAI с перенаправлением на ваш собственный VDS
client = OpenAI(
base_url="https://stt.syskit.ru/v1",
api_key="f9c2d84a7e6b1234567890abcdef1234567890abcdef1234567890abcdef"
)
audio_path = Path("sample_voice.mp3")
with audio_path.open("rb") as audio_file:
# Запуск транскрибации
response = client.audio.transcriptions.create(
model="Systran/faster-whisper-small",
file=audio_file,
language="ru",
response_format="text"
)
print("Результат транскрибации:")
print(response)
Вы можете передавать аудиофайлы во всех популярных форматах: mp3, wav, ogg, m4a, flac и голосовые сообщения Telegram в формате ogg/opus. Встроенный декодер FFmpeg внутри контейнера Speaches автоматически преобразует входной поток в несжатый PCM 16 кГц, необходимый для работы акустической модели.
8. Готовый сценарий: Telegram-бот для мгновенной расшифровки голосовых сообщений
Одним из самых востребованных сценариев применения Faster-Whisper в команде является бот для расшифровки голосовых сообщений (войсов) и круглых видеосообщений в Telegram. Ниже представлен легкий асинхронный бот на библиотеке aiogram 3.x, который перехватывает войсы, отправляет их на ваш VDS и моментально присылает готовый текст:
import io
import html
from aiogram import Bot, Dispatcher, F
from aiogram.types import Message
from openai import AsyncOpenAI
import asyncio
# Токен Telegram-бота из @BotFather
TELEGRAM_TOKEN = "123456789:ABCdefGhIJKlmNoPQRstuVWXyz"
# Параметры вашего STT-сервера на VDS
STT_BASE_URL = "https://stt.syskit.ru/v1"
STT_API_KEY = "f9c2d84a7e6b1234567890abcdef1234567890abcdef1234567890abcdef"
bot = Bot(token=TELEGRAM_TOKEN)
dp = Dispatcher()
# Инициализация асинхронного клиента OpenAI
ai_client = AsyncOpenAI(base_url=STT_BASE_URL, api_key=STT_API_KEY)
@dp.message(F.voice | F.video_note)
async def handle_voice_message(message: Message):
# Уведомляем пользователя о начале обработки
status_msg = await message.reply("⏳ Расшифровываю аудиозапись...", parse_mode="HTML")
file_id = message.voice.file_id if message.voice else message.video_note.file_id
file_info = await bot.get_file(file_id)
# Скачивание файла в оперативную память без сохранения на диск
audio_bytes = io.BytesIO()
await bot.download_file(file_info.file_path, destination=audio_bytes)
audio_bytes.seek(0)
audio_bytes.name = "voice.ogg"
try:
# Запрос к собственному серверу Faster-Whisper
transcription = await ai_client.audio.transcriptions.create(
model="Systran/faster-whisper-small",
file=audio_bytes,
language="ru"
)
raw_text = transcription.text.strip()
if not raw_text:
result_html = "(Речь не распознана или запись пуста)"
else:
# Безопасное экранирование спецсимволов HTML для предотвращения сбоев разметки Telegram
safe_text = html.escape(raw_text)
result_html = f"🗣️ Расшифровка:\n\n{safe_text}"
await status_msg.edit_text(result_html, parse_mode="HTML")
except Exception as e:
await status_msg.edit_text(f"❌ Ошибка транскрибации: {html.escape(str(e))}", parse_mode="HTML")
async def main():
print("Бот транскрибации запущен...")
await dp.start_polling(bot)
if __name__ == "__main__":
asyncio.run(main())
Для голосового сообщения длительностью 15–30 секунд модель faster-whisper-small на 4 ядрах vCPU выполняет распознавание всего за 1.5–2 секунды, что сопоставимо со скоростью нативной работы платной подписки Telegram Premium, но работает полностью бесплатно и без передачи конфиденциальных аудиосообщений третьим лицам.
9. Тонкий тюнинг производительности на CPU и чек-лист эксплуатации
Чтобы выжать максимум скорости из доступного процессора VDS и исключить зависания при пиковых нагрузках, обратите внимание на следующие инженерные настройки:
Оптимизация параметров инференса CTranslate2
- Многопоточность OpenMP (
WHISPER__CPU_THREADS): Задавайте число потоков равным количеству физических или виртуальных ядер vCPU (например,4для 4-ядерного тарифа). Избыточное количество потоков (oversubscription) ведет к переключению контекста и падению скорости. - Пакетный режим (
WHISPER__USE_BATCHED_MODE=true): В серверной схеме Speaches (Pydantic-классWhisperConfig.use_batched_mode) пакетная обработка аудио ускоряет длинные файлы до 2–3 раз за счет параллельного декодирования независимых фрагментов речи с использованием батчинга Faster-Whisper. - Таймаут удержания в памяти (
WHISPER__TTL): Значение300секунд (5 минут) в конфигурацииWhisperConfig.ttlпозволяет автоматически выгрузить модель из RAM, если запросы приходят редко. Если ваш сервер обслуживает постоянный поток звонков из колл-центра, установитеWHISPER__TTL=-1, чтобы веса модели находились в RAM непрерывно и не требовали повторной загрузки с NVMe-диска при каждом звонке. - Параметр
temperature=0.0: Жадное декодирование (greedy decoding) минимизирует математические переборы и галлюцинации модели, повышая скорость на 15–20% по сравнению со случайным сэмплированием.
Чек-лист безопасности и надежности
| Элемент проверки | Рекомендуемое состояние | Назначение меры |
|---|---|---|
| Сетевой порт 8000 | 127.0.0.1:8000:8000 |
Защита от сканирования в обход межсетевого экрана UFW |
| Авторизация API | API_KEY ≥ 32 символов |
Предотвращение расхода вычислительных ресурсов сервера посторонними |
| Лимит памяти в Compose | mem_limit: 4096m |
Защита системных демонов VDS от падения при атаке OOM Killer |
| Лимит файла в Nginx | client_max_body_size 100M |
Бесперебойный прием многочасовых аудиозаписей без ошибки 413 |
| Таймауты в Nginx | proxy_read_timeout 300s |
Защита от преждевременного сброса соединения при длинных записях (ошибка 504) |
🎯 Разверните собственный STT-сервер на быстром VDS
Для стабильной работы Faster-Whisper и мгновенной расшифровки речи критически важна высокая однопоточная производительность процессора (от 3.3 ГГц) и быстрый NVMe-накопитель. Выберите надежный VDS с быстрыми ядрами и разверните собственный голосовой шлюз за считанные минуты.