Skip to content
/ sim Public

A small program which allows to speak any written text with TTS and send the audio to any audio device. Written in C++ with WX Widgets.

Notifications You must be signed in to change notification settings

cyrmax/sim

Repository files navigation

SIM: Speak Instead of Me

SIM is a small program that enables any text to be spoken using any TTS in the OS and output to any audio device.

SIM aims to replace large programs such as Balabolka when you want to speak in TeamTalk or Discord with a SAPI voice, for example, due to microphone issues.

Features

Features are marked with checkboxes to indicate if a feature is already implemented or not.

Note that for now the feature list is a bit more kind of todo list for developers.

  • Select any SAPI voice from the list;
  • Select any audio device to output speech to it;
  • Tune TTS rate and volume (volume is controlled by audio system, not the SAPI engine);
  • Exclude voices which are known to not work with the program (for example Hungarian Profivox or some older SAPI synthesizers);
  • Add UI labels;
  • Keep history of spoken phrases;
  • Clear input text field on enter press and successful speech;
  • Accept command line arguments (to create a personalized shortcut with predefined settings);
  • Display more friendly and understandable SAPI voice names (currently will not be implemented due to SRAL and BlastSpeak implementation details);
  • Modify audio system logic to avoid resampling artifacts;
  • Implement some localization system;
  • Offer some user-friendly translation workflow;

Building

Tools

  • CMake 3.25 or newer (I build with CMake 4, but GitHub builds work with CMake 3.30 or so);
  • A working C/C++ compiler (for now tested only with msvc and clang);

Dependencies

  • Miniaudio for audio output (fetched by CMake automatically);
  • SRAL for TTS (fetched by CMake automatically);
  • SPDLog for logging (fetched by CMake automatically);
  • WXWidgets for user interface (fetched by CMake automatically);
  • CLI11 for command line arguments processing (fetched by CMake automatically);

Development notes

The program aims to be always only one executable file with no extra DLLs. When contributing, please keep that in mind and do not use libraries, which have to be linked dynamically.

About

A small program which allows to speak any written text with TTS and send the audio to any audio device. Written in C++ with WX Widgets.

Resources

Stars

Watchers

Forks

Packages

No packages published