Napisy i transkrypcje w JSON

OtwieranieZapisywanieTranskrypcjeZamiana mowy na tekst

Nie jeden format, lecz wiele: JSON to sposób, w jaki silniki zamiany mowy na tekst, serwisy wideo i serwisy z napisami przekazują napisy i transkrypcje, każdy w swoim kształcie. Subtitld zapisuje własny, w kształcie Whispera, z wszystkim, co zawiera napis, i otwiera to, co zapisuje kilkanaście innych narzędzi.

W skrócie

Rozszerzenie.json
Typ mediówapplication/json
SpecyfikacjaSam JSON: RFC 8259 i ECMA-404. Kształt każdego narzędzia jest jego własny.
Precyzja czasuSubtitld: sekundy, co do milisekundy. Inne: milisekundy, sekundy, takty po 100 nanosekund albo tekst, np. "1.400s".
Kodowanie tekstuUTF-8
StylizacjaSubtitld: znaczniki, które zachowuje tekst. YouTube: pogrubienie, kursywa, podkreślenie i kolory. Reszta: brak.
PozycjonowanieSubtitld: w tekście, jako {\an8}. YouTube: okna. Bilibili: położenie.
Mówcyspeaker w Subtitld; usługi zamiany mowy na tekst oznaczają swoich
W kontenerachBrak

Budowa JSON Subtitld

Co Subtitld zapisuje dla jednego napisu:

{
  "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."
}
Element Co to jest
"language" Język projektu, tak jak nazywa go Subtitld (en-us)
"segments" Napisy, w kolejności
"id" Jego numer, od 0, jak numeruje je Whisper
"start", "end" Sekundy
"text" Jego tekst ze znacznikami (<i>, {\an8}) i podziałami wierszy (\n)
"speaker", "translations" … Wszystko inne, co zawiera napis: jego mówca, tłumaczenia według języka, dubbingi
"text", na końcu Cały tekst w jednym wierszu, dla narzędzi, które chcą tylko tego. Nie jest odczytywany z powrotem.

Kształt Whispera, celowo. To ten, który zapisuje OpenAI Whisper, więc narzędzia czytające segmenty Whispera czytają pliki Subtitld, a Subtitld otwiera pliki Whispera, pomijając statystyki jego dekodowania i czasy każdego słowa.

Co otwiera Subtitld

JSON każdego narzędzia mówi, czym jest, po swoich kluczach. Subtitld otwiera te:

Narzędzie Co Subtitld z niego bierze
Subtitld, Whisper OpenAI Każde pole (Subtitld); tekst i język (Whispera)
whisper.cpp Jego segmenty i mówców, gdy rozróżnia dwa kanały
WhisperX Jego segmenty i mówców
YouTube (.json3, tak jak zapisuje go yt-dlp) Tekst, pogrubienie, kursywę, podkreślenie, kolory i miejsce
Bilibili (.bcc) Tekst i miejsce
AssemblyAI, Deepgram, AWS Transcribe, Rev.ai, Google Speech-to-Text, Azure Speech, Speechmatics Słowa, mówców i język, zamienione w napisy
Amara Tekst, kursywę, pogrubienie, podkreślenie i napisy na górze

Plik JSON, który nie jest żadnym z nich, to zgłasza. Taki, który nie jest poprawnym JSON-em, wskazuje, gdzie się myli, przez wiersz i kolumnę.

Transkrypcje w napisy

Usługi zamiany mowy na tekst przekazują słowa z ich czasami albo długie wypowiedzi. Subtitld robi z nich napisy, o ile pozwalają na to limity panelu Sprawdzanie jakości: znaki w wierszu, wiersze i sekundy. Napis kończy się:

  • tam, gdzie zmienia się mówca albo mowa milknie na ponad sekundę;
  • na końcu zdania, gdy następne przekroczyłoby jeden wiersz;
  • gdy jest pełny: na ostatnim znaku interpunkcyjnym, który zostawia go dość pełnym, a w przeciwnym razie między dwoma słowami.

