شعار 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 مع كل شيء آخر.

تقدّم يمكنك رؤيته

يُظهر الحقل مقدار ما اكتمل من الصوت ويبقى بعد إعادة تحميل الصفحة. ويُنهي «إيقاف» أي مهمة لم تعد تريدها.

المحررون يبقون أصحاب القرار

النص المُفرَّغ نص عادي يمكن للمحرر تصحيحه، بالسجل نفسه وطريقة النشر نفسها التي لبقية المستند.

المفتاح يبقى على الخادم

يتواصل 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