لوگوی 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قسمت ۴۲: ساختن در معرض دید همهEpisode 41: PricingEpisode 40: Hiring
عنوانقسمت ۴۲: ساختن در معرض دید همه
صدا
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 کنار صدا در schema خود بگذارید و مسیر 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' }),
گزینه‌ها

متناسب با همان شکلی که ساخته‌اید

پیش‌فرض‌های معقول، و یک hook برای هر جایی که پیکربندی شما متفاوت است.

handlerURL

جایی که مسیر VocalStack روی سرور شما نصب شده است. Studio فقط همین نشانی را فراخوانی می‌کند.

audioField

کدام فیلد فایل در سند صدا را نگه می‌دارد. به‌طور پیش‌فرض، نخستین فیلدی که فایل صوتی دارد.

spokenLanguage

زبانی که در صدا صحبت می‌شود. آن را حذف کنید تا خودکار تشخیص داده شود.

fileURL

نشانی‌ای که VocalStack صدا را از آن دریافت می‌کند. به‌طور پیش‌فرض، نشانی فایل روی CDN در Sanity؛ برای فایل‌های خصوصی یک نشانی امضاشده برگردانید.

allowedOrigins

کدام نشانی‌های Studio اجازهٔ فراخوانی مسیر را دارند.

قیمت‌گذاری

بدون هزینهٔ افزونه

شما فقط برای صدایی که رونویسی می‌کنید به VocalStack پرداخت می‌کنید، با همان نرخ داشبورد و API. صورت‌حساب بر اساس ثانیه، با حداقل 5 دقیقه برای هر رونویسی.

فایل‌ها$0.20در ساعت

هر فایل صوتی که رونویسی می‌کنید، همراه با گویندگان، نشانه‌گذاری و زمان‌بندی.

پرسش‌های متداول

مشاهده در GitHubخواندن README