Game Boy Speech Synthesizer
Speech Synthesizer for Game Boy
Controls (Demo)
| Button | Function | Key Binding |
|---|---|---|
| A | Synthesize "Hello World." | K |
| B | Synthesize "How are you?" | J |
| UP | Synthesize "Nice to meet you" | W |
| DOWN | Synthesize "Welcome to the game!" | S |
| LEFT | Synthesize "Thank you very much!" | A |
| RIGHT | Synthesize "Amazing!" | D |
| START | Stop playback | 2 |
| SELECT | Change pitch | 1 |
About This Software
Latest source code on GitHub.
This project is a Game Boy realtime speech synthesizer that outputs gibberish voice. It is used as a sub module in a runtime kernel of the GB BASIC project.
It provides a stylized speech synthesis solution with decent realtime efficiency rather than realistic human voice synthesis. The idea is similar to the mumbled speech of characters in Tomodachi Life, Animal Crossing, and many other games. You can use it to give every line of conversation in your Game Boy game a unique auditory experience. Using this approach offers the following benefits:
- Globalization strategy: avoids recording voice-overs for dozens of languages while giving players across regions a unified audiovisual experience
- Cost and performance: an extremely efficient solution considering budget and storage constraints
- Artistic expression: pursues a unique aesthetic, avoids fatigue from repeated lines, and leaves infinite room for the player's imagination
Technical Notes
This library is written in C and requires GBDK-2020 to compile. You can test it via the online link at the top of this page, or download the precompiled .gb file.
The library uses the second square channel (the NR2y registers) for audio output. To integrate it into your own game, simply add "speech.c", "speech.h", "utils.c", "utils.h" to your project and define macros such as banking as needed. You may also want to modify "utils" according to your own situation.
This library was created primarily with English scenarios in mind. Thanks to its gibberish style, it also works well with non-English text, and you can write text for other languages based on English spelling-pronunciation rules.
API Usage
Initialization
#include "speech.h"
speech_init();
Updating
for (; ; ) {
speech_update(); // Called every frame.
// ...
}
Speaking
const char * txt = "Hello World";
speech_play(0, txt, strlen(txt)); // Speak asynchronously.
Getting Whether the Synthesizer Is Busy
speech_is_playing();Download
Click download now to get access to the following files:

Leave a comment
Log in with itch.io to leave a comment.