JSON subtitles and transcripts

BukaSimpanTranskripSpeech-to-text

Bukan satu format melainkan banyak: JSON adalah cara mesin speech-to-text, situs video, dan situs subtitle menyerahkan subtitle serta transkrip, masing-masing dengan bentuknya sendiri. Subtitld menyimpan dengan bentuk yang ditulis Whisper, lengkap dengan semua yang dimiliki sebuah subtitle, dan membuka apa yang ditulis lusinan alat lain.

Sekilas

Ekstensi.json
Tipe mediaapplication/json
SpesifikasiJSON itu sendiri: RFC 8259 dan ECMA-404. Bentuk tiap alat berbeda-beda.
Presisi waktuMilik Subtitld: detik, hingga milidetik. Lainnya: milidetik, detik, tick 100 nanodetik, atau teks seperti "1.400s".
Encoding teksUTF-8
GayaMilik Subtitld: tag yang dipertahankan teksnya. YouTube: tebal, miring, garis bawah, dan warna. Lainnya: tidak ada.
PosisiMilik Subtitld: di dalam teks, sebagai {\an8}. YouTube: jendela. Bilibili: sebuah lokasi.
PembicaraMilik Subtitld speaker; layanan speech-to-text memberi label pada miliknya
Dalam kontainerTidak ada

Anatomi JSON Subtitld

Yang disimpan Subtitld untuk satu subtitle:

{
  "language": "en-us",
  "segments": [
    {
      "id": 0,
      "start": 23.0,
      "end": 24.5,
      "text": "You're a jerk, Thom.",
      "speaker": "Celia"
    }
  ],
  "text": "You're a jerk, Thom."
}
Bagian Isinya
"language" Bahasa proyek, seperti dinamai Subtitld (en-us)
"segments" Subtitle-subtitle, berurutan
"id" Nomornya, dari 0, seperti Whisper memberi nomor
"start", "end" Detik
"text" Teksnya, dengan tag (<i>, {\an8}) dan pemisah baris (\n)
"speaker", "translations" … Apa pun yang lain dimiliki subtitle: pembicaranya, terjemahannya per bahasa, dan dubbing-nya
"text", di akhir Seluruh teks dalam satu baris, untuk alat yang hanya menginginkannya. Tidak dibaca kembali.

Bentuk Whisper, dengan sengaja. Itu yang ditulis OpenAI Whisper, sehingga alat yang membaca segmen Whisper juga membaca berkas Subtitld. Subtitld juga membuka milik Whisper, dengan membiarkan statistik dekodingnya dan waktu setiap kata.

Yang dibuka Subtitld

Setiap JSON dari alat menyatakan jenisnya lewat kuncinya. Subtitld membuka ini:

Alat Yang diambil Subtitld darinya
Subtitld, Whisper dari OpenAI Setiap bidang (milik Subtitld); teks dan bahasa (milik Whisper)
whisper.cpp Segmennya, dan pembicaranya bila ia membedakan kedua saluran
WhisperX Segmen dan pembicaranya
YouTube (.json3, seperti yang disimpan yt-dlp) Teks, tebal, miring, garis bawah, warna, dan tempat
Bilibili (.bcc) Teks dan tempat
AssemblyAI, Deepgram, AWS Transcribe, Rev.ai, Google Speech-to-Text, Azure Speech, Speechmatics Kata, pembicara, dan bahasa, dijadikan subtitle
Amara Teks, miring, tebal, garis bawah, dan subtitle di bagian atas

JSON yang bukan salah satunya akan diberi tahu. JSON yang tidak valid akan menunjukkan di mana kesalahannya, berdasarkan baris dan kolom.

Transkrip menjadi subtitle

Layanan speech-to-text menyerahkan kata beserta waktunya, atau giliran bicara yang panjang. Subtitld membuat subtitle darinya, selama sesuai batas di panel Pemeriksaan kualitas: karakter per baris, baris, dan detik. Sebuah subtitle berakhir:

  • di tempat pembicara berganti, atau ucapan berhenti lebih dari satu detik;
  • di akhir kalimat, ketika subtitle berikutnya akan melewati satu baris;
  • ketika penuh: pada tanda baca terakhir yang membuatnya cukup penuh, jika tidak, di antara dua kata.

