Файл по ссылке
Как транскрибировать аудиофайл по прямой ссылке через Nexara API.
Вместо загрузки файла с диска можно передать прямую ссылку на аудио, и Nexara API скачает файл и вернёт текст из аудио. Вместо поля file передаётся поле url в том же запросе POST /v1/audio/transcriptions, а результат приходит в ответе.
Транскрибация
Ниже представлен один и тот же запрос на разных языках программирования. Замените nx-XXXXXXXXXXXXXXXXXXXXXXXX на свой API-ключ, а https://example.com/audio.mp3 — на прямую ссылку к вашему файлу.
curl https://api.nexara.ru/v1/audio/transcriptions \
-H "Authorization: Bearer nx-XXXXXXXXXXXXXXXXXXXXXXXX" \
-F "url=https://example.com/audio.mp3" \
-F "model=whisper-1"import requests
response = requests.post(
"https://api.nexara.ru/v1/audio/transcriptions",
headers={"Authorization": "Bearer nx-XXXXXXXXXXXXXXXXXXXXXXXX"},
data={
"url": "https://example.com/audio.mp3",
"model": "whisper-1",
},
)
print(response.json()["text"])Node.js 18+:
const form = new FormData();
form.append("url", "https://example.com/audio.mp3");
form.append("model", "whisper-1");
const response = await fetch(
"https://api.nexara.ru/v1/audio/transcriptions",
{
method: "POST",
headers: { Authorization: "Bearer nx-XXXXXXXXXXXXXXXXXXXXXXXX" },
body: form,
},
);
const result = await response.json();
console.log(result.text);package main
import (
"fmt"
"io"
"net/http"
"net/url"
"strings"
)
func main() {
form := url.Values{}
form.Set("url", "https://example.com/audio.mp3")
form.Set("model", "whisper-1")
req, _ := http.NewRequest("POST", "https://api.nexara.ru/v1/audio/transcriptions", strings.NewReader(form.Encode()))
req.Header.Set("Authorization", "Bearer nx-XXXXXXXXXXXXXXXXXXXXXXXX")
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}require "net/http"
require "uri"
require "json"
uri = URI("https://api.nexara.ru/v1/audio/transcriptions")
request = Net::HTTP::Post.new(uri)
request["Authorization"] = "Bearer nx-XXXXXXXXXXXXXXXXXXXXXXXX"
request.set_form_data(
"url" => "https://example.com/audio.mp3",
"model" => "whisper-1",
)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(request)
end
puts JSON.parse(response.body)["text"]Результат
По умолчанию (response_format=json) в ответе возвращается распознанный текст:
{
"text": "Привет! Это пример транскрибации."
}Формат ответа можно менять параметром response_format — json (по
умолчанию), text, verbose_json, srt или vtt. Подробнее — на странице
форматы ответа.
Что учитывать
- Ссылка должна быть публичной. По ссылке должен скачиваться сам аудиофайл, без авторизации и редиректов на страницу. Если ссылка недоступна или отдаётся слишком медленно, запрос завершится ошибкой. В качестве ссылок лучше всего подходит pre-signed ссылка на S3 бакет. Ссылки на YouTube, TikTok, VK и другие соцсети не поддерживаются.
- Форматы файлов. Принимается большинство существующих аудио- и видеоформатов. Полный список — на странице поддерживаемых файлов.
- Размер файла. Максимальный размер одного файла — 3 ГБ. Подробнее — на странице лимитов.
- Частота запросов. Синхронный эндпоинт ограничен 10 запросами в секунду. Подробнее читайте здесь — Лимиты.
- Хранение ключа. Не вставляйте API-ключ прямо в код. Храните его в переменной окружения (например,
export NEXARA_API_KEY="nx-...") и ссылайтесь на неё. Подробнее — на странице аутентификации.Для длинных записей вместо синхронного запроса используйте асинхронный режим.