All Projects β†’ symphonly β†’ figaro

symphonly / figaro

Licence: GPL-3.0 license
Real-time voice-changer for voice-chat, etc. Will support many different voice-filters and features in the future. 🎡

Programming Languages

python
139335 projects - #7 most used programming language
typescript
32286 projects
SCSS
7915 projects
shell
77523 projects
powershell
5483 projects
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to figaro

Figaro
Real-time voice-changer for voice-chat, etc. Will support many different voice-filters and features in the future. 🎡
Stars: ✭ 80 (-77.9%)
Mutual labels:  roadmap, voice, microphone, sound, virtual
JustAnotherVoiceChat-Server
Server for the JustAnotherVoiceChat TeamSpeak 3 plugin
Stars: ✭ 17 (-95.3%)
Mutual labels:  voice, teamspeak
jsfxr
JavaScript sound effects generator.
Stars: ✭ 120 (-66.85%)
Mutual labels:  sound-effects, sound
X-Piano
Now you can make your own piano!
Stars: ✭ 13 (-96.41%)
Mutual labels:  sound-effects, sound
Mimic Recording Studio
Mimic Recording Studio is a Docker-based application you can install to record voice samples, which can then be trained into a TTS voice with Mimic2
Stars: ✭ 202 (-44.2%)
Mutual labels:  voice, microphone
Cocorico
πŸ‘ Cocorico is an open source marketplace solution for services and rentals. More information right here: https://www.cocorico.io/en/ πŸš€ Cocorico is also available in an off-the-shelf SaaS package, check out https://www.hatch.li to launch your platform today. 😍 We are hiring (telecommute welcome 🏑): https://www.welcometothejungle.com/en/companies/cocorico/jobs/candidatures-spontanees#apply
Stars: ✭ 765 (+111.33%)
Mutual labels:  roadmap, virtual
JustAnotherVoiceChat
TeamSpeak 3 plugin to control 3D voice communication in games
Stars: ✭ 21 (-94.2%)
Mutual labels:  voice, teamspeak
TeamCord
Cross voice communication between Teamspeak and Discord
Stars: ✭ 35 (-90.33%)
Mutual labels:  voice, teamspeak
JHSoundWaveView
ιŸ³ζ³’ε›ΎοΌŒε£°ζ³’ε›Ύ
Stars: ✭ 22 (-93.92%)
Mutual labels:  voice, sound
tvoip
Terminal-based P2P VoIP application (TeamSpeak-/Skype-like voice chatting over LAN or Internet)
Stars: ✭ 34 (-90.61%)
Mutual labels:  voice, teamspeak
cala
Cross-platform system interface for hardware IO
Stars: ✭ 46 (-87.29%)
Mutual labels:  microphone, sound
Univoice
P2P VoIP in Unity
Stars: ✭ 128 (-64.64%)
Mutual labels:  voice, microphone
Francium Voice
Record user voice and encode it as MP3 or WAV
Stars: ✭ 35 (-90.33%)
Mutual labels:  voice, microphone
voice-based-email-for-blind
Emailing System for visually impaired persons
Stars: ✭ 35 (-90.33%)
Mutual labels:  pyaudio, voice
React Mic
Record audio from a user's microphone and display a cool visualization.
Stars: ✭ 323 (-10.77%)
Mutual labels:  voice, microphone
tgcalls
Voice chats, private incoming and outgoing calls in Telegram for Developers
Stars: ✭ 408 (+12.71%)
Mutual labels:  voice, voice-chat
vasisualy
Vasisualy it's a simple Russian voice assistant written on Python for GNU/Linux, Windows and Android.
Stars: ✭ 33 (-90.88%)
Mutual labels:  voice, voice-chat
saltychat-fivem
FiveM implementation of Salty Chat (TeamSpeak 3 based Voice Plugin)
Stars: ✭ 64 (-82.32%)
Mutual labels:  voice, teamspeak
spafe
πŸ”‰ spafe: Simplified Python Audio Features Extraction
Stars: ✭ 310 (-14.36%)
Mutual labels:  voice, sound
speaker.app
Source code for https://speaker.app, a batteries-included, web-based, quasi-decentralized, WebRTC networking platform, with a primary focus on audio and screen-sharing, and a secondary focus on chat messages and peripheral features.
Stars: ✭ 26 (-92.82%)
Mutual labels:  voice, microphone

Figaro

Figaro

GitHub GitHub top language GitHub Repo stars


About

Real-time open-source voice modification program & sound board. Can be useful for many things, especially when used in combination with virtual sound i/o devices.

figaro collage

figaro demo

Table of Contents

Setup

If you're just looking to use Figaro and not work on it, then there's no reason to set up the development environment like described below, simply download the appropriate release for your platform from the releases page and you're good to go!

Development

If you're on Linux, Windows or Mac, then setting up should be easy! Simply run the appropriate setup script and it will guide you through the whole process.

Linux