Giliran tanpa waktu kata dibagi dengan cara yang sama, waktunya menurut panjang bagiannya.

Atur batasnya dahulu. Subtitle dibuat saat berkas dibuka: ubah batas di panel Pemeriksaan kualitas sebelum membuka transkrip untuk mendapatkan subtitle yang lebih panjang atau lebih pendek.

Pembicara dan bahasa

Layanan memberi nomor pada pembicaranya: 0, spk_1, SPEAKER_02, S3. Subtitld menamai mereka A, B, C … menurut urutan mereka pertama kali berbicara, seperti ia menamai pembicara sendiri. Pembicara yang dinamai oleh berkas, seperti yang dapat dilakukan Rev.ai, tetap mempertahankan namanya.

Bahasa proyek berasal dari berkas, sebagai kode (en_us, pt) atau nama (English, seperti yang disimpan Whisper bila diminta), atau dari nama berkasnya: video.en.json3. Berkas dalam bahasa proyek mempertahankan negara proyek: pt dalam proyek pt-br tetap pt-br.

JSON YouTube

Yang dibaca pemutar YouTube, dan disimpan yt-dlp sebagai .json3: peristiwa berupa teks dalam milidetik, dengan pena untuk tebal, miring, garis bawah, dan warna, serta jendela untuk tempat tampilnya. Caption otomatis bergulir, baris demi baris, masing-masing tampil sampai baris berikutnya muncul; Subtitld menjadikan setiap baris sebagai subtitle sampai baris berikutnya dimulai.

BCC Bilibili

Yang dibaca pemutar Bilibili, dan satu-satunya JSON lain yang disimpan Subtitld.

{
  "font_size": 0.4,
  "font_color": "#FFFFFF",
  "background_alpha": 0.5,
  "background_color": "#9C27B0",
  "Stroke": "none",
  "body": [
    {
      "from": 23.0,
      "to": 24.5,
      "location": 2,
      "content": "You're a jerk, Thom."
    }
  ]
}

Waktunya dalam detik; content adalah teks polos, dengan barisnya dipisah oleh \n. Tampilan di bagian atas adalah yang dibawa berkas Bilibili sendiri, dan juga ditulis Subtitle Edit.

Satu subtitle dalam satu waktu. Subtitle yang tampil pada saat yang sama menjadi satu entri, dengan teksnya satu baris masing-masing, sehingga linimasa tidak memiliki tumpang tindih. location selalu 2, yaitu tengah bawah: pemutar Bilibili tidak diketahui menggunakannya untuk menempatkan subtitle di tempat lain.

JSON di Subtitld

Tersimpan di JSON Subtitld
  • Teks, pemformatan, dan tempat setiap subtitle
  • Pembicara, terjemahan, dan dubbing
  • Awal dan akhir, hingga milidetik
  • Bahasa proyek
Tidak ada tempatnya
  • Waktu kata, dan seberapa yakin layanan terhadap setiap kata
  • Statistik dekoding Whisper
  • Font, ukuran, tepi, dan latar YouTube
  • Pada BCC: pemformatan, tempat, dan terjemahan di samping aslinya

Simpan proyek .usfx untuk menyimpan yang menjadi milik Subtitld.

Mengekspor

Dialog ekspor Subtitld dengan BCC dipilih, teks asli dan nama pembicara di depannya

Ekspor, lalu Subtitle, menawarkan keduanya:

  • JSONMilik Subtitld: proyek apa adanya, setiap subtitle dan setiap bidang.
  • BCCMilik Bilibili: asli, terjemahan, atau keduanya, dengan terjemahan di bawah; nama pembicara dihilangkan atau di depan teks; waktu digeser bila Anda memilih.

Trivia

UTF-8

Standar JSON, RFC 8259 tahun 2017, menyatakan bahwa JSON yang dikirim antarsistem harus UTF-8.

10.000.000

Tick per detik pada transkrip Azure: ia menghitung waktu dalam satuan 100 nanodetik.

5

Detik yang ditampilkan pemutar YouTube untuk caption json3 yang tidak menyatakan berapa lama ia bertahan.

Format terkait

Ada .json yang perlu diperbaiki?

Buka di Subtitld bersama videonya, lalu atur waktunya pada bentuk gelombang.

Unduh Subtitld