A speech-to-text bot for Discord written in NodeJS. Can be useful for hearing impaired and deaf people.
Try the bot for yourself on our Discord server: https://discord.gg/ApdTMG9
You can follow the steps below to get this bot up and running.
If you don't have a linux server/machine then you can use Heroku for hosting your bot 24/7 and it's free. I wrote an easy step-by-step guide here.
If you prefer using Docker instead of manually installing it:
- Save the
Dockerfile
- Create a file
settings.json
and configure it (see Settings part) - run
docker build -t discordearsbot .
this may take a minute or two. - run
docker run -it discordearsbot
- skip to Usage part.
You need nodeJS version 12+ with npm on your machine.
sudo apt-get install -y sox screen
git clone https://github.com/healzer/DiscordEarsBot.git
cd DiscordEarsBot
npm install
Tutorial: https://www.youtube.com/watch?v=uD_Neq9DYn0
You need nodeJS version 12+ with npm on your machine.
Download and install the latest version of "sox" for Windows: https://sourceforge.net/projects/sox/files/sox/
You may need to manually add sox to your environment variables, here's a tutorial: https://stackoverflow.com/questions/17667491/how-to-use-sox-in-windows
Using shell or command prompt execute the following:
git clone https://github.com/healzer/DiscordEarsBot.git
cd DiscordEarsBot
npm install
Create a (free) discord bot and obtain the API credentials (Bot Token). Here's an easy tutorial: https://www.writebots.com/discord-bot-token/ Note: Give your bot enough permissions or simply grant it Administrator rights.
Create a (free) WitAI account and obtain the API credentials (Server Access Token): https://wit.ai/
Rename the file settings-sample.json
to settings.json
and enter the obtained API credentials:
{
"discord_token": "your_token",
"wit_ai_token": "your_token"
}
Execute the following in your shell or prompt:
node index.js
Linux users can start background process as such:
./restart.sh # this (re)starts a new background screen session of the bot, closing your terminal will keep the process running.
./close.sh # this closes the background screen session.
By now you have a discord server, the DiscordEarsBot is running and is a part of your server. Make sure your server has a text and voice channel.
- Enter one of your voice channels.
- In one of your text channels type:
*join
, the bot will join the voice channel. - Everything said within that channel will be transcribed into text (as long as the bot is within the voice channel).
- Type
*leave
to make the bot leave the voice channel. - Type
*help
for a list of commands.
- When the bot is inside a voice channel it listens to all speech and transcribes audio into text.
- Each user is a separate audio channel, the bot hears everyone separately.
- Only when your user picture turns green in the voice channel will the bot receive your audio.
- A long pause interrupts the audio input.
- (WitAI only) The duration of a single audio input is limited to 20 seconds, longer audio is not transcribed.
WitAI supports over 120 languages (https://wit.ai/faq), however only one language can be used at a time. If you're not speaking English on Discord, then change your default language on your witAI account:
Using Mozilla DeepSpeech for speech recognition, tutorial.
By default WitAI's free API is used for voice recognition / transcription. But you can easily integrate any other API into the bot. You can use Google's Speech-to-Text API as follows:
- Open
index.js
, inside the functiontranscribe(file)
make sure thattranscribe_gspeech
is being used and the other one(s) are disabled. - You may want to adjust the
languageCode
value if you're speaking a non-English language. - Enable Google Speech API here: https://console.cloud.google.com/apis/library/speech.googleapis.com
- Create a new Service Account (or use your existing one): https://console.cloud.google.com/apis/credentials
- Create a new Service Account Key (or use existing) and download the json file.
- Put the json file inside your bot directory and rename it to
gspeech_key.json
.
For enquiries or issues get in touch with me:
Name: Ilya Nevolin
Email: [email protected]
Discord: https://discord.gg/ApdTMG9