Логотип VocalStackЛоготип VocalStack
VOCALSTACK ДЛЯ SANITY

Транскрипти, які можна запитувати

Кнопка «Транскрибувати» біля аудіо у ваших документах Sanity Studio. Транскрипт зберігається в документі як редагований текст і речення з таймінгом, тож GROQ, ваш фронтенд і пошук читають його, як і будь-яке інше поле.

SANITY STUDIO 3+ · REACT 18+ · NODE 20+ · ВІД $0.20 ЗА ГОДИНУ АУДІО
acme.sanity.studio/structure/episode;42
AcmeStructureVision
ContentEpisodesHostsPages
EpisodesЕпізод 42: Будуємо публічноEpisode 41: PricingEpisode 40: Hiring
ЗаголовокЕпізод 42: Будуємо публічно
Аудіо
MP3episode-042.mp346.3 MB · audio/mpeg
Транскрипт
Транскрибування31:06 / 48:20
Стоп
00:00Вітаємо знову в програмі. Сьогодні: випускати рано.
00:07Перша версія була сирою, і в цьому й був сенс.
Publish

Запитуйте через GROQ

Транскрипт і його речення з таймінгом зберігаються в документі, тож GROQ і GraphQL API повертають їх разом з усім іншим.

Прогрес на виду

Поле показує, скільки аудіо вже оброблено, і зберігає стан після перезавантаження. «Стоп» завершує завдання, яке вам більше не потрібне.

Редактори все контролюють

Транскрипт — це звичайний текст, який редактор може виправити, з тією самою історією та публікацією, що й решта документа.

Ключ залишається на сервері

Studio звертається до одного маршруту на вашому власному сервері, де зберігається API-ключ. Ключ ніколи не потрапляє в браузер.

НАЛАШТУВАННЯ

Один плагін, одне поле, один маршрут

Додайте плагін до sanity.config.ts, поле vocalstack.transcript поруч з аудіо у вашій схемі та маршрут VocalStack до фронтенду (маршрут Next.js або будь-який Node чи edge-сервер). API-ключ зберігається в маршруті, тож ніколи не потрапляє в браузер.

01Встановіть плагін із GitHub і додайте його до конфігурації Studio.
02Додайте маршрут VocalStack до свого фронтенду, а API-ключ — до його середовища.
03Додайте поле vocalstack.transcript поруч із полем аудіофайлу, а потім натисніть «Транскрибувати».
bash
npm install github:vocalstack/sanity-plugin
typescript
// app/api/vocalstack/[...path]/route.ts
import { createVocalStackHandler } from '@vocalstack/sanity/server'

// The key is read from VOCALSTACK_API_KEY
const handler = createVocalStackHandler({ sanity: { projectId, dataset, token } })
export { handler as GET, handler as OPTIONS, handler as POST }

// sanity.config.ts
import { vocalstack } from '@vocalstack/sanity'

export default defineConfig({
  plugins: [vocalstack({ handlerURL: 'https://www.example.com/api/vocalstack' })],
})

// schemas/episode.ts
defineField({ name: 'audio', type: 'file' }),
defineField({ name: 'transcript', type: 'vocalstack.transcript' }),
ПАРАМЕТРИ

Пасує до того, як ви все побудували

Розумні типові значення й хук для кожного місця, де ваше налаштування відрізняється.

handlerURL

Де на вашому сервері змонтовано маршрут VocalStack. Studio звертається лише за цією адресою.

audioField

Яке файлове поле документа містить аудіо. Типово — перше поле з аудіофайлом.

spokenLanguage

Мова, якою говорять в аудіо. Не вказуйте її, щоб вона визначалася автоматично.

fileURL

Адреса, з якої VocalStack забирає аудіо. Типово — адреса файлу в CDN Sanity; для приватних файлів поверніть підписану адресу.

allowedOrigins

Які адреси Studio можуть звертатися до маршруту.

ЦІНИ

Без плати за плагін

Ви платите VocalStack лише за аудіо, яке транскрибуєте, за тим самим тарифом, що й у панелі керування та API. Посекундна оплата, щонайменше 5 хв за транскрипцію.

ФАЙЛИ$0.20за годину

Кожен аудіофайл, який ви транскрибуєте, разом із мовцями, пунктуацією та таймінгом.

Поширені запитання

Переглянути на GitHubПрочитати README