Spaces:
Sleeping
Sleeping
| import speech_recognition as sr # type: ignore | |
| import os | |
| import pygame # type: ignore | |
| from gtts import gTTS # type: ignore | |
| from pydub import AudioSegment | |
| from pydub.playback import play | |
| # Dog sound files (Ensure these files exist) | |
| dog_sounds = { | |
| "sit": r'C:\Users\User\Downloads\dog_sit.mp3', | |
| "come": r'C:\Users\User\Downloads\dog_come.mp3', | |
| "fetch": r'C:\Users\User\Downloads\dog_fetch.mp3', | |
| "treat": r'C:\Users\User\Downloads\dog_treat.mp3', | |
| "play": r'C:\Users\User\Downloads\dog_play.mp3', | |
| "bark": r'C:\Users\User\Downloads\dog_bark.mp3' | |
| } | |
| # Initialize speech recognizer | |
| recognizer = sr.Recognizer() | |
| # Initialize pygame mixer | |
| pygame.mixer.init() | |
| def recognize_speech(): | |
| """Recognizes speech from the microphone input.""" | |
| with sr.Microphone() as source: | |
| print("Listening for command...") | |
| try: | |
| audio = recognizer.listen(source, timeout=5) | |
| command = recognizer.recognize_google(audio) | |
| print(f"Human said: {command}") | |
| return command.lower() | |
| except sr.UnknownValueError: | |
| print("Sorry, I could not understand your speech.") | |
| return None | |
| except sr.RequestError: | |
| print("Sorry, the speech service is unavailable.") | |
| return None | |
| except sr.WaitTimeoutError: | |
| print("No speech detected. Please try again.") | |
| return None | |
| def dog_response(command): | |
| """Plays the corresponding dog sound based on the recognized command.""" | |
| if command: | |
| # Check if command matches known keywords | |
| for key in dog_sounds: | |
| if key in command: | |
| play_dog_sound(dog_sounds[key]) | |
| return | |
| # Default to bark sound if command is unknown | |
| print("No specific dog command recognized. Playing default bark sound.") | |
| play_dog_sound(dog_sounds["bark"]) | |
| else: | |
| print("No command to process.") | |
| def play_dog_sound(sound_file): | |
| """Plays an audio file using Pygame.""" | |
| if os.path.exists(sound_file): | |
| pygame.mixer.music.load(sound_file) | |
| pygame.mixer.music.play() | |
| while pygame.mixer.music.get_busy(): # Wait until sound finishes playing | |
| continue | |
| else: | |
| print(f"Error: Sound file '{sound_file}' not found.") | |
| def make_dog_response(text): | |
| """Generates a playful dog response using text-to-speech.""" | |
| try: | |
| tts = gTTS(text=text, lang='en') | |
| response_file = "dog_response.mp3" | |
| tts.save(response_file) | |
| pygame.mixer.music.load(response_file) | |
| pygame.mixer.music.play() | |
| while pygame.mixer.music.get_busy(): | |
| continue | |
| os.remove(response_file) # Clean up the temporary file | |
| except Exception as e: | |
| print(f"Error generating speech: {e}") | |
| def main(): | |
| """Main loop to listen for speech commands and respond accordingly.""" | |
| print("Say 'exit' or 'quit' to stop.") | |
| while True: | |
| command = recognize_speech() | |
| if command in ["exit", "quit"]: | |
| print("Exiting program. Goodbye!") | |
| break | |
| dog_response(command) # Process command | |
| make_dog_response(f"Woof! I heard you say {command}.") # Playful dog response | |
| if __name__ == "__main__": | |
| main() | |