Make ./setup.sh executable ... (or run it with an appropriate interpreter) ...

chmod 755 ./setup.sh

... execute it: ./setup.sh ... and have fun with python figaro.py!

Mac

The same as the Linux Setup, just use ./setup-mac.sh instead of ./setup.sh.

Windows

First, in order to allow the setup powershell script to run, you need to execute the following command in an administrator powershell:

Set-ExecutionPolicy RemoteSigned

... afterwards, executing .\setup.ps1 will guide you through the whole setup process! You can now execute python figaro.py.

Manual Setup

First of all, for Figaro to be able to work with audio files other than wav, you need to download and install ffmpeg (see References for the link to the official download page).

  • Linux: pip install -r requirements-unix.txt
  • Mac: pip install -r requirements-unix.txt
  • Windows: pip install -r requirements-windows.txt

... if you're on Windows and you get an error when installing PyAudio try downloading a PIP wheel suitable for your Python version from the link provided in References.

If everything works out, you're good to go!

Advanced setup

The following steps will explain how to use this program with the commonly used voice-chat application Discord on Windows:

  1. Download and install a virtual audio input device (if you don't know any specific one, try the one mentioned in References).
  2. When selecting an output device at the startup of Figaro, choose the virtual input device you just installed (e.g.: CABLE Input).
  3. In Discord, go to User Settings > Voice & Video > Input Device and select the virtual input device from the dropdown (e.g.: CABLE Output).
  4. There you go, your friends should only be able to hear your filtered voice now.

Usage

CLI

CLI-Usage is explained here.

GUI

GUI-Usage is explained here.

Figaro-Script

You can now also use figaro script (.fig) for defining hotkeys and their behaviour. Whether you want a sound effect to be played, or an attribute to be shown, it can all be bound to a certain keypress.

General Syntax

Figaro-Script was heavily inspired by AutoHotkey, so, if you are capable of defining hotkeys and their functionality with ahk-script, think of this as a very, very simplified version of that.

But, if you aren't aware of ahk, let me introduce you to the basic syntax very quickly:

Your script, the .fig file, consists of multiple hotkey-definition blocks which tell Figaro which key combinations should result in what behaviour. Apart from that, you can also have comments, to make your script more readable and easier to understand for a future you.

Defining a Hotkey

In order to define which keys make up your hotkey, you just need to write all of them in one line and end it with ::. After this first line, you write all your commands and end the definition block with return. This could look something like the following:

...

q::
start sound tmp/asdf.mp3 2
return

...

... this hotkey would be triggered every time the q is pressed.

Certain control keys need alternative symbols (this is equalivalent to ahk-script):

  • alt is represented by !
  • ctrl is represented by ^
  • shift is represented by +

... keep in mind that the definition of hotkeys is usually case insensitive, which means in order to, for example, only trigger the hotkey on an uppercase Q, you would need to use +q:: as your definition.

Comments

This is fairly easy to explain. If you have ever used a popular programming language such as C, C++, Java, etc. you already know how to use comments. The only thing to bear in mind is that so far, I have only implemented single-line comments.

For people who have never used such a programming language before, this is the correct syntax for comments in Figaro-Script:

...

// triggered by pressing `lower-case q`
// will play the mp3 file "tmp/asdf.mp3" at 200% of the original volume ...
q::
start sound tmp/asdf.mp3 2
return

...

Builtins

Despite the CLI commands, certain builtin functions are also available to you (at the moment there aren't many, but I will at more should the need to do so arise):

Pause

You can use this command in order play a sound effect, or do anything else for that matter, after waiting for a given amount of milliseconds. E.g.:

...
start sound tmp/1.mp3
pause 3000
start sound tmp/2.mp3
...

... this would play the sound effect tmp/1.mp3, wait for 3 seconds and then play the next sound effect tmp/2.mp3.

More docs coming soon! Disclaimer: Some of the commands described above might still be removed or altered...

Roadmap

Just a small preview of what is about to come. It's very likely that this roadmap will continue to grow in the future, as I get more ideas or if somebody wants to contribute.

  • CLI
    • I/O device selection
    • Live status (live audio graph in console)
    • Filter control
    • Sound effects (soundboard-like abilities)
  • GUI
    • I/O device selection
    • Live sound wave graph
    • Filter control
    • Soundboard
      • Functionality
      • Advanced features
  • Filters
    • Volume
    • Pitch-Shift
    • "Trippy"-Filter
    • Echo
    • Noise
    • Crackle
    • Randomized
  • Figaro-Script
    • Using CLI commands
    • Hotkeys
    • Advanced builtins
  • Security
    • Remote Authentication
    • Encrypted sockets
    • Fine-grained settings

References

  • Windows Virtual Sound I/O ... vb-audio
  • PyAudio Windows Wheel ... uci
  • FFmpeg download ... ffmpeg.org
  • JWT minimum secret length ... RFC 7518
  • JWT recommended secret length ... Auth0

... MattMoony (June 2021)

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].