โลโก้ 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 ข้างไฟล์เสียงใน 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