A handmade, offline puppet-film studio for macOS, Linux, and Windows.
Tiny Voices turns written words or a voice recording plus a set of still PNG poses into a stop-motion MP4. It listens for energy, pauses, and emphasis, then cuts between the drawings. No cloud. No analytics. No morphing. No invented in-between frames.
| System | Release | Guide |
|---|---|---|
| macOS Apple Silicon or Intel | DMG or ZIP, native arm64 or x64 | macOS installation and Gatekeeper |
| Linux x64 | DEB recommended; AppImage also included | Linux installation |
| Windows x64 | NSIS installer | Windows installation |
The macOS build is ad-hoc signed but not Apple Developer ID-signed or notarized; the Windows build is not Authenticode-signed. The guides explain the one-time operating-system warning without asking you to weaken system security globally.
- Makes a local voice from text using Apple voices, eSpeak NG, or Windows Speech.
- Accepts MP3, WAV, M4A, AAC, AIFF, and FLAC recordings.
- Builds deterministic pose timing from voice energy and pauses.
- Lets you drag exact frame-snapped seams between pose runs.
- Renders 9:16 or 16:9 H.264/AAC MP4 at any whole FPS from 12–60.
- Imports and exports portable
.tinyvoices.zipcharacter packs. - Keeps scripts, recordings, characters, jobs, and renders on your machine.
The app ships with two Juno character sets. The built-in workshop explains every pose; the character-set guide documents the format for artists and contributors.
Tiny Voices is an Electron shell around a local Python rendering service. On macOS it uses inset traffic lights, system window corners and shadows, native application menus, Finder save panels, normal close/reopen behaviour, and native Apple Silicon and Intel builds. Linux and Windows get their native menus, file dialogs, installers, and local speech engines.
The renderer cannot access Node.js. It runs sandboxed with context isolation, denied permissions, blocked popups, same-origin navigation, a strict Content Security Policy, and an authenticated loopback service. See SECURITY.md and the architecture note.
Packaged app data lives here:
- macOS:
~/Library/Application Support/Tiny Voices/studio - Linux:
~/.config/Tiny Voices/studio - Windows:
%APPDATA%\Tiny Voices\studio
Inside are characters/, output/, and logs/. The File menu can open the data or output folder. Uninstalling the app does not intentionally delete this studio folder.
Each job retains its input, analysis, exact frame plan, manifest, render log, preview, and final film. Text jobs also retain the chosen local voice and pace. Reopening the app restores saved jobs.
Use Node.js 22 and Python 3.12. FFmpeg and FFprobe are bundled into packaged builds.
python3.12 -m venv .venv
node scripts/run-python.cjs -m pip install -r requirements-build.txt
npm ci
npm test
npm startOn Linux, install espeak-ng to test Written Words mode. Windows contributors can create the environment with py -3.12 -m venv .venv; the remaining commands are the same.
Native packages are built on their own operating system:
npm run dist:mac
npm run dist:linux
npm run dist:winGitHub Actions runs the full test suite on Apple Silicon macOS, Intel macOS, Linux, and Windows, then builds native release assets. More detail: development guide.
Tiny Voices is released under the MIT License. Release history lives in the changelog. Third-party components keep their own licenses; see third-party notices. Contributions are welcome—start with CONTRIBUTING.md.
The original v3 implementation notes remain in HANDOVER_V3.md as project history.
Bad scissors. Good timing. Tiny voices.