Mac menu bar app สำหรับพิมพ์ภาษาไทยด้วยเสียง — บังคับเป็นภาษาไทยเสมอ
แก้ปัญหา macOS Dictation ที่เลือกภาษาตาม keyboard input source — ของเดิมต้องสลับคีย์บอร์ดเป็นไทยก่อนทุกครั้ง
ตัวนี้ ไม่ว่าคีย์บอร์ดจะเป็นภาษาอะไร พูดแล้วได้ภาษาไทยเสมอ
สร้างเป็นโปรเจค vibe coding ส่วนตัว — แชร์ฟรี เอาไปใช้ ดัดแปลง แจกต่อได้เลย
- 🎯 Lock เป็นภาษาไทย 100% — ไม่สนใจ keyboard input source ปัจจุบัน
- ⌨️ Hotkey: กด
Control2 ครั้ง เปิด/ปิดไมค์ (เหมือน macOS Dictation ของเดิม) - 💬 Live caption ขึ้นกลางจอด้านบนระหว่างพูด เห็นคำที่ฟังได้แบบ real-time
- 🌐 โหมดพูดไทย → พิมพ์อังกฤษ ใช้ Apple Translation framework (offline)
- 📋 วางข้อความอัตโนมัติ ลงในช่องที่ cursor อยู่ (Notes, Slack, Browser, ทุกที่)
- 🪶 Menu bar app เบาๆ — ไม่กิน dock, ไม่กิน RAM
- 🔒 On-device mode ถ้า macOS ของคุณมี Thai offline model (ไม่ส่งเสียงออกเครื่อง)
- 💯 Open source — Swift ไฟล์เดียว อ่านง่าย ดัดแปลงเองได้
- macOS 14.4 (Sonoma) ขึ้นไป — แนะนำ macOS 26 (Tahoe) สำหรับโหมด TH→EN ที่ดีที่สุด
- Apple Silicon หรือ Intel Mac
- ไมโครโฟน (built-in หรือ external)
- ต่อ internet ครั้งแรก (เพื่อให้ macOS โหลด offline models — ดู section ข้างล่าง)
git clone https://github.com/tlejay/ThaiDictate.git
cd ThaiDictate
./build.sh
open ThaiDictate.appต้องมี Xcode Command Line Tools ก่อน:
xcode-select --installดูที่ Releases → ดาวน์โหลด ThaiDictate.app.zip ล่าสุด → unzip → ลากเข้า Applications
⚠️ ครั้งแรก macOS จะเตือนว่า "ไม่รู้จักผู้พัฒนา" — ไป System Settings → Privacy & Security → กดปุ่ม Open Anyway
⚠️ ไฟล์เหล่านี้ ไม่ได้รวมมาใน app/repo นี้ เพราะเป็น model ของ Apple เอง
ต้องให้ macOS ดาวน์โหลดให้จาก Apple servers ฟรี (เปิดเครื่องทิ้งไว้ ต่อ Wi-Fi)
ทำให้ภาษาไทยทำงาน offline ได้ + แม่นขึ้น (Apple's Enhanced Dictation)
- เปิด System Settings → Keyboard
- ในส่วน Dictation → คลิก Edit ตรงข้าง Languages
- ติ๊ก ✅ Thai (Thailand)
- กด OK
- เปิดเครื่องทิ้งไว้ + ต่อ Wi-Fi ~30 นาที - 2 ชม. → macOS จะโหลดให้เองใน background
✅ เช็คว่าโหลดเสร็จยัง: เปิด ThaiDictate → คลิกที่ 🎙️ ที่ menu bar → ดูบรรทัด Speech:
On-device ✅= พร้อมใช้ offline แล้ว 🎉Cloud ☁️= ยังไม่โหลดเสร็จ / macOS ยังไม่รองรับ (เครื่องจะส่งเสียงไป Apple servers แทน)
จำเป็นถ้าจะใช้โหมด "พูดไทย → พิมพ์อังกฤษ" แบบ offline
วิธีโหลด:
- โหลดอัตโนมัติครั้งแรกที่กดใช้โหมด TH→EN ใน ThaiDictate (จะมี popup ของ macOS เด้งให้ Allow)
- หรือ pre-download ผ่านแอป Translate ของ Apple → Settings → Downloaded Languages → เพิ่ม Thai
หลังโหลดเสร็จ → แปลภาษาทำงาน offline 100%
💡 ถ้าไม่ต้องการ offline mode ก็ใช้งาน app นี้ได้ตามปกติเลย — แค่จะส่งเสียง/ข้อความผ่าน Apple servers แทน (เร็วเหมือนกัน, ฟรีเหมือนกัน)
ต้องเปิด 4 อย่าง ใน System Settings → Privacy & Security:
| Permission | จะเด้งเอง? | เพื่ออะไร |
|---|---|---|
| Microphone | ✅ เด้งเอง | รับเสียงจากไมค์ |
| Speech Recognition | ✅ เด้งเอง | แปลงเสียงเป็นข้อความ |
| Input Monitoring | ❌ ต้องเพิ่มเอง | ดักจับการกด Control 2 ครั้ง |
| Accessibility | ❌ ต้องเพิ่มเอง | วางข้อความลงช่องที่ cursor อยู่ |
วิธีเพิ่ม Input Monitoring / Accessibility ด้วยตัวเอง:
- เปิด System Settings → Privacy & Security
- คลิก Input Monitoring (หรือ Accessibility)
- กดปุ่ม
+→ เลือกThaiDictate.app→ Open - เปิดสวิตช์ ON
- ทำซ้ำกับอีกอันหนึ่ง
หลังเปิด permissions ครบ → quit แล้วเปิด app ใหม่ 1 รอบ
- คลิกที่ช่อง textfield ไหนก็ได้ (Notes, Slack, Chrome, Cursor, Notion, ฯลฯ)
- กด
Control2 ครั้งติดกัน → menu bar เปลี่ยนเป็น 🔴 ฟัง… + กล่อง caption ขึ้นกลางจอด้านบน - พูดภาษาไทย → เห็นคำที่ฟังได้แบบ real-time ในกล่อง caption
- กด
Control2 ครั้งอีกครั้ง → ข้อความวางลงในช่องอัตโนมัติ ✨
- คลิกไอคอน 🎙️ ที่ menu bar
- เลือก "อังกฤษ (พูดไทย → พิมพ์อังกฤษ)"
- ใช้ hotkey เหมือนเดิม → พูดไทย → ข้อความที่วางจะเป็น English
⚠️ ครั้งแรกที่ใช้โหมดนี้: macOS อาจมี popup ขออนุญาตโหลด Thai-English translation model ~50MB → กด Allow / Download
- เช็คว่าเปิด Input Monitoring ให้ ThaiDictate.app แล้วหรือยัง
- Quit แล้วเปิด app ใหม่หลังเปิด permission
- เช็คว่าเปิด Accessibility ให้ ThaiDictate.app แล้วหรือยัง
- ตรวจสอบว่ามีช่อง text field active อยู่จริง
- เช็ค menu bar ว่าเปลี่ยนเป็น 🔴 ฟัง… จริงมั้ย
- เช็ค Microphone permission
- ลองพูดดังๆ ใกล้ไมค์ขึ้น
- น่าเสียดาย Apple ASR ภาษาไทยยังไม่แม่นเท่า OpenAI Whisper
- ถ้าต้องการความแม่นสูงกว่า → ดู Future Ideas ข้างล่าง
pkill -f ThaiDictate- Swift 6 + AppKit + SwiftUI (สำหรับ Translation framework เท่านั้น)
- Apple's Speech framework (
SFSpeechRecognizerlocked toth-TH) - Apple's Translation framework (TH→EN offline translation)
- AVFoundation สำหรับรับเสียงจากไมค์
- NSEvent global monitor สำหรับดักจับ Control 2 ครั้ง
- NSPanel + NSVisualEffectView สำหรับ Live Caption HUD
- CGEvent สำหรับ simulate Cmd+V
- ทั้งหมดอยู่ใน
main.swiftไฟล์เดียว — อ่านง่าย, hack ได้
ThaiDictate/
├── main.swift # Source code ทั้งหมด อยู่ในไฟล์เดียว
├── generate_icon.swift # Render app icon ทุกขนาดจาก SF Symbol
├── AppIcon.icns # Icon ที่ render แล้ว (commit ไว้)
├── Info.plist # App metadata + permission descriptions
├── build.sh # Compile + bundle + ad-hoc sign
├── README.md # คุณกำลังอ่านอยู่
└── LICENSE # MIT
อยากช่วยพัฒนาต่อ? PR welcome! ไอเดียที่อยากได้:
- Whisper backend — ใช้ OpenAI Whisper (local via
whisper.cppหรือ WhisperKit) เพื่อความแม่นที่สูงขึ้น - Configurable hotkey — ให้ผู้ใช้เลือก hotkey เองได้
- Auto-launch on login — เปิดเองตอนเปิดเครื่อง
- เพิ่มภาษาเป้าหมายอื่น — เช่น TH→JP, TH→ZH (Apple Translation รองรับ)
- Sound feedback — เสียงปี๊บตอนเริ่ม/หยุดบันทึก
- Notarize + DMG release — เพื่อให้ดาวน์โหลดและติดตั้งง่ายโดยไม่ต้อง build เอง
MIT — เอาไปใช้ ดัดแปลง แจก ขายได้ตามสบาย ขอแค่ keep credit ไว้ ดู LICENSE
สร้างโดย Tle ด้วย Claude Code
ส่วนหนึ่งของ madebytle.com
ถ้าใช้แล้วชอบ บอกต่อเพื่อนหน่อย 💚