2023-04-15 13:29:24 +00:00
import disnake
from disnake . ext import commands
from dotenv import load_dotenv
import os
2023-04-15 13:58:19 +00:00
from os import path
from pydub import AudioSegment
import speech_recognition as sr
2023-04-15 13:29:24 +00:00
2023-04-15 13:58:19 +00:00
st = sr . Recognizer ( )
2023-04-15 13:29:24 +00:00
load_dotenv ( )
bot = commands . Bot ( command_prefix = ' . ' )
2023-04-16 00:00:56 +00:00
def prepaudio ( audiofile ) :
oggfile = AudioSegment . from_ogg ( audiofile )
2023-04-16 00:05:19 +00:00
oggfile . export ( " audio.wav " , format = " wav " )
2023-04-16 00:00:56 +00:00
convertemessage = sr . AudioFile ( " audio.wav " )
with convertemessage as sounds :
transcribeaudo = st . record ( sounds )
return transcribeaudo
2023-04-16 16:34:58 +00:00
@bot.message_command ( name = " Transcribe Using Sphinx " )
2023-04-16 00:00:56 +00:00
async def transcribesphinx ( inter : disnake . ApplicationCommandInteraction , message : disnake . Message ) :
try :
await inter . response . defer ( ephemeral = ' true ' )
await message . attachments [ 0 ] . save ( " audio.ogg " )
2023-04-16 17:21:06 +00:00
embed = disnake . Embed ( title = st . recognize_sphinx ( prepaudio ( " audio.ogg " ) ) , color = 0x3584e4 )
embed . set_author ( name = message . author . nick , url = message . jump_url , icon_url = message . author . display_avatar )
await inter . edit_original_message ( embed = embed )
2023-04-16 00:00:56 +00:00
os . remove ( " audio.ogg " )
os . remove ( " audio.wav " )
except Exception as e :
await inter . edit_original_message ( content = f ' an error appears to have occoured please report it to the developer: { e } ' )
2023-04-16 16:34:58 +00:00
@bot.message_command ( name = " Transcribe Using Google " )
2023-04-16 00:00:56 +00:00
async def transcribesphinx ( inter : disnake . ApplicationCommandInteraction , message : disnake . Message ) :
2023-04-15 14:45:39 +00:00
try :
await inter . response . defer ( ephemeral = ' true ' )
await message . attachments [ 0 ] . save ( " audio.ogg " )
2023-04-16 00:10:35 +00:00
# WARNING Google is propritary, consider disabling however sphynix is currently not very good so this provides an option
2023-04-16 16:34:58 +00:00
embed = disnake . Embed ( title = st . recognize_google ( prepaudio ( " audio.ogg " ) ) , color = 0x3584e4 )
2023-04-16 17:21:06 +00:00
embed . set_author ( name = message . author . nick , url = message . jump_url , icon_url = message . author . display_avatar )
await inter . edit_original_message ( embed = embed , components = [ disnake . ui . Button ( label = " See more posibilites " , style = disnake . ButtonStyle . success , custom_id = " gp " ) ] )
2023-04-15 14:45:39 +00:00
os . remove ( " audio.ogg " )
os . remove ( " audio.wav " )
except Exception as e :
await inter . edit_original_message ( content = f ' an error appears to have occoured please report it to the developer: { e } ' )
2023-04-16 17:21:06 +00:00
@bot.listen ( " on_button_click " )
async def extratranscribe ( inter : disnake . MessageInteraction , message : disnake . Message ) :
if inter . component . custom_id == " gp " :
await inter . response . defer ( ephemeral = ' true ' )
await message . attachments [ 0 ] . save ( " audio.ogg " )
embed = disnake . Embed ( title = st . recognize_google ( prepaudio ( " audio.ogg " ) , show_all = True ) , color = 0x3584e4 )
embed . set_author ( name = message . author . nick , url = message . jump_url , icon_url = message . author . display_avatar )
await inter . edit_original_message ( embed = embed )
os . remove ( " audio.ogg " )
os . remove ( " audio.wav " )
2023-04-15 13:29:24 +00:00
bot . run ( os . getenv ( " TOKEN " ) )