AiSrt: แปล แยก และถอดเสียงคำบรรยายของคุณด้วยปัญญาประดิษฐ์
เครื่องมือฟรีสำหรับทำให้วิดีโอเข้าถึงได้ใน 29 ภาษา สำหรับคนหูหนวก คนหูตึง และผู้ที่ชื่นชอบเนื้อหาหลายภาษา
คุณมีวิดีโอที่มีคำบรรยายภาษาอังกฤษและอยากได้เป็นภาษาฝรั่งเศส สเปน อาหรับ หรือญี่ปุ่นใช่ไหม หรือมีหนังที่ไม่มีคำบรรยายแม้แต่นิดเดียว และอยากดึงไฟล์ .srt ออกมาใช่ไหม นั่นแหละคือเหตุผลที่ผมเขียน AiSrt ขึ้นมา
AiSrt เป็นเครื่องมือบรรทัดคำสั่งที่ใช้ AI เพื่อ แปล ไฟล์คำบรรยาย .srt ของคุณ แยกแทร็กที่ฝังอยู่ในไฟล์วิดีโอของคุณออกมา และ ถอดเสียงจากเสียงของวิดีโอเป็นคำบรรยายโดยตรง ทั้งสามอย่างอยู่ในไบนารีเดียวกัน
สำหรับการแปล คุณเลือกได้จากห้าเอนจิน API ของ OpenAI ของ Anthropic (Claude) ของ Google (Gemini) และของ xAI (Grok) มีค่าใช้จ่ายไม่กี่เซนต์ต่อหนังหนึ่งเรื่อง หรือจะใช้เซิร์ฟเวอร์ Ollama ที่ทำงานอยู่บนเครื่องของคุณเองก็ได้ ฟรี ใช้งานออฟไลน์ ไม่ต้องใช้คีย์ ไม่ต้องมีบัญชี คำบรรยายของคุณไม่ออกไปจากฮาร์ดดิสก์ของคุณ
แล้วถ้าวิดีโอไม่มีคำบรรยายเลย AiSrt ก็ใช้ Whisper ซึ่งเป็นโมเดลรู้จำเสียงพูดของ OpenAI แปลงแทร็กเสียงเป็น .srt ให้เองทั้งหมด พูดตามตรง ครั้งแรกที่ผมเห็นการบรรยายความยาวหนึ่งชั่วโมงถูกทำเป็นคำบรรยายออกมาโดยที่ผมไม่ต้องพิมพ์สักบรรทัด มันทำเอาผมรู้สึกอะไรบางอย่างเลย
ของใหม่ในเวอร์ชันนี้: คำบรรยายของ Blu-ray ซึ่งไม่ใช่ข้อความแต่เป็น ภาพ ตอนนี้ก็อ่านได้แล้ว AiSrt ถอดรหัสภาพเหล่านั้น ส่งต่อให้เอนจินรู้จำตัวอักษร แล้วให้ AI ตรวจทานผลลัพธ์อีกที ผมจะกลับมาพูดถึงเรื่องนี้ด้านล่าง เพราะนี่คือส่วนที่ผมภูมิใจที่สุด
ทำไมต้อง AiSrt?
- การเข้าถึงต้องมาก่อน คนหูหนวกและคนหูตึงสมควรเข้าถึงเนื้อหาวิดีโอได้ง่ายๆ การสร้างและแปลคำบรรยายควรใช้เวลาไม่กี่นาที ไม่ใช่ทั้งคืน
- 29 ภาษา อาหรับ เยอรมัน อังกฤษ จีน เกาหลี เดนมาร์ก สเปน ฟินแลนด์ ฝรั่งเศส กรีก ฮินดี ฮีบรู ฮังการี อินโดนีเซีย อิตาลี ญี่ปุ่น มาเลย์ ดัตช์ นอร์เวย์ โปแลนด์ โปรตุเกส โรมาเนีย รัสเซีย สวีเดน เช็ก ไทย ตุรกี ยูเครน และเวียดนาม
- การแปลที่เข้าใจบริบท นี่คือความแตกต่างทั้งหมดเมื่อเทียบกับนักแปลแบบแปลคำต่อคำ: สำนวน อารมณ์ขัน และการเล่นคำออกมาดีกว่ามาก
- สามฟังก์ชันในเครื่องมือเดียว: แปล แยก และถอดเสียง
- แม้แต่คำบรรยายที่เป็นภาพ แทร็ก PGS ของ Blu-ray จะถูกอ่านด้วยการรู้จำตัวอักษร แล้วให้ AI ตรวจทานเพื่อแก้สิ่งที่ OCR อ่านผิด
- เลือกเอนจินแปลได้ห้าแบบ OpenAI, Claude, Gemini, Grok หรือ Ollama พร้อมใช้คีย์ของคุณเองและเปลี่ยนได้ด้วยออปชันเดียว
- ฟรีและใช้งานออฟไลน์ได้ถ้าคุณต้องการ เมื่อคุณติดตั้ง Ollama บนเครื่องของคุณแล้ว การแปลก็ไม่เสียเงิน ไม่ต้องใช้คีย์ และไม่ส่งอะไรไปที่ไหน เหมาะมากสำหรับเนื้อหาที่คุณไม่อยากส่งผ่านบริการของบุคคลที่สาม
- ไม่ต้องติดตั้งอะไรเพิ่มข้างๆ ไบนารีทำงานได้ในตัวเอง ไม่มี runtime .NET ให้ดาวน์โหลด ทุกอย่างรวมอยู่ข้างใน และ ffmpeg กับ whisper.cpp จะถูกดาวน์โหลดโดยอัตโนมัติบน Windows และ Linux ตอนที่จำเป็นต้องใช้
- เร่งความเร็วด้วย NVIDIA บน Windows ถ้า AiSrt ตรวจพบการ์ดจอของคุณ มันจะสลับไปใช้ whisper เวอร์ชัน CUDA และการถอดเสียงจะเร็วขึ้นอย่างเห็นได้ชัด
การติดตั้ง
สิ่งที่ต้องมี
จริงๆ แล้วไม่มีอะไรที่จำเป็น การแยกและการถอดเสียงทำงานได้โดยไม่ต้องใช้คีย์ ไม่ต้องมีบัญชี และไม่ต้องส่งอะไรไปที่ไหน
สำหรับการแปล คุณต้องมีคีย์จากหนึ่งในสี่บริการแบบเสียเงิน (OpenAI, Anthropic, Google หรือ xAI) หรือมี Ollama ติดตั้งอยู่บนเครื่องของคุณ ซึ่งตัวนี้ฟรีและใช้งานออฟไลน์ สองส่วนถัดไปจะอธิบายทั้งสองทาง เลือกส่วนที่คุณสะดวกได้เลย
มีเพียงกรณีเดียวที่ต้องใช้เครื่องมือเพิ่ม: คำบรรยายที่เป็นภาพ ในกรณีนั้นคุณต้องใช้ Tesseract ซึ่งคุณติดตั้งเอง คำสั่งเดียวก็เรียบร้อยไปตลอด
ไม่ต้องติดตั้ง runtime: แต่ละไฟล์แพ็กเกจมีไฟล์ปฏิบัติการที่ทำงานได้ในตัวเองสำหรับระบบของคุณ
- ดาวน์โหลดไฟล์เก็บถาวรด้านล่างที่ตรงกับเครื่องของคุณ: Windows x64, Linux x64 หรือ macOS (Apple Silicon M1 ถึง M4 หรือ Intel x64)
- แตกไฟล์ลงในโฟลเดอร์ที่คุณต้องการ
- ไม่บังคับ : เพิ่มโฟลเดอร์นี้ลงในตัวแปรสภาพแวดล้อม
PATHของคุณเพื่อเรียกใช้aisrtจากเทอร์มินัลใดก็ได้
บน macOS หากระบบปฏิเสธไม่ให้เปิดไบนารี ให้เปิด Terminal ในโฟลเดอร์นั้นแล้วรัน chmod +x aisrt จากนั้นรัน xattr -cr aisrt บิลด์สำหรับ macOS ได้รับการเซ็นและรับรองโดย Apple แล้ว ดังนั้นตามหลักการแล้วคุณไม่น่าจะต้องทำเช่นนี้
คีย์ API จากบริการที่คุณเลือก
ย้ำอีกครั้ง : ใช้สำหรับการแปลเท่านั้น
- ไปที่ platform.openai.com แล้วสร้างบัญชี หรือเข้าสู่ระบบ
- ไปที่ API Keys จากเมนูโปรไฟล์ของคุณที่ด้านขวาบน
- คลิก Create new secret key
- ตั้งชื่อให้คีย์ เช่น AiSrt แล้วกดยืนยัน
- คัดลอกคีย์ทันที เพราะจะไม่มีการแสดงคีย์นี้อีก
- วางคีย์ลงใน
appsettings.jsonแทนที่"OPENAI_KEY":
{
"OpenAI": {
"ApiKey": "sk-votre-cle-api-ici",
"Model": "gpt-5-mini",
"Temperature": 1
}
}ไฟล์นี้อยู่ข้างไฟล์ปฏิบัติการ เมื่อติดตั้ง AiSrt แล้ว โปรแกรมจะอ่านไฟล์นี้จาก %LOCALAPPDATA%\AiSrt\appsettings.json บน Windows และจาก ~/.config/aisrt/appsettings.json บน Linux และ macOS
เคล็ดลับ : คุณยังสามารถเก็บคีย์ไว้ในไฟล์ .env แยกต่างหากได้ ใส่ "UseSecretEnvFile": true ใน appsettings.json ระบุเส้นทางของไฟล์ และเขียนบรรทัด OPENAI_KEY=sk-votre-cle-api-ici ลงไป นี่คือสิ่งที่ผมทำที่บ้าน ช่วยไม่ให้ต้องเที่ยวพกคีย์ของตัวเองไว้ในไฟล์การกำหนดค่าที่เราแชร์กันโดยไม่ทันคิด
ค่าใช้จ่าย : OpenAI คิดค่าบริการตามการใช้งาน และคำบรรยายหนึ่งชุดใช้ทรัพยากรน้อยมาก เตรียมเงินไว้ไม่กี่เซนต์สำหรับภาพยนตร์ทั้งเรื่องด้วย gpt-5-mini
แล้วถ้าคุณชอบ Claude, Gemini หรือ Grok มากกว่า
ตั้งแต่เวอร์ชันนี้ OpenAI ก็ไม่ใช่บริการแบบมีค่าใช้จ่ายเพียงรายเดียวอีกต่อไปแล้ว ยังมีอีกสามรายที่ทำงานแบบเดียวกันทุกอย่าง โดยใช้คีย์ของคุณเอง: Anthropic สำหรับ Claude, Google AI Studio สำหรับ Gemini และ xAI สำหรับ Grok ขั้นตอนเหมือนกันหมด: คุณสร้างบัญชี, สร้างคีย์ แล้วนำไปใส่ใน appsettings.json.
แต่ละบริการมีส่วนของตัวเอง พร้อมโมเดลเริ่มต้นที่กรอกไว้ให้แล้ว:
{
"Translation": { "Provider": "anthropic" },
"Anthropic": { "ApiKey": "sk-ant-votre-cle", "Model": "claude-haiku-4-5" },
"Gemini": { "ApiKey": "votre-cle", "Model": "gemini-3.6-flash" },
"Xai": { "ApiKey": "xai-votre-cle", "Model": "grok-4.5" }
}และถ้าจะลองใช้บริการสักรายโดยไม่ต้องแตะไฟล์ ก็มีออปชัน --provider:
aisrt "film.srt" -t fr --provider anthropic
aisrt "film.srt" -t fr --provider gemini
aisrt "film.srt" -t fr --provider grokชื่อที่ใช้กันทั่วไปก็ใช้ได้เหมือนกัน ดังนั้น claude, google, grok และ gpt ก็ใช้ได้ดีพอๆ กับชื่อทางการ ผมเพิ่มชื่อพวกนี้เข้าไปเพราะตัวผมเองก็เรียกผิดตั้งครึ่งหนึ่งของจำนวนครั้ง
รายละเอียดหนึ่งที่ทำให้ผมเสียเวลาไปทั้งเย็น: แต่ละบริการรับชื่อตัวแปรสภาพแวดล้อมสำหรับคีย์อยู่ สองชื่อ ตัวอย่างเช่น ANTHROPIC_API_KEY หรือ CLAUDE_API_KEY ผมกรอกไฟล์ .env ของตัวเองด้วยชื่อโมเดล ไม่ใช่ชื่อบริษัท แล้ว AiSrt ก็บอกผมอย่างสุภาพว่าคีย์ของผมหายไปไหน มันอยู่ตรงนั้นแหละ เพียงแต่อยู่ภายใต้ชื่อที่มันไม่ได้มองหา
เรื่องสุดท้าย และเรื่องนี้ใช้กับทั้งสี่ราย: ถ้าคีย์ผิด, บัญชีไม่มีเครดิต หรือไม่มีโมเดลนั้นอยู่ AiSrt จะบอกคุณ ก่อน เริ่มทำงาน โดยระบุบรรทัดในไฟล์การตั้งค่าที่ต้องแก้ให้ด้วย ไม่ต้องเจอโปรแกรมล่มกลางเรื่องทั้งที่แปลหนังไปได้แค่ครึ่งเดียวอีกแล้ว
หรือจะ: แปลฟรีที่บ้านด้วย Ollama
ไม่อยากสร้างบัญชี OpenAI หรือไม่อยากให้ไฟล์ของคุณถูกส่งไปให้บุคคลที่สามใช่ไหม ติดตั้ง Ollama ซึ่งทำให้โมเดลภาษาใช้งานได้โดยตรงบนเครื่องของคุณ มันฟรี, ไม่จำกัด และใช้งานได้โดยไม่ต้องเชื่อมต่ออินเทอร์เน็ตหลังจากดาวน์โหลดโมเดลแล้ว
สามขั้นตอน :
# 1. Installer Ollama depuis ollama.com, puis demarrer le serveur
ollama serve
# 2. Telecharger le modele livre par defaut
ollama pull gpt-oss:20b
# 3. Traduire, en local
aisrt "film.srt" -t fr --provider ollamaตัวเลือก --provider มีผลกับคำสั่งที่กำลังทำงานอยู่ หากคุณอยากให้ Ollama กลายเป็นเครื่องมือหลักของคุณ ให้ใส่ "Provider": "ollama" ไว้ในส่วน Translation ของ appsettings.json แล้วคุณก็ไม่ต้องคิดถึงมันอีก
ควรเลือกโมเดลไหน ? ผมลองมาหลายตัวแล้ว และคำตอบก็ทำให้ผมแปลกใจ โมเดลที่ทำงานในเครื่องต้องรักษารูปแบบเอาต์พุตที่เคร่งครัดมาก บล็อกที่แปลแล้วต้องตามบล็อกที่ส่งเข้าไปตามลำดับ โดยไม่มีคำอธิบายประกอบ บางตัวทำแบบนี้ไม่ได้เลย : qwen2.5 แทรกข้อสังเกตเป็นภาษาจีนเข้ามากลางคำบรรยายสามครั้งจากสามครั้ง แม้ผมจะบีบข้อจำกัดมันเต็มที่แล้วก็ตาม ใช้งานไม่ได้ llama3.1:8b ทำได้ดีมากและเร็วขึ้นประมาณสิบเท่า gpt-oss:20b เป็นตัวที่ผมส่งมอบเป็นค่าเริ่มต้น เพราะมันไม่เคยทำบล็อกหายแม้แต่บล็อกเดียวระหว่างการทดสอบของผม แต่มันหนักกว่ามากอย่างเห็นได้ชัด (ประมาณ 14 Go) และช้ากว่า
พูดกันตรง ๆ เรื่องข้อแลกเปลี่ยน : ใช้ในเครื่องนั้นฟรีแต่ช้า และคุณภาพก็ยังด้อยกว่าสิ่งที่ gpt-5-mini สร้างออกมา สำหรับหนังที่คุณจะดูคืนนี้ API ของ OpenAI ราคา 3 เซนต์ใช้งานสบายกว่า สำหรับประมวลผลทั้งซีซันโดยไม่ต้องคอยมองมิเตอร์ หรือสำหรับเนื้อหาที่ละเอียดอ่อน Ollama ก็น่าสนใจขึ้นมา
มีเรื่องหนึ่งที่ทำให้ผมเสียเวลาและคุณไม่ต้องเสียเวลาแบบเดียวกัน : AiSrt คุยกับ Ollama ผ่าน API ดั้งเดิมของมันและกำหนดหน้าต่างบริบทที่ใหญ่พอให้ ถ้าเราใช้ชั้นความเข้ากันได้กับ OpenAI ของ Ollama การตั้งค่านี้จะถูกเมิน โมเดลจะตัดคำตอบของตัวเองโดยไม่บอก และคุณก็จะพบว่ามีบล็อกหายไปในไฟล์สุดท้าย ระบบจัดการเรื่องนี้ให้คุณแล้ว แต่มันอธิบายได้ว่าทำไมชุดงานจึงเล็กลงเมื่อทำงานในเครื่อง (10 บล็อกแทนที่จะเป็น 40)
เกิดอะไรขึ้นก่อนที่มันจะเริ่มทำงาน
มีการตรวจสอบสองอย่างทำงานตอนเริ่มต้น และมันช่วยผมเลี่ยงความหงุดหงิดไปได้ไม่น้อย
อันแรกตรวจสอบไฟล์ที่คุณให้มา หากคุณพิมพ์ aisrt film.mkv โดยลืมใส่ตัวเลือก AiSrt จะตอบคุณว่านี่เป็นวิดีโอ และแนะนำให้ใช้ --extract หรือ --transcribe ก่อนหน้านี้มันอ่านไฟล์ไบนารีเป็นข้อความแล้วส่งไปให้ AI ทั้งหมด ซึ่งก็ตอบกลับมาด้วยข้อผิดพลาดที่เข้าใจไม่ได้เกี่ยวกับขนาดของคำขอ อีกอย่าง ถ้าคุณให้คำบรรยายที่ไม่ใช่ .srt (เป็น .ass, .vtt, .sub) มันจะแปลงให้เองด้วย ffmpeg แล้วต่อด้วยการแปล
อันที่สองตรวจสอบว่าเครื่องมือแปลตอบสนองหรือไม่ ก่อนจะส่งอะไรไป คีย์ไม่ถูกต้อง บัญชีไม่มีเครดิต เซิร์ฟเวอร์ Ollama ยังไม่เริ่มทำงาน โมเดลยังไม่ได้ดาวน์โหลด แต่ละกรณีมีข้อความและคำสั่งสำหรับแก้ไขของตัวเอง ไม่มีอะไรแย่ไปกว่าการเริ่มดึงแทร็กหกแทร็ก แล้วออกไปดื่มกาแฟ พอกลับมาก็เจอข้อผิดพลาดเหมือนกันหกครั้ง
คู่มือการใช้งาน
ไวยากรณ์ทั่วไป
aisrt [<fichier>] [options]ตัวเลือกทั้งหมด
| ตัวเลือก | คำอธิบาย | ค่าเริ่มต้น |
|---|---|---|
<file> | เส้นทางไปยังไฟล์ .srt ที่ต้องการแปล หรือไฟล์วิดีโอเมื่อใช้กับ --extract และ --transcribe | ไม่มี |
-t, --target <code> | รหัสภาษาปลายทาง | fr |
-s, --source <code> | รหัสภาษาต้นทาง | en |
--languages | แสดงภาษา 29 ภาษาและรหัสของภาษาเหล่านั้น | ไม่มี |
--streams | แสดงรายการแทร็กคำบรรยายของวิดีโอ โดยไม่แยกอะไรออกมา | ไม่มี |
--extract | แยกแทร็กคำบรรยายของวิดีโอออกมา โดยให้เลือกแบบโต้ตอบ แทร็กภาพจะอ่านด้วย OCR | ไม่มี |
--transcribe | ถอดเสียงจากวิดีโอเป็น .srt ด้วย whisper.cpp | ไม่มี |
-p, --provider <nom> | เครื่องมือแปลภาษา: openai, anthropic, gemini, xai หรือ ollama | ของ appsettings.json |
--stream <n|all> | ใช้กับ --extract: แทร็กที่จะแยกออกมา โดยไม่ต้องผ่านเมนู | ไม่มี |
-tt, --translate-to <code> | ใช้กับ --extract หรือ --transcribe: แปลผลลัพธ์โดยไม่ถามอะไร | ไม่มี |
-m, --model <nom> | ใช้กับ --transcribe: โมเดล whisper โดยไม่ต้องผ่านเมนู | ไม่มี |
-al, --audio-language <code> | ใช้กับ --transcribe: ภาษาที่พูดในวิดีโอ | ตรวจพบโดย whisper |
-ni, --non-interactive | ไม่ถามคำถามใดๆ ใช้ค่าเริ่มต้น | ไม่มี |
--version | แสดงเวอร์ชัน | ไม่มี |
-h, --help | แสดงวิธีใช้ | ไม่มี |
ระวังอย่าสับสนระหว่าง --streams ในรูปพหูพจน์ ซึ่งแค่แสดงรายการแทร็ก กับ --stream ในรูปเอกพจน์ ซึ่งเลือกแทร็กหนึ่งเพื่อดึงออกมา ต่างกันแค่ตัวอักษรเดียว แต่ให้ผลต่างกันมาก ผมลังเลว่าจะเปลี่ยนชื่อดีไหม แล้วก็ไม่เปลี่ยน ชื่อทั้งสองเป็นชื่อที่นึกออกมาได้เป็นธรรมชาติ
1. แปลคำบรรยาย
ฟังก์ชันหลัก และเป็นฟังก์ชันที่ผมใช้บ่อยที่สุด :
# Traduire de l'anglais vers le français (comportement par défaut)
aisrt "film.srt"
# Traduire de l'anglais vers l'espagnol
aisrt "film.srt" -s en -t es
# Traduire du français vers le japonais
aisrt "film.fr.srt" -s fr -t jaไฟล์ที่แปลแล้วจะใส่รหัสภาษาปลายทางไว้ในชื่อ : film.fr.srt, film.es.srt, และอื่น ๆ ไฟล์ผลลัพธ์ก่อนหน้า ถ้ามีอยู่แล้ว จะถูกคัดลอกเป็น .bak.srt ก่อนเขียนทับ
การแปลจะดำเนินการเป็นชุด ชุดละ 40 บล็อก และแต่ละชุดจะถูกเขียนลงดิสก์ทันทีที่ประมวลผลเสร็จ นี่คือผลลัพธ์ที่ได้จากเครื่องของผมกับภาพยนตร์เต็มเรื่อง :
แบ่ง 598 บล็อกออกเป็น 15 ชุด และคุณจะเห็นเวลาสะสมอยู่ทางขวา : ประมาณหนึ่งนาทีต่อชุด ใช้เวลาไม่ถึงสิบห้านาทีสำหรับภาพยนตร์ทั้งเรื่อง ถ้าการทำงานหยุดลงที่ชุดที่ 13 การเรียกใช้คำสั่งเดิมอีกครั้งจะเริ่มต่อจากชุดที่ 13
2. แสดงรายการแทร็กของวิดีโอ
ก่อนดึงออกมา เราสามารถดูได้ว่าในไฟล์มีอะไรอยู่บ้าง :
aisrt --streams "film.mkv"คุณจะได้ตารางที่มีหมายเลขสตรีม ภาษา โคเดก และประเภทของแต่ละแทร็ก ไม่ว่าจะเป็นข้อความหรือบิตแมป
3. ดึงคำบรรยายออกจากวิดีโอ
ไฟล์ MKV และ MP4 จำนวนมากมีคำบรรยายฝังมาอยู่แล้ว ดึงออกมาใช้ย่อมดีกว่าสร้างใหม่ :
aisrt --extract "film.mkv"เมนูจะให้คุณเลือกแทร็ก หรือดึงออกมาทั้งหมดในครั้งเดียว ระบบรองรับรูปแบบข้อความ (SRT, ASS, SSA, WebVTT, mov_text) แทร็ก PGS ซึ่งเป็นแทร็กของ Blu-ray เป็นรูปภาพ ตอนนี้ระบบอ่านแทร็กเหล่านี้ด้วยการรู้จำตัวอักษรแล้ว และส่วนถัดไปจะพูดถึงเรื่องนี้ แทร็กของ DVD และ TNT ยังถอดรหัสไม่ได้ แต่ AiSrt จะบอกคุณอย่างชัดเจนแทนที่จะข้ามไปเงียบ ๆ เมื่อดึงข้อมูลเสร็จแล้ว ระบบจะเสนอให้แปลแต่ละแทร็กต่อทันที โดยใช้ภาษาของแทร็กเป็นภาษาต้นทาง
หมายเหตุ : ffmpeg จะถูกดาวน์โหลดโดยอัตโนมัติบน Windows และ Linux หากยังไม่มีอยู่ในเครื่องของคุณ บน macOS ให้ติดตั้งด้วย brew install ffmpeg
4. ถอดเสียงเป็นคำบรรยาย
ในวิดีโอไม่มีคำบรรยายเลยหรือ มาสร้างกันด้วย whisper.cpp:
aisrt --transcribe "film.mkv"เมื่อเปิดใช้ครั้งแรก AiSrt จะถามว่าคุณต้องการใช้โมเดลรู้จำเสียงพูดตัวไหน:
- base.en, ประมาณ 150 Mo: เร็ว ใช้ได้ดีกับภาษาอังกฤษที่ออกเสียงชัดเจน
- small.en, ประมาณ 500 Mo: จุดสมดุลที่ดี
- medium.en, ประมาณ 1,5 Go: แม่นยำกว่า ช้ากว่า
- base, small, medium: ขนาดเท่ากัน แต่รองรับหลายภาษา
- large-v3, ประมาณ 3 Go: แม่นยำที่สุด รองรับหลายภาษา และช้าที่สุด
คุณข้ามเมนูนี้ได้ด้วย --model ถ้าคุณรู้อยู่แล้วว่าต้องการอะไร
ถอดเสียงภาษาอื่นที่ไม่ใช่ภาษาอังกฤษ
เมื่อก่อน AiSrt คิดว่าคุณจะป้อนภาษาอังกฤษให้มัน นั่นเป็นความคิดที่แย่มาก: คำพูดภาษาฝรั่งเศสจะออกมาเป็นคำบรรยายภาษาอังกฤษแบบเดาๆ โดยไม่มีคำเตือนสักคำ และถ้าคุณต่อด้วยการแปล คุณก็จะได้ภาษาฝรั่งเศสที่แปลย้อนกลับมาจากภาษาอังกฤษอีกที เกมโทรศัพท์เสียหายที่ใช้วิดีโอของคุณเอง
ตอนนี้ whisper ตรวจจับภาษาที่พูดอยู่ และ AiSrt ก็อ่านคำตอบของมันไปตามนั้น คุณไม่ต้องระบุอะไรเลย และไฟล์ที่สร้างขึ้นจะมีรหัสภาษาที่ถูกต้อง คุณยังบังคับภาษาเองได้ถ้าคุณรู้ว่ากำลังทำอะไรอยู่ โดยใช้โมเดลหลายภาษา:
aisrt --transcribe "film.mkv" --audio-language fr --model baseไฟล์ที่สร้างขึ้นจะชื่อว่า film.fr.srt และถ้าคุณต่อด้วยการแปล AiSrt ก็จะรู้ว่าจุดเริ่มต้นคือภาษาฝรั่งเศส
มีจุดหนึ่งที่ผมต้องใช้เวลาพิจารณาอยู่พักหนึ่ง: โมเดลที่ชื่อลงท้ายด้วย .en ถูกฝึกมาสำหรับภาษาอังกฤษเท่านั้น ให้เสียงภาษาฝรั่งเศสกับมัน แล้วมันก็ไม่ประท้วง กลับคืนเสียงสัทศาสตร์ภาษาอังกฤษมาให้คุณด้วยความมั่นใจเต็มที่ ผลลัพธ์แบบนี้จะจับได้ก็ต่อเมื่ออ่านไฟล์ AiSrt จึงปฏิเสธการจับคู่แบบนี้ก่อนเริ่มทำอะไรทั้งสิ้น และแสดงรายชื่อโมเดลที่ใช้ได้ให้คุณ
บน Windows และ Linux AiSrt จะดาวน์โหลด whisper ให้เอง บน Windows มันยังตรวจจับการ์ด NVIDIA และเลือกเวอร์ชัน CUDA ซึ่งเร็วกว่ามากให้ด้วย
บน macOS ต้องทำเพิ่มอีกขั้นหนึ่ง โปรเจกต์ whisper.cpp ไม่ได้เผยแพร่ไฟล์ปฏิบัติการบนบรรทัดคำสั่งสำหรับระบบนี้ มีเพียงเฟรมเวิร์กสำหรับนักพัฒนา Apple เท่านั้น ดังนั้นจึงไม่มีอะไรให้ดาวน์โหลดโดยอัตโนมัติ วิธีแก้มีแค่คำสั่งเดียว:
brew install whisper-cpp ffmpegจากนั้น AiSrt จะค้นหาเครื่องมือที่ติดตั้งอยู่ในระบบของคุณและใช้มันไปตามนั้น ผมไม่มี Mac อยู่ใกล้มือให้ลองทำตามสถานการณ์นี้ตั้งแต่ต้นจนจบ ดังนั้นถ้าคุณใช้ macOS แล้วติดขัด เขียนมาหาผมได้ ผมสนใจ
คำบรรยายที่เป็นรูปภาพ
ดึงแทร็กคำบรรยายออกมาจาก Blu-ray แล้วคุณจะไม่ได้ข้อความ คุณจะได้ รูปภาพ หนึ่งรูปต่อหนึ่งประโยค ในรูปแบบที่เรียกว่า PGS แผ่นไม่ได้เก็บคำพูด มันเก็บรูปถ่ายของคำพูด การรักษาฟอนต์และตำแหน่งแบบเดียวกับในโรงภาพยนตร์นั้นสะดวกดี แต่พออยากแปลกลับเป็นหายนะ: ไม่มีอะไรให้แปล มีแต่พิกเซล
จนถึงตอนนี้ AiSrt จะบอกคุณอย่างสุภาพว่ามันทำไม่ได้ ตอนนี้มันทำได้แล้ว
เกิดอะไรขึ้นเมื่อคุณสั่งคำสั่ง
ไม่มีอะไรใหม่ให้พิมพ์ นี่คือคำสั่งเดิมเหมือนก่อนหน้านี้:
aisrt --extract "film.mkv"ถ้าคุณเลือกแทร็กภาพ AiSrt จะทำสามขั้นตอนต่อกัน มันดึงแทร็กดิบออกจากคอนเทนเนอร์ด้วย ffmpeg มันถอดรหัสภาพเอง ทีละภาพต่อหนึ่งคำบรรยาย โดยเก็บช่วงเวลาที่แสดงตามที่ดิสก์เขียนไว้ไปด้วย จากนั้นจึงส่งทุกอย่างให้ Tesseract ซึ่งเป็นเอนจินรู้จำอักขระ (ซอฟต์แวร์ที่อ่านข้อความจากภาพ) ครั้งเดียวตลอดทั้งแทร็ก
ไฟล์ภาษาของ Tesseract จะถูกดาวน์โหลดให้เอง ในภาษาที่แทร็กระบุไว้ แทร็กภาษาฝรั่งเศสจะได้ภาษาฝรั่งเศส แทร็กภาษาญี่ปุ่นจะได้ภาษาญี่ปุ่น คุณไม่ต้องเลือกอะไรเลย
Tesseract ต้องติดตั้งเอง
นี่คือ dependency เดียวที่ AiSrt จะไม่ไปหาให้คุณ และมันก็เป็นแบบนั้นโดยตั้งใจ ffmpeg และ whisper เผยแพร่ไฟล์ปฏิบัติการแบบอิสระที่ผมดาวน์โหลดได้อย่างเรียบร้อย แต่ Tesseract ไม่ใช่แบบนั้น : มันเป็นตัวติดตั้งระดับระบบ ซึ่งแตกต่างกันไปในแต่ละแพลตฟอร์ม คำสั่งเดียวก็พอ :
# Windows
winget install tesseract-ocr.tesseract
# Linux
sudo apt install tesseract-ocr
# macOS
brew install tesseractเกร็ดเล็ก ๆ ที่ทำให้ผมเสียเวลาไปครึ่งชั่วโมง : บน Windows ตัวติดตั้งนี้ไม่ได้ใส่ Tesseract ไว้ใน PATH ดังนั้น AiSrt จึงตอบผมว่าไม่พบเครื่องมือนี้ และเสนอให้ผมรันคำสั่งเดิมกับที่เพิ่งรันไปพอดี วนลูปไม่มีทางออก ตอนนี้ AiSrt จะลองดูในโฟลเดอร์ที่ตัวติดตั้งเอาไบนารีไปวางไว้จริง ๆ
AI อ่านทวนสิ่งที่ OCR อ่านมา
เอนจินรู้จำอักขระมักทำผิดแบบเดิม ๆ เสมอ ขีดแนวตั้งแทนตัว I พิมพ์ใหญ่ ตัว r ตามด้วย n กลายเป็น m เครื่องหมายกำกับเสียงถูกกลืนหายไป พอเป็นหนังทั้งเรื่อง มันก็เริ่มเห็นชัด
ดังนั้น AiSrt จึงส่งข้อความที่รู้จำได้กลับไปยังบริการแปลภาษาของคุณ พร้อมคำสั่งที่ชัดเจน : แก้ข้อผิดพลาดจากการอ่าน อย่าแปลอะไร อย่าเรียบเรียงใหม่ อย่าตัดให้สั้นลง นี่คือการอ่านทวน ไม่ใช่การเขียนใหม่ จากคำบรรยาย 100 รายการในฉากหนังที่ผมเอามาทดสอบ มี 14 รายการที่ถูกแก้ไข 86 รายการถูกต้องอยู่แล้ว และไม่มีแม้แต่รายการเดียวที่ถูกย้ายหรือแต่งขึ้นมา
กลไกป้องกันพลาดสำคัญกว่าฟีเจอร์เสียอีก ผมจึงจะลงรายละเอียด การแก้ไขจะได้รับการยอมรับก็ต่อเมื่อยังใกล้เคียงกับสิ่งที่อ่านมา : โมเดลที่ตัดสินใจแปลบทพูดจะถูกโยนทิ้ง และถ้าคำตอบมีข้อความไม่เท่ากับจำนวนที่มันส่งไปพอดี ทั้งชุดจะถูกยกเลิกและเก็บข้อความดิบไว้ ผมยอมให้มีคำบรรยายที่เห็นคำผิด ดีกว่าได้คำบรรยายที่สมบูรณ์แบบแต่แปะอยู่บนบทพูดผิดประโยค
การอ่านทวนนี้เปิดใช้งานเป็นค่าเริ่มต้นและใช้บริการเดียวกับที่แปลอยู่แล้ว คุณปิดมันได้ หรือมอบหมายให้บริการอื่นทำแทนได้ ใน appsettings.json และถ้าไม่ได้ตั้งค่าคีย์ไว้ ก็ไม่มีอะไรเลวร้ายเกิดขึ้น : ข้อความจาก OCR จะถูกเขียนออกมาตามนั้น AiSrt จะบอกคุณ และการดึงข้อมูลจะจบลงตามปกติ
บั๊กที่ผมคงไม่มีวันเจอถ้าไม่ตั้งใจตามหา
ดิสก์หลายแผ่นทำให้คำบรรยายปรากฏและหายไปแบบค่อย ๆ จาง สำหรับเรื่องนี้ มันไม่ได้ส่งภาพใหม่มา : มันนำภาพเดิมกลับมาใช้ใหม่โดยเปลี่ยนแค่ความโปร่งใส AiSrt มองการเปลี่ยนแปลงนี้ว่าเป็นจุดจบของคำบรรยาย
ผลลัพธ์คือคำบรรยายที่แสดงอยู่สี่วินาทีกลับออกมาเป็นสามชิ้น ชิ้นแรกยาวหนึ่งวินาที ส่วนอีกสองชิ้นจางเกินกว่าจะอ่านทวนได้ จึงถูกทิ้ง ไฟล์ทดสอบของผมไม่มีไฟล์ไหนค่อย ๆ จางเลย ดังนั้นผมจึงสร้างกรณีนี้ขึ้นมาโดยเฉพาะเพื่อดูมัน สามชิ้นก่อนหน้า กลายเป็นคำบรรยายเดียวที่มีระยะเวลาถูกต้องในภายหลัง
ตอนนี้ AiSrt จะเก็บผลการเรนเดอร์ที่อ่านได้ชัดที่สุดไว้จากผลลัพธ์ต่อเนื่องทั้งหลาย การค่อย ๆ จางเริ่มต้นและจบลงด้วยความโปร่งใส : ทั้งภาพแรกและภาพสุดท้ายจึงไม่ใช่ตัวเลือกที่ถูกต้อง
สิ่งที่ยังใช้การไม่ได้
คำบรรยายภาพของ DVD และ TNT ยังถอดรหัสไม่ได้ ต่างจาก PGS ที่แต่ละภาพเป็นอิสระต่อกัน ฟอร์แมตเหล่านี้ต้องอ่านโดยอาศัยข้อมูลที่เก็บไว้อีกที่หนึ่งในไฟล์ นี่เป็นงานอีกชิ้นหนึ่ง ไม่ใช่การต่อยอดจากงานนี้ ระหว่างนี้ AiSrt จะตรวจพบมันและแจ้งเตือนคุณ แทนที่จะเงียบแล้วไม่สนใจมัน
กระบวนการครบวงจร ตั้งแต่วิดีโอดิบจนถึงคำบรรยายที่แปลแล้ว
# Étape 1 : transcrire l'audio anglais
aisrt --transcribe "conference.mp4"
# donne conference.en.srt
# Étape 2 : traduire en français
aisrt "conference.en.srt" -s en -t fr
# donne conference.fr.srt
# Étape 3 : et en espagnol tant qu'à faire
aisrt "conference.en.srt" -s en -t es
# donne conference.es.srtสามคำสั่ง และวิดีโอที่ไม่มีคำบรรยายก็พร้อมให้เข้าถึงได้ในสามภาษา
รายละเอียดเล็กๆ ที่สำคัญถ้าคุณเขียนสคริปต์ให้ทำทั้งหมดนี้ : AiSrt จะคืนค่า 0 เมื่อทุกอย่างเรียบร้อยดี, 1 เมื่อเกิดข้อผิดพลาด, และ 2 ถ้าคุณเป็นคนยกเลิกเอง สิ่งที่เขียนลงดิสก์ไปแล้วจะยังอยู่ตรงนั้น และการแปลจะทำต่อในการเปิดใช้งานครั้งถัดไป
ทำทุกอย่างให้เป็นอัตโนมัติ โดยไม่ต้องถามสักคำถาม
สามคำสั่งด้านบนจะถามคำถาม : จะดึงแทร็กไหน, จะใช้โมเดลอะไร, ต้องแปลต่อหรือไม่ สะดวกเมื่อคุณนั่งอยู่หน้าจอ แต่สะดวกน้อยลงมากเมื่อคุณอยากประมวลผลทั้งซีซันระหว่างกลางคืน
ตัวเลือกสี่ตัวเข้ามาแทนที่คำถามเหล่านั้น และกระบวนการทั้งหมดก็เหลือเพียงบรรทัดเดียว :
# Extraire la piste 2, la traduire en francais, sans jamais rien demander
aisrt --extract "episode.mkv" --stream 2 --translate-to fr --non-interactiveหรือสำหรับทั้งโฟลเดอร์ บน Windows :
Get-ChildItem *.mkv | ForEach-Object {
aisrt --extract $_.FullName --stream 1 --translate-to fr --non-interactive
}--non-interactive ไม่ได้เดาอะไรทั้งนั้น : แต่ละคำถามจะใช้ค่าดีฟอลต์ของมัน และมันจะบอกคุณว่าค่าที่เลือกคืออะไรและตัวเลือกไหนที่จะใช้เลือกค่าอื่นได้ แต่ค่าที่คุณระบุอย่างชัดเจนจะไม่ถูกละเลยไปเงียบๆ เด็ดขาด ถ้าคุณขอแทร็ก 7 จากไฟล์ที่มีอยู่แค่สองแทร็ก มันจะหยุดและแสดงรายการแทร็กที่มีให้คุณ แทนที่จะแยกทุกอย่างออกมาโดยทำเหมือนไม่มีอะไรเกิดขึ้น สำหรับสคริปต์แล้ว ข้อผิดพลาดที่ชัดเจนย่อมดีกว่าผลลัพธ์ที่คาดไม่ถึง
และถ้าคุณกด Ctrl+C ในโหมดนี้ มันจะหยุดทันทีโดยไม่ถามยืนยัน ไม่มีใครอยู่ตอบ และคำถามที่ไม่มีคำตอบจะทำให้สคริปต์ค้างไปจริงๆ
ภาษาที่รองรับ
| รหัส | ภาษา | รหัส | ภาษา | รหัส | ภาษา |
|---|---|---|---|---|---|
ar | อาหรับ | cs | เช็ก | da | เดนมาร์ก |
de | เยอรมัน | el | กรีก | en | อังกฤษ |
es | สเปน | fi | ฟินแลนด์ | fr | ฝรั่งเศส |
he | ฮีบรู | hi | ฮินดี | hu | ฮังการี |
id | อินโดนีเซีย | it | อิตาลี | ja | ญี่ปุ่น |
ko | เกาหลี | ms | มาเลย์ | nl | ดัตช์ |
no | นอร์เวย์ | pl | โปแลนด์ | pt | โปรตุเกส |
ro | โรมาเนีย | ru | รัสเซีย | sv | สวีเดน |
th | ไทย | tr | ตุรกี | uk | ยูเครน |
vi | เวียดนาม | zh | จีน |
พิมพ์ aisrt --languages เพื่อเรียกรายการนี้กลับมาดูได้ทุกเมื่อ
การตั้งค่าขั้นสูง
ทุกอย่างตั้งค่าได้ใน appsettings.json :
- โมเดล พร้อมคีย์
Modelหากต้องการใช้โมเดล OpenAI อื่นแทนgpt-5-mini. - ขนาดแบตช์ พร้อม
BatchSize: จำนวนบล็อกที่ส่งต่อคำขอ โดยค่าเริ่มต้นคือ 40. - ความยาวบรรทัด พร้อม
MaxLineLength: หากเกิน 50 ตัวอักษร AiSrt จะตัดบรรทัดให้ยังอ่านได้ง่ายบนหน้าจอ. - เวลารอเครือข่าย พร้อม
RequestTimeoutMinutes: ค่าเริ่มต้นคือ 10 นาที หากเพิ่มBatchSizeขึ้นมาก ก็ควรเพิ่มค่านี้ด้วย. - คำสั่งที่ให้ AI พร้อม
SystemPromptและUserInstructionPrompt. ตรงนี้แหละที่เริ่มน่าสนใจ คุณสามารถปรับการแปลให้เข้ากับบริบททางกฎหมาย การแพทย์ ศาสนา หรือเทคนิคได้ด้วยการเขียนข้อความสองส่วนนี้ใหม่ ผมจงใจแยกมันออกจากโค้ดเพื่อการนี้. - อุณหภูมิ ตั้งแต่ 0.3 สำหรับการแปลแบบตรงตัวมาก ไปจนถึง 1.5 สำหรับการแปลที่อิสระกว่า ค่าเริ่มต้นคือ 1.
- เครื่องมือแปล ด้วย
Providerในส่วนTranslation:openai,anthropic,gemini,xaiหรือollama. นี่คือการตั้งค่าที่ใช้กับคำสั่งทั้งหมดของคุณ ส่วน--providerใช้เฉพาะกับคำสั่งที่กำลังทำงานอยู่เท่านั้น. - การตั้งค่า Ollama ในส่วนเฉพาะของมันเอง : ที่อยู่เซิร์ฟเวอร์ด้วย
BaseUrl, โมเดลด้วยModel, ขนาดแบตช์ด้วยBatchSize, และขนาดหน้าต่างบริบทด้วยNumCtx. หากเพิ่มค่าแรก ก็อย่าลืมเพิ่มค่าที่สองด้วย. - การรู้จำตัวอักษร ในส่วน
Ocr: ภาษาสำรองด้วยDefaultLanguage, โหมดแบ่งส่วนของ tesseract ด้วยPageSegMode, และการขยายภาพก่อนอ่านด้วยUpscaleFactor. สองค่าหลังมีขอบเขตจำกัด : หากใส่ค่าพิสดาร ระบบจะแจ้งเตือนและแทนที่ค่าให้ แทนที่จะทำให้การอ่านภาพทีละภาพล้มเหลว. - การตรวจทานข้อความ OCR ใน
Ocr:Proofread:Enabledเพื่อปิดการทำงาน,Providerเพื่อมอบหมายให้บริการอื่นที่ไม่ใช่บริการที่แปลข้อความทำงานนี้,BatchSizeสำหรับขนาดแบตช์ พรอมต์สองส่วนของมันเขียนใหม่ได้เหมือนกับของการแปล.
สำหรับใคร?
- คนหูหนวกและผู้มีปัญหาการได้ยินที่ต้องใช้คำบรรยายเพื่อเข้าถึงวิดีโอในชีวิตประจำวัน.
- คอนเทนต์ครีเอเตอร์ที่ต้องการเข้าถึงผู้ชมที่ใช้ภาษาต่างจากตน.
- ครูและวิทยากรที่คอร์สออนไลน์ของพวกเขาสมควรได้รับสิ่งที่ดีกว่าคำบรรยายอัตโนมัติแบบลวกๆ.
- นักแปลมืออาชีพเพื่อช่วยร่างฉบับแรกให้หยาบๆ ได้ภายในไม่กี่นาที.
- คนรักภาพยนตร์และซีรีส์แน่นอน.
- สมาคมและองค์กรพัฒนาเอกชนที่เผยแพร่วิดีโอไปยังต่างประเทศ.
AiSrt ฟรีและพร้อมใช้งาน.
ดาวน์โหลดไปลองใช้ แล้วทำให้วิดีโอของคุณเข้าถึงได้สำหรับทุกคน.

Join the conversation
You need an account to comment on this article. Creating one is free and takes under a minute.
No comments yet.