MyScript
Desktop teleprompter app with real-time speech transcription to track script reading.
Build with Wails and ReactJS
Turning Recording Frustration into a Smart Teleprompter
The Spark: A Personal Pain Point
Like many creators, I often find myself recording tutorials or guided walkthroughs. While scripting is essential for clarity, I consistently hit a frustrating roadblock during recording: losing my place in the script. Trying to simultaneously read, operate software, speak clearly, and mentally track progress was inefficient and broke my flow. I knew there had to be a better way than constantly pausing, scrolling, and trying to find where I left off. This very personal frustration became the catalyst for MyScript.
The Vision: A Seamless Recording Companion
I envisioned a desktop application that could act as an intelligent teleprompter. The core idea was simple yet powerful: what if the application could listen to me speak and automatically follow along in the script? This would free me up to focus on delivering the content naturally, knowing the script would always be in the right place.
Building MyScript: The Solution
MyScript is the realization of that vision. Built using Go for the backend logic and ReactJS with the Wails framework for the cross-platform desktop UI, it offers:
- Real-Time Transcription & Tracking: This is the heart of the app. Using various speech-to-text engines, MyScript listens via the microphone, transcribes the speech, and intelligently highlights or scrolls the loaded script to match the spoken words.
- Flexible Script Sources: Users aren't locked into one workflow. They can directly connect their Notion account to pull in pages as scripts or use the integrated local block-style editor (inspired by Notion) to write and refine scripts directly within the app. (Optional: Mention AI features here if implemented: "The local editor is also planned/equipped with AI tools for text generation and improvement.")
- Choice of Transcription Engines: Recognizing that users have different needs regarding accuracy, cost, and privacy, I implemented support for multiple ASR (Automatic Speech Recognition) options:
- Remote OpenAI Whisper: High accuracy via API (User's API key required).
- Local Whisper: Privacy-focused, offline transcription running on the user's machine.
- Groq Whisper: Leveraging Groq's fast API implementation (User's API key required).
- Wit.ai: A free, accessible cloud-based option (Internet required).
- Cloud Sync & Backup: To ensure scripts and configurations aren't lost and are accessible across devices, I integrated Google Drive synchronization.
Navigating the Challenges: The Local Whisper Hurdle
While building MyScript was a rewarding experience overall, integrating Local Whisper presented a significant technical challenge. Unlike calling a remote API, running a complex machine learning model like Whisper locally directly from Go required delving into lower-level integration.
This involved:
- Finding and Using Go Bindings: Identifying suitable Go bindings for the underlying Whisper implementation (often based on
whisper.cpp
). - Managing Dependencies: Handling the C/C++ dependencies of the Whisper library across different operating systems (Windows, macOS, Linux) proved complex.
- Cross-Compilation Woes: Ensuring the application could be built reliably for various platforms using Wails, especially when CGo (Go's interface for C code) was involved, required careful configuration and troubleshooting.
- Performance Considerations: Optimizing the interaction between Go and the Whisper library to ensure real-time transcription without consuming excessive system resources.
Overcoming this hurdle was incredibly satisfying. It significantly deepened my understanding of Go's interoperability with C/C++ code via CGo, cross-platform development nuances, and the practicalities of embedding ML models within desktop applications. It also reinforced the value of providing users with privacy-conscious, offline alternatives.
Key Technologies Used:
- Backend: Go
- Frontend: ReactJS
- Framework: Wails v2
- APIs/Libraries: Notion API, OpenAI API, Groq API, Wit.ai API, Google Drive API, Go bindings for Local Whisper.
- License: MIT
Outcomes & Learning
MyScript started as a tool to solve my own problem, but it grew into a comprehensive project that honed my skills in:
- Full-stack desktop application development using Go, React, and Wails.
- Integrating third-party APIs (Notion, Google Drive, various ASR services).
- Tackling complex cross-platform challenges, particularly with CGo and local ML model integration.
- Designing a user-centric application flow to address a specific workflow pain point.
This project showcases my ability to identify a need, architect a solution, navigate technical complexities, and deliver a functional and useful tool.