Wypowiedź bez czasów słów dzieli się tak samo, a jej czas według długości części.

Najpierw ustaw limity. Napisy powstają w chwili otwierania pliku: zmień limity Sprawdzanie jakości przed otwarciem transkrypcji, aby uzyskać dłuższe lub krótsze.

Mówcy i języki

Usługi numerują mówców: 0, spk_1, SPEAKER_02, S3. Subtitld nazywa ich A, B, C … w kolejności, w jakiej zaczynają mówić, tak jak sam nazywa mówców; mówca nazwany w pliku, jak potrafi Rev.ai, zachowuje nazwę.

Język projektu pochodzi z pliku, jako kod (en_us, pt) albo nazwa (English, tak jak zachowuje ją Whisper, gdy się go o to poprosi), a w ostateczności z nazwy pliku: video.en.json3. Plik w języku projektu zachowuje kraj projektu: pt w projekcie pt-br pozostaje pt-br.

JSON YouTube

To, co czyta odtwarzacz YouTube i zapisuje yt-dlp jako .json3: zdarzenia tekstu w milisekundach, z piórami dla pogrubienia, kursywy, podkreślenia i kolorów oraz oknami dla miejsca, w którym się pojawiają. Automatyczne napisy przewijają się, wiersz za wierszem, każdy widoczny do chwili pojawienia się następnego; Subtitld robi z każdego wiersza napis, aż zacznie się następny.

BCC Bilibili

To, co czyta odtwarzacz Bilibili, i drugi JSON, jaki Subtitld zapisuje.

{
  "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."
    }
  ]
}

Czasy są w sekundach; content to zwykły tekst, którego wiersze rozdziela \n. Wygląd u góry to ten, który niosą własne pliki Bilibili, a także zapisuje Subtitle Edit.

Jeden napis naraz. Napisy pokazywane w tym samym momencie stają się jednym wpisem, a ich teksty są po jednym w wierszu, dzięki czemu oś czasu nie ma nakładek. location to zawsze 2, dolny środek: nie wiadomo, by odtwarzacz Bilibili używał go do umieszczania napisów gdziekolwiek indziej.

JSON w Subtitld

Zachowane w JSON Subtitld
  • Tekst, formatowanie i miejsce każdego napisu
  • Mówcy, tłumaczenia i dubbingi
  • Początek i koniec co do milisekundy
  • Język projektu
Brak miejsca
  • Czasy słów i pewność, z jaką usługa oceniła każde
  • Statystyki dekodowania Whispera
  • Czcionki, rozmiary, obramowania i cienie YouTube
  • W BCC: formatowanie, miejsce i tłumaczenia obok oryginału

Zapisz projekt .usfx, aby zachować to, co należy do Subtitld.

Eksportowanie

Okno eksportu Subtitld z wybranym BCC, z oryginalnym tekstem i nazwami mówców przed nim

Eksportuj, potem Napisy, oferuje oba:

  • JSONSubtitld: projekt taki, jaki jest, każdy napis i każde pole.
  • BCCBilibili: oryginał, tłumaczenie lub oba, z tłumaczeniem pod spodem; nazwy mówców pominięte albo przed tekstem; czasy przesunięte, jeśli wybierzesz.

Ciekawostki

UTF-8

Standard JSON, RFC 8259 z 2017 roku, mówi, że JSON wysyłany między systemami musi być w UTF-8.

10,000,000

Takty na sekundę w transkrypcjach Azure: liczy czas w setkach nanosekund.

5

Sekundy, przez które odtwarzacz YouTube pokazuje napis json3, który nie podaje, jak długo ma trwać.

Powiązane formaty

Masz plik .json do poprawienia?

Otwórz go w Subtitld razem z wideo i dopasuj czasy na przebiegu fali dźwiękowej.

Pobierz Subtitld