API расшифровки аудио на n8n: готовый шаблон с Palatine Speech
Бесплатный шаблон для n8n: POST-эндпоинт /transcribe принимает аудиофайл и возвращает расшифровку в JSON. Понадобятся API-ключ Palatine Speech и n8n с нодой Palatine Speech, а перед публикацией адреса включите Header Auth.
- Шаблон бесплатный
- 3 рабочие ноды
- n8n Cloud и self-hosted
- Нода с открытым кодом (MIT)
- от 0,29 ₽/мин
- Данные в РФ (152-ФЗ)
Как работает шаблон
Шаблон «Expose a speech-to-text /transcribe API with Palatine Speech» из библиотеки n8n превращает ваш n8n в API расшифровки аудио: HTTP-эндпоинт, на который любой сервис отправляет файл и получает текст. Скрипт, форма или сервис шлёт POST с аудиофайлом и получает текст в JSON. Свой бэкенд для этого писать не нужно: приём файла, обращение к Palatine Speech и ответ клиенту собраны из трёх нод.

Так шаблон выглядит на холсте n8n: три блока «Receive the audio», «Process with Palatine Speech» и «Deliver the result». Над ними после импорта будет ещё заметка с описанием шаблона на английском.
Файл приходит как multipart/form-data в поле data, и n8n кладёт его в бинарное поле с тем же именем. Нода Palatine Speech берёт бинарник по умолчанию из data, поэтому соединять поля вручную не приходится. Ответ клиенту отправляет нода Respond to Webhook: webhook в шаблоне настроен так, что отвечает именно она, а не сам триггер. Кроме трёх рабочих нод, на холсте есть четыре заметки: описание шаблона и подписи трёх блоков.
| Нода | Тип | Что делает |
|---|---|---|
| Receive Audio (Webhook) | Webhook | принимает POST на путь transcribe, ответ оставляет за нодой Respond to Webhook |
| Palatine Speech Transcription | Palatine Speech | распознаёт файл моделью palatine_large_highspeed, язык определяет сам |
| Return Transcript | Respond to Webhook | отправляет клиенту JSON-элементы, пришедшие с предыдущей ноды (режим All Incoming Items) |
Что понадобится до установки
Нужны API-ключ Palatine Speech из личного кабинета и n8n с установленной нодой Palatine Speech. Клиенты обращаются к адресу вашего n8n, поэтому он должен быть доступен им по сети.
Ноду ставят как community-пакет n8n-nodes-palatine-speech (версия 1.1.1, лицензия MIT), работу с ним проверяли на n8n 1.39.1 и новее. Какие файлы принимает распознавание: из аудио AIFF, ASF, FLAC, M4A/AAC, MP3, OGG (Vorbis и Opus), Opus и WAV, из видео AVI, MKV, MOV и MP4, у которых берётся только звуковая дорожка. Эти списки взяты из документации API и описывают само распознавание.
Установка по шагам
Порядок повторяет описание шаблона на n8n.io: нода и ключи, затем проверка на тестовом адресе, затем защита и публикация.
- Поставьте ноду. На своём сервере: Settings → Community Nodes → Install, пакет
n8n-nodes-palatine-speech, при включённойN8N_COMMUNITY_PACKAGES_ENABLED=true. В n8n Cloud ноду выбирают из верифицированных, если она доступна в вашем рабочем пространстве. - Добавьте шаблон в n8n со страницы шаблона на n8n.io или импортируйте файл transcribe-api.json.
- Откройте ноду Palatine Speech Transcription и добавьте учётные данные Palatine Speech API: ключ из личного кабинета, Base URL
https://api.palatine.ru. - Отправьте POST в формате
multipart/form-dataс файлом в полеdataна тестовый адресhttps://<ваш n8n>/webhook-test/transcribe. Он работает, пока в редакторе включено прослушивание тестового события (Listen for Test Event). Проверьте, что в ответе пришла расшифровка. - До того как давать адрес кому-то ещё, откройте ноду Webhook и включите авторизацию Header Auth. Учётные данные передавайте только доверенным клиентам.
- Опубликуйте воркфлоу и переключите клиентов на рабочий адрес
https://<ваш n8n>/webhook/transcribe. Вызовы рабочего адреса в редакторе не показываются, смотрите их во вкладке Executions. Заодно выставьте лимиты загрузки под своё развёртывание, о них ниже.
Третий и пятый шаги делают разные вещи. Ключ Palatine нужен, чтобы n8n мог обращаться к API, а Header Auth защищает ваш эндпоинт: без него адрес открыт всем, кто его знает, и каждая расшифровка списывается с баланса вашего ключа.
Ограничения синхронного эндпоинта
Главная особенность шаблона в том, что эндпоинт синхронный. Клиент отправляет файл и держит HTTP-соединение, пока нода в n8n опрашивает задачу в API Palatine Speech: нода создаёт задачу, а потом спрашивает её статус. У Palatine Speech нет вебхуков о готовности, поэтому узнать результат иначе, чем опросом, нельзя.
По умолчанию нода опрашивает задачу каждые 500 мс и делает до 200 попыток, то есть ждёт около 100 секунд. Если запись за это время не обработана, нода завершается ошибкой «Task … did not complete within polling limit (200 attempts)». Для длинных записей увеличьте Polling Interval (Ms) или Max Poll Attempts в Polling Options. Значения интервала ровно 1000 мс и числа попыток ровно 300 нода подменяет на 500 мс и 200 попыток, поэтому берите другие числа, например 2000 мс или 400 попыток. Общее ожидание равно интервалу, умноженному на число попыток (максимум 1000 попыток, интервал до 900000 мс). Но и тогда упрётесь в таймауты на стороне клиента, обратного прокси или балансировщика: пока клиент ждёт ответа, они могут оборвать соединение раньше, чем придёт расшифровка.
| Ограничение | Что произойдёт | Как обойти |
|---|---|---|
| Ожидание дольше лимита опроса (по умолчанию около 100 с) | нода падает с ошибкой polling limit | увеличить Polling Interval (Ms) и Max Poll Attempts |
| Таймаут прокси, балансировщика или клиента | клиент получает обрыв, расшифровка теряется | отвечать сразу, а результат доставлять отдельно (см. ниже) |
| Размер запроса в n8n | запрос с тяжёлым файлом будет отклонён | поднять N8N_PAYLOAD_SIZE_MAX и N8N_FORMDATA_FILE_SIZE_MAX (значения по умолчанию смотрите в документации n8n) |
| Нет Header Auth | любой знающий адрес запускает расшифровку за ваш счёт | включить Header Auth на ноде Webhook |
| Content-Type части multipart не совпадает с форматом файла | документация API требует совпадения | передавать тип, который соответствует реальному формату |
Лимиты размера в n8n задаются на уровне вашего развёртывания. Актуальные значения лимитов смотрите в документации вашей версии n8n. На странице документации Palatine Speech о поддерживаемых файлах максимальные длительность и размер файла не указаны.
Как доработать шаблон
Из коробки шаблон возвращает то, что отдала нода Palatine Speech: имя файла, название модели и текст. Нода кладёт это в поля task, source_file, model_used и transcription. Форму ответа проверьте на тестовом адресе до того, как писать клиент: нода Respond to Webhook в режиме All Incoming Items отправляет JSON-массив из элементов со входа, и при одном элементе ответ тоже массив из одного объекта: [{"task": "transcribe", ...}]. Клиенту нужно брать расшифровку из первого элемента массива. Если нужен объект, замените режим на First Incoming Item.
Ответ можно расширить метаданными, передать расшифровку в другое приложение или записать её в базу либо таблицу.
Модель тоже можно сменить, у ноды их две: palatine_small по умолчанию, быстрая и компактная, и palatine_large_highspeed, которая в описании ноды медленнее и точнее. Для субтитров подойдёт операция Diarize, умеющая отдавать SRT и VTT через параметр Response Format. Операции Summarize (сценарий meeting_summary или свой user_prompt) и Sentiment Analysis добавляют краткое содержание и оценку тона.
Для длинных записей эндпоинт надо переделать: поставьте Respond to Webhook перед нодой Palatine Speech, чтобы клиент сразу получал ответ «принято», а готовый текст уходил по другому каналу. Это можно сделать в таблицу, в чат или HTTP Request на адрес, который клиент сообщил вместе с файлом. Колбэк в этом случае отправляет ваш n8n, у самого Palatine Speech вебхуков нет. Готовые сценарии без собственных HTTP-запросов есть в соседних шаблонах: расшифровка голосовых Telegram и расшифровка записей из Google Диска.
Шаблон n8n или прямой API: что выбрать
Эндпоинт на n8n удобен, когда вызывающей стороне нужен один простой POST без опроса задач, а между ней и распознаванием нужны своя авторизация и пара дополнительных шагов, например запись результата в базу. Типичные клиенты: форма на сайте, внутренний сервис или no-code-платформа, которая умеет только отправить файл и получить ответ.
Если в продукте уже есть бэкенд и разработчик, n8n становится лишним звеном, и Speech-to-Text API надёжнее вызывать напрямую. У прямого вызова нет посредника, вы сами задаёте таймауты и работаете с асинхронной задачей. В API язык можно указать явно параметром language, а нода сейчас определяет его сама. Документация советует задавать язык, если все записи на одном языке: автоопределение смотрит на начало записи и может ошибаться, когда речи там мало. Если же нужно просто один раз получить текст из файла, хватит веб-кабинета.
| Вариант | Когда подходит | Где ломается | Что на выходе |
|---|---|---|---|
| Эндпоинт на n8n | клиенту нужен один POST, а дальше свои шаги и авторизация | синхронное ожидание: лимит опроса и таймауты на пути | JSON с расшифровкой |
| API Palatine Speech напрямую | свой сервис, управление таймаутами и языком | нужен разработчик, опрос статуса задачи на вашей стороне | JSON, текст, SRT или VTT |
| Веб-кабинет | разовые файлы без автоматизации | в процесс не встроить | текст в браузере |
Сколько стоит и где обрабатываются данные
Шаблон бесплатный, а нода n8n-nodes-palatine-speech открыта под лицензией MIT. Платите только за распознанные минуты: от 0,29 ₽ за минуту, без подписки, неиспользованный баланс не сгорает. Тестовые минуты для проверки выдаём по запросу.
Запись идёт от клиента в ваш n8n и дальше в API Palatine Speech. Его серверы стоят в четырёх ЦОД уровня Tier III в России, трафик шифруется по TLS, обработка соответствует 152-ФЗ, обучения моделей на записях клиентов нет. Если и ваш n8n на сервере в РФ, запись не покидает российский контур. Но вызовы видны во вкладке Executions, учитывайте это для чувствительных записей.
Ответы на вопросы
Не нашли ответ на свой вопрос? Напишите нам
Сколько стоит пользоваться шаблоном?
Сам шаблон и нода бесплатны (MIT). Деньги списываются только за распознанные минуты, от 0,29 ₽, а вызовы чужими людьми на открытом адресе тоже идут с вашего баланса, поэтому включите Header Auth.
Как отправить файл на эндпоинт?
POST-запросом в формате multipart/form-data, файл кладут в поле data. Адрес для проверки: https://<ваш n8n>/webhook-test/transcribe, пока в редакторе включено прослушивание тестового события. После публикации воркфлоу работает адрес https://<ваш n8n>/webhook/transcribe.
Как защитить эндпоинт?
Откройте ноду Webhook, выберите Authentication → Header Auth и задайте имя заголовка и секрет. Клиент передаёт этот заголовок в каждом запросе, без него n8n отвечает ошибкой.
Почему на длинных записях приходит ошибка?
Эндпоинт синхронный: клиент ждёт, пока нода опрашивает задачу. По умолчанию это 200 попыток с интервалом 500 мс, около 100 секунд, затем ошибка polling limit. Увеличьте Polling Interval (Ms) и Max Poll Attempts, а для совсем длинных записей отвечайте клиенту сразу и доставляйте текст другим путём.
Есть ли вебхук о готовности расшифровки?
Нет, у Palatine Speech вебхуков нет. Колбэк при необходимости отправляет ваш n8n через HTTP Request.
Какие файлы принимает распознавание?
Аудио и видео основных форматов (MP3, WAV, M4A, OGG, MP4 и другие), полный список в документации API. Content-Type части multipart должен соответствовать формату файла.
Можно ли задать язык записи?
Нода сейчас выбирает язык сама. Если у вас все записи на одном языке и важна точность, вызывайте API напрямую с параметром language.
Куда уходят записи?
Клиент отправляет файл в ваш n8n, оттуда он идёт в API Palatine Speech: четыре ЦОД Tier III в России, TLS, 152-ФЗ, обучения моделей на ваших записях нет.