44 lines
1.3 KiB
Python
44 lines
1.3 KiB
Python
import speech_recognition as sr
|
|
from pydub import AudioSegment
|
|
|
|
|
|
class VoiceRecognition:
|
|
def check_audio_format(self, file_path):
|
|
try:
|
|
audio = AudioSegment.from_ogg(file_path)
|
|
print(f"Audio format: {audio.format}")
|
|
return True
|
|
except Exception as e:
|
|
print(f"Error reading audio file: {e}")
|
|
return False
|
|
|
|
def basic_recognition(self, audio, option):
|
|
print(type(audio))
|
|
print("preparing")
|
|
r = sr.Recognizer()
|
|
|
|
# Read the data from the FileStorage object
|
|
audio_data = audio.read()
|
|
|
|
# Write the audio data to a file
|
|
with open('output.wav', 'wb') as file:
|
|
file.write(audio_data)
|
|
|
|
self.check_audio_format(audio)
|
|
if option == "online":
|
|
with sr.AudioFile(audio) as source:
|
|
print(type(source))
|
|
print("online")
|
|
text = r.recognize_google_cloud(source)
|
|
print("recognized as: " + text)
|
|
return text
|
|
elif option == "offline":
|
|
with sr.AudioFile(audio) as source:
|
|
print(type(source))
|
|
print("offline")
|
|
text = r.recognize_sphinx(source)
|
|
print("recognized as: " + text)
|
|
return text
|
|
|
|
print("nothing")
|
|
return False
|