Cara Menterjemah Sari Kata ASS/SSA Tanpa Merosakkan Gaya, Kedudukan atau Karaoke
Terjemah hanya dialog yang kelihatan dalam fail .ass, kemudian semak pemasaan, tag, karaoke dan fon. Dengan fail sampel, penyemak percuma dan ujian LLM tempatan 9-larian.

Fail sari kata ASS atau SSA ialah program kecil: pengepala, jadual gaya dan senarai peristiwa bermasa yang medan terakhirnya mencampurkan dialog dengan kod pemformatan. Untuk menterjemahnya, ubah hanya perkataan yang boleh dibaca dalam medan terakhir itu, biarkan segala-galanya bait demi bait, dan kemudian semak tiga perkara yang tiada alat terjemahan boleh betulkan untuk anda: fon, kod jarak dan baris karaoke.
Kami menterjemah sampel 14-peristiwa ke dalam Cina Ringkas sembilan kali dengan model tempatan, menggunakan tiga gesaan berbeza, dan menyemak setiap hasil dengan skrip yang kami tulis. Pemasaan, kedudukan, warna, komen dan lukisan kekal dalam kesemua sembilan. Yang rosak ialah bahagian fail yang menganggap bahasa Inggeris: dalam kesemua sembilan, fon gaya tiada aksara Cina, jadi fail itu akan bergantung pada pemain untuk menggantikan fon, dan ruang keras daripada baris Inggeris menjadi jurang yang kelihatan dalam bahasa Cina. Baris karaoke kembali dengan pemasaannya menghala ke perkataan yang salah dalam setiap larian, dan dalam empat larian sesetengah suku kata tidak menyerlahkan apa-apa langsung.
Jawapan Pantas: Apa yang Perlu Diterjemah dan Apa yang Perlu Dibiarkan
| Bahagian fail | Contoh daripada sampel kami | Terjemah? |
|---|---|---|
Penepala [Script Info] | PlayResX: 1920, WrapStyle: 0 | Tidak. Kedudukan dikira daripada nilai-nilai ini. |
[V4+ Styles] | Style: Default,Trebuchet MS,64,... | Tidak, kecuali nama fon, yang mungkin perlu anda ubah dengan sengaja |
| Medan peristiwa 1–9 | 0,0:00:01.00,0:00:03.20,Default,Jun,0,0,0, | Tidak. Ini ialah lapisan, pemasaan, gaya, penutur, jidar dan kesan. |
| Blok ganti | {\i1}, {\an8\pos(960,120)}, {\k25} | Tidak |
| Lukisan | {\p1}m 0 0 l 200 0 200 60 0 60{\p0} | Tidak. Ini ialah bentuk vektor, bukan teks. |
Peristiwa Comment: | Comment: ...,Earlier draft: Try the stacks. | Pilihan. Komen tidak pernah muncul di skrin. |
| Nota pendakap | {TL note: "stacks" means the closed shelves} | Pilihan. Pemain mengabaikannya. |
| Dialog yang kelihatan | Did you find the second volume? | Ya |
| Kod baris | \N, \n, \h | Kekalkan \N. Tentukan kes demi kes untuk \n dan \h. |
Baki panduan ini menerangkan mengapa setiap baris penting dan cara menyemak hasilnya.
Cara Baris ASS Dibina
Setiap baris dalam bahagian [Events] mengikut format yang diisytiharkan tepat di atasnya:
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:03.40,0:00:06.10,Default,Mara,0,0,0,,{\i1}I thought it was{\i0} sold out.
Hanya medan kesepuluh, Text, mengandungi apa-apa yang dibaca oleh penonton. Panduan format fail ASS projek libass menyatakan bahawa medan terakhir ini "dibenarkan mengandungi koma", sebab itulah pemisahan yang cuai pada setiap koma akan merosakkan baris seperti Well, if it's there, then, we go now. Alat yang selamat memisahkan hanya pada sembilan koma pertama.
Di dalam Text, apa-apa dalam kurungan kerinting ialah blok override. Rujukan tag override Aegisub mentakrifkan kod yang paling kerap anda temui:
\Nmemaksa pemisah baris dalam setiap mod bungkus.\nmemisahkan baris hanya dalam mod bungkus 2 dan selainnya ialah ruang.\hialah ruang tidak putus.\an8menetapkan penjajaran menggunakan susun atur kekunci angka, jadi 8 ialah atas tengah.\pos(960,120)meletakkan baris pada koordinat skrip.\k25ialah suku kata karaoke; tempoh dalam sentisaat, jadi 25 bermaksud suku saat.- Selepas
\p1, teks "akan ditafsirkan sebagai arahan lukisan", jadi penterjemah yang "menterjemah"m 0 0 l 200 0memusnahkan bentuk. - Teks yang tidak dikenali dalam kurungan kerinting "diabaikan secara senyap", sebab itulah fail fansub sering membawa nota penterjemah dalam kurungan kerinting.
Baris yang bermula dengan Comment: menggunakan medan yang sama, tetapi menurut panduan libass "tiada apa-apa akan dipaparkan di skrin."
Apa yang Kami Uji
Kami menulis sample-source.ass, adegan 14 peristiwa yang berlatar di kedai buku, dengan satu contoh setiap ciri di atas: huruf condong, pemisah keras, koma dalam dialog, nota kurungan kerinting, baris komen, papan tanda berposisi, kotak vektor, pudar, ruang keras, perubahan warna dengan \r, pemisah lembut, kesan Banner yang menatal, dan baris karaoke enam suku kata.
Kemudian kami meminta model tempatan menterjemahkannya ke Cina Ringkas dalam tiga cara:
- Fail penuh. Tampal keseluruhan fail
.assdan minta fail terjemahan dikembalikan. - Teks sahaja. Hantar hanya medan
Textbagi setiap baris dialog sebagai JSON, dengan tag dalam baris, dan arahan untuk mengekalkan setiap blok{...}dan setiap\N,\n, dan\h. - Dilindungi. Sama, tetapi gantikan setiap blok kurungan kerinting dan kod baris dengan pemegang tempat bernombor dahulu, dan letakkan semula yang asal selepas itu.
Dalam keadaan kedua dan ketiga, skrip tidak pernah menghantar lukisan vektor atau baris komen kepada model, jadi baris tersebut hanya boleh rosak dalam keadaan fail penuh.
Model ialah Qwen 3.6 27B (Q4_K_M) dalam LM Studio 0.4.8 pada Apple M4 Max dengan memori 64 GB, dengan pemikiran dimatikan dan suhu 0.3. Kami menjalankan setiap keadaan tiga kali, sembilan larian kesemuanya. Percubaan pertama pada larian ketiga berakhir apabila pelayan tempatan memutuskan sambungan, jadi kami memulakannya semula dan menjalankan pusingan ketiga sekali lagi. Skrip ialah run_llm_ass_test.py, dan kesemua sembilan output diterbitkan tanpa suntingan bersamanya; README menyenaraikan setiap fail. Jika anda belum pernah menyediakan model tempatan, panduan terjemahan LLM tempatan kami merangkumi tetapan.
Ini ialah ujian kecil bagi satu model, satu pasangan bahasa, dan satu sampel. Ia menunjukkan masalah yang berlaku dan cara menangkapnya. Ia tidak menyenaraikan kedudukan alat atau gesaan.
Keputusan: Jentera Bertahan; Andaian Bahasa Inggeris Tidak
Kami menyemak setiap output dengan check_ass_translation.py. Output penuh ada dalam check-results.txt, dan results.csv mempunyai satu baris setiap larian, termasuk masalah yang tidak dapat dilihat oleh skrip.
| Semak | Fail penuh | Teks sahaja | Dilindungi |
|---|---|---|---|
| Masa, gaya dan medan 1–9 tidak berubah | 3 daripada 3 | 3 daripada 3 | 3 daripada 3 |
| Tag tindih tidak berubah | 3 daripada 3 | 2 daripada 3 | 3 daripada 3 |
| Baris lukisan dan komen tidak disentuh | 3 daripada 3 | 3 daripada 3 | 3 daripada 3 |
| Fon gaya mampu melukis terjemahan | 0 daripada 3 | 0 daripada 3 | 0 daripada 3 |
\h dan \n ditinggalkan sebagai jurang dalam teks Cina | 3 daripada 3 | 3 daripada 3 | 3 daripada 3 |
| Semua tag karaoke dikekalkan, setiap satu dengan teks | 3 daripada 3 | 0 daripada 3 | 1 daripada 3 |
Dua keputusan mengejutkan kami. Menampal keseluruhan fail mengekalkan struktur dalam ketiga-tiga percubaan, walaupun dalam dua daripadanya ia juga menterjemah baris Title dalam pengepala. Dan gesaan teks sahaja, yang kedengaran lebih selamat, menghasilkan satu-satunya tag yang rosak. Dalam satu percubaan ia mengembalikan {\k25}翻{\k30}页,{\k45}开{\k60}灯 untuk baris dengan enam tag karaoke. Dua tag terakhir dan 1.20 saat masa sorotan hilang, jadi sorotan akan tamat jauh sebelum baris itu. Percubaan yang sama menukar Room\h12 is upstairs. menjadi 12\h12号房间在楼上。, dengan nombor bilik dua kali.
Jadi pengajaran yang berguna bukanlah "gunakan gesaan X." Sebaliknya, kerosakan struktur yang anda takuti mudah dikesan, dan kerosakan yang benar-benar berlaku dalam kesemua sembilan percubaan terletak di tiga tempat yang tidak dibincangkan oleh halaman alat untuk terjemahan ASS.
1. Fon tidak dapat melukis bahasa baharu
Gaya sampel menggunakan Trebuchet MS untuk dialog dan Georgia untuk papan tanda, yang biasa untuk keluaran bahasa Inggeris. Kedua-dua fon tidak mengandungi aksara Cina. Apabila kami mengarahkan ujian glif pemeriksa pada dua fail fon itu, kesemua 12 peristiwa teks terjemahan dalam setiap percubaan gagal:
ERROR event 1: font 'Trebuchet MS' has no glyph for 9 characters, e.g. 了二你到卷吗找第?
ERROR event 7: font 'Georgia' has no glyph for 10 characters, e.g. 书人仅作员工库架闭限
Pemain mungkin menggantikan dengan fon lain yang dipasang, jadi sari kata mungkin masih muncul, tetapi keluaran itu tidak lagi mengawal rupanya, dan penonton yang sistemnya tidak mempunyai fon yang sesuai mungkin melihat kotak kosong. Pembetulannya ialah suntingan sengaja pada medan Fontname setiap gaya. Apabila kami menukar ketiga-tiga gaya dalam satu output kepada Hiragino Sans GB, fon Cina yang disertakan dengan macOS, dan menjalankan ujian glif terhadap fon itu, ralat glif menjadi sifar.
Pilih fon yang penonton anda benar-benar ada, atau sertakan bersama video. Panduan libass menyatakan keluaran harus melampirkan setiap fon yang digunakan, sebaik-baiknya pada bekas MKV. Oleh kerana fon bahasa sasaran adalah baharu, melampirkannya kini menjadi sebahagian daripada kerja terjemahan.
2. Kod jarak membawa tabiat bahasa Inggeris
Room\h12 melekatkan "Room" dengan "12" supaya ia tidak berpecah merentas baris. Dalam bahasa Cina perkataan tidak dipisahkan oleh ruang, tetapi setiap percubaan mengekalkan \h di suatu tempat: lima percubaan meletakkannya antara 12号房间 dan 在楼上, tiga meletakkannya sebelum nombor, dan satu meletakkannya antara dua salinan nombor itu. Sama ada cara, penonton melihat ruang terlebih. Wait\nhere. mempunyai masalah yang sama. Dengan WrapStyle: 0, \n dipaparkan sebagai ruang, jadi 在\n这里等 menunjukkan jurang di tengah-tengah ayat tiga perkataan.
Struktur di sini baik; bahasanya tidak. Untuk bahasa sasaran yang tidak mempunyai ruang antara perkataan, buang \h dan \n daripada teks terjemahan. Kekalkan \N hanya di tempat anda mahu pemisah paksa, dan letakkan pada titik semula jadi dalam ayat sasaran. Pemeriksa melaporkan perubahan kiraan \h dan \n sebagai amaran dan bukan ralat atas sebab ini, dan ia memberi amaran apabila satu daripadanya kekal dalam teks Cina, Jepun, atau Korea.
3. Masa karaoke milik perkataan asal
Baris karaoke {\k25}Turn {\k30}the {\k45}page, {\k60}turn {\k40}the {\k80}light memasa setiap suku kata bahasa Inggeris mengikut lagu. Terjemahan tidak boleh mengekalkan masa itu secara bermakna, kerana perkataan Cina tidak jatuh pada rentak yang sama. Percubaan kami menunjukkan cara berbeza ia menjadi salah:
- Dalam empat percubaan kesemua enam tag dikekalkan, setiap satu pada perkataan yang berbeza daripada sebelumnya. Salah satunya berakhir dengan
{\k40}打{\k80}开, "buka", dan menggugurkan "light" daripada baris itu sepenuhnya. - Dalam empat percubaan satu suku kata tidak menyorot apa-apa, seperti
打开{\k40}{\k80}灯(0.40 saat sorotan pada suku kata kosong). Dalam dua daripadanya, suku kata 0.45 saat juga hanya menyorot koma. - Dalam satu percubaan dua tag hilang, seperti yang diterangkan di atas.
Pemeriksa menandakan baris karaoke yang diterjemah di tempat dan mana-mana suku kata yang ditinggalkan tanpa teks. Pembetulan yang lebih baik ialah editorial: jangan terjemah karaoke di tempat. Kekalkan baris bermasa asal untuk menyanyi bersama, dan tambah terjemahan sebagai peristiwa berasingan: salin peristiwa karaoke, berikannya gaya sendiri (contohnya, lebih kecil dan diletakkan di bahagian bawah), buang tag \k, dan terjemah teks. Masa semula suku kata demi suku kata hanya jika anda bersedia memasa sendiri mengikut audio.
Aliran Kerja yang Bertahan
-
Jadikan sumber boleh dibaca dahulu. Jika fail menunjukkan aksara rosak, betulkan pengekodan sebelum apa-apa lagi. Panduan pengekodan kami menggunakan contoh SRT, tetapi langkah peringkat bait yang sama berfungsi untuk fail
.assdan memastikan bait asal selamat. Pemeriksa hanya membaca UTF-8 dan UTF-16. -
Tentukan skop. Senaraikan gaya dan tentukan mana yang dialog, mana yang papan tanda di skrin, dan mana yang karaoke. Papan tanda biasanya perlu diterjemah; karaoke biasanya perlu baris berasingan; komen dan nota pendakap terpulang kepada anda untuk tentukan.
-
Terjemah hanya medan
Text. Gunakan alat yang menghuraikan ASS dan bukannya menganggapnya sebagai teks biasa, atau lindungi tag sendiri seperti dalam syarat ketiga kami. Simpan fail sumber di sebelah output. -
Jalankan pemeriksaan struktur.
python3 check_ass_translation.py source.ass translated.assIa membandingkan kiraan peristiwa, jenis peristiwa, medan 1–9, nilai gaya, blok tindih, lukisan, baris komen,
\N, suku kata dan tempoh karaoke, serta baris yang kembali kosong atau tidak berubah. Ia tidak menilai kualiti terjemahan. -
Betulkan fon secara sengaja. Tukar
Fontnamedalam setiap gaya yang kini mengandungi teks bahasa sasaran, kemudian jalankan ujian glif terhadap fail fon yang akan anda hantar:pip install fonttools python3 check_ass_translation.py source.ass translated.ass --font "Noto Sans SC=/path/to/NotoSansSC-Regular.otf"Nama fon yang diubah muncul sebagai amaran, jadi anda boleh mengesahkan setiap perubahan adalah disengajakan.
-
Bersihkan kod jarak dan karaoke seperti yang diterangkan di atas.
-
Tonton bersama video. Buka fail dalam Aegisub atau pemain anda. Pastikan papan tanda masih muat dengan bentuk yang dilukis di belakangnya, kerana kotak
\pmengekalkan saiz bahasa Inggerisnya manakala papan tanda terjemahan boleh menjadi jauh lebih panjang atau lebih pendek. Pastikan baris tidak terlalu panjang untuk masa paparannya. Kedua-dua masalah ini tidak kelihatan dalam fail itu sendiri.
Kedudukan BookTranslator
Penterjemah Sari Kata BookTranslator menerima fail SRT, VTT, ASS dan SSA. Menurut halaman produk, ia mengekalkan cap masa dan susunan isyarat serta mengekalkan gaya ASS dan SSA yang disokong terikat pada setiap entri sari kata, jadi anda tidak perlu mengekstrak dan memasukkan semula teks itu sendiri. Ia menterjemah dialog dengan baris sekeliling sebagai konteks, yang membantu dengan nama dan jenaka berulang sepanjang episod.
Kami tidak menjalankan sampel ini melalui BookTranslator untuk artikel ini. Walau apa pun alat yang anda gunakan, jalankan langkah 4 hingga 7 pada hasilnya. Gaya yang mengekalkan fon bahasa Inggerisnya tetap merupakan gaya yang tidak dapat melukis aksara Cina, dan karaoke yang diterjemah di tempatnya masih memerlukan keputusan editorial. Untuk seluruh aliran kerja sari kata, lihat panduan terjemahan sari kata AI kami, perbandingan perisian terjemahan sari kata kami, dan, jika terjemahan anda akan ke YouTube, aliran kerja sari kata YouTube.
Bila Perlu Tukar kepada SRT Sebaliknya
Menukar ASS kepada SRT sebelum menterjemah menghapuskan gaya, kedudukan, lukisan dan karaoke, yang juga menghapuskan kebanyakan masalah di atas. Itu adalah pertukaran yang wajar jika destinasi anda hanya memaparkan sari kata biasa, atau jika gaya itu tidak pernah penting untuk keluaran tersebut. Ia adalah pertukaran yang salah untuk keluaran anime dan muzik di mana papan tanda dan karaoke adalah sebahagian daripada karya. Buat keputusan berdasarkan di mana fail akan dipaparkan, bukan berdasarkan format mana yang lebih mudah diterjemah.
Dapatkan Fail Ujian
Semua daripada ujian ini bebas untuk digunakan semula:
- sample-source.ass: sampel bahasa Inggeris 14 peristiwa;
- check_ass_translation.py: penyemak (pustaka standard Python; ujian
--fontmemerlukan fontTools); - run_llm_ass_test.py: tiga syarat gesaan untuk mana-mana pelayan tempatan serasi OpenAI;
- results.csv dan check-results.txt: keputusan setiap larian;
- README.txt: senarai fail dan tetapan ujian, dengan sembilan output yang tidak diedit dalam folder
outputs.
Catatan Berkaitan




