{"id":49437475,"url":"https://github.com/paladin-t/gb-speech","last_synced_at":"2026-05-02T20:00:45.614Z","repository":{"id":354588663,"uuid":"1221377750","full_name":"paladin-t/gb-speech","owner":"paladin-t","description":"A Game Boy realtime speech synthesizer that outputs gibberish voice.","archived":false,"fork":false,"pushed_at":"2026-04-29T06:35:36.000Z","size":22,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-30T18:21:32.934Z","etag":null,"topics":["game-boy","gameboy","gamedev","gbbasic","gbdev","gbdk","gbdk-2020","speech-synthesis","speech-synthesizer","tts"],"latest_commit_sha":null,"homepage":"https://tonywang.itch.io/gb-speech","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/paladin-t.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-26T05:48:54.000Z","updated_at":"2026-04-30T04:28:33.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/paladin-t/gb-speech","commit_stats":null,"previous_names":["paladin-t/gb-speech"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/paladin-t/gb-speech","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paladin-t%2Fgb-speech","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paladin-t%2Fgb-speech/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paladin-t%2Fgb-speech/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paladin-t%2Fgb-speech/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/paladin-t","download_url":"https://codeload.github.com/paladin-t/gb-speech/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paladin-t%2Fgb-speech/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32508912,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"online","status_checked_at":"2026-05-01T02:00:05.856Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["game-boy","gameboy","gamedev","gbbasic","gbdev","gbdk","gbdk-2020","speech-synthesis","speech-synthesizer","tts"],"created_at":"2026-04-29T17:41:04.412Z","updated_at":"2026-05-01T19:00:31.691Z","avatar_url":"https://github.com/paladin-t.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Speech Synthesizer for Game Boy\n\n## About This Software\n\nTry it [online](https://tonywang.itch.io/gb-speech) (itch.io)?\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.youtube.com/shorts/t7VPJj0dZ4M\"\u003e\n    \u003cimg src=\"https://img.youtube.com/vi/t7VPJj0dZ4M/maxresdefault.jpg\" width=\"256px\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\nThis project is a Game Boy realtime speech synthesizer that outputs gibberish voice. It is used as a sub module in a runtime [kernel](https://github.com/paladin-t/gbb/releases/latest) of the [GB BASIC](https://github.com/paladin-t/gbb) project.\n\nIt 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:\n\n1. Globalization strategy: avoids recording voice-overs for dozens of languages while giving players across regions a unified audiovisual experience\n2. Cost and performance: an extremely efficient solution considering budget and storage constraints\n3. Artistic expression: pursues a unique aesthetic, avoids fatigue from repeated lines, and leaves infinite room for the player's imagination\n\n## Technical Notes\n\nDirectory structure:\n\n```\n.\n├── src/\n│   ├── speech.c        # Speech synthesis implementation\n│   ├── speech.h        # Public data structures and interface definitions\n│   ├── utils.c         # Utilities implementation\n│   ├── utils.h         # Interface of utilities\n│   └── main.c          # Main program and demo\n├── Makefile            # Build script\n├── README.md           # This file\n└── ...\n```\n\nThis 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 in the \"build\" directory.\n\nThe 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.\n\nThis 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.\n\n## API Usage\n\n### Initialization\n\n```c\n#include \"speech.h\"\n\nspeech_init();\n```\n\n### Updating\n\n```c\nfor (; ; ) {\n  speech_update(); // Called every frame.\n  // ...\n}\n```\n\n### Speaking\n\n```c\nconst char * txt = \"Hello World\";\nspeech_play(0, txt, strlen(txt)); // Speak asynchronously.\n```\n\n### Getting Whether the Synthesizer Is Busy\n\n```c\nspeech_is_playing();\n```\n\n## Controls (Demo)\n\n| Button | Function                          |\n|--------|-----------------------------------|\n| A      | Synthesize \"Hello World.\"         |\n| B      | Synthesize \"How are you?\"         |\n| UP     | Synthesize \"Nice to meet you\"     |\n| DOWN   | Synthesize \"Welcome to the game!\" |\n| LEFT   | Synthesize \"Thank you very much!\" |\n| RIGHT  | Synthesize \"Amazing!\"             |\n| START  | Stop playback                     |\n| SELECT | Change pitch                      |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpaladin-t%2Fgb-speech","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpaladin-t%2Fgb-speech","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpaladin-t%2Fgb-speech/lists"}