0% found this document useful (0 votes)
24 views4 pages

Voice Recognition Word Game

PROMO SPESIAL UNTUKMU! Dapatkan promo paket Happy 30GB + Ekstra Nelpon 30 hari Cuma 80rb! Hanya di bima+ & kesempatan terbatas, klik skrg: bit.ly/hp30gb30dsms

Uploaded by

Ahmad Muafiq
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
24 views4 pages

Voice Recognition Word Game

PROMO SPESIAL UNTUKMU! Dapatkan promo paket Happy 30GB + Ekstra Nelpon 30 hari Cuma 80rb! Hanya di bima+ & kesempatan terbatas, klik skrg: bit.ly/hp30gb30dsms

Uploaded by

Ahmad Muafiq
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

import random

import time

import speech_recognition as sr

def recognize_speech_from_mic(recognizer, microphone):


"""Transcribe speech from recorded from `microphone`.

Returns a dictionary with three keys:


"success": a boolean indicating whether or not the API request was
successful
"error": `None` if no error occured, otherwise a string containing
an error message if the API could not be reached or
speech was unrecognizable
"transcription": `None` if speech could not be transcribed,
otherwise a string containing the transcribed text
"""
# check that recognizer and microphone arguments are appropriate type
if not isinstance(recognizer, sr.Recognizer):
raise TypeError("`recognizer` must be `Recognizer` instance")

if not isinstance(microphone, sr.Microphone):


raise TypeError("`microphone` must be `Microphone` instance")

# adjust the recognizer sensitivity to ambient noise and record audio


# from the microphone
with microphone as source:
recognizer.adjust_for_ambient_noise(source)
audio = recognizer.listen(source)

# set up the response object


response = {
"success": True,
"error": None,
"transcription": None
}

# try recognizing the speech in the recording


# if a RequestError or UnknownValueError exception is caught,
# update the response object accordingly
try:
response["transcription"] = recognizer.recognize_google(audio)
except sr.RequestError:
# API was unreachable or unresponsive
response["success"] = False
response["error"] = "API unavailable"
except sr.UnknownValueError:
# speech was unintelligible
response["error"] = "Unable to recognize speech"

return response

if __name__ == "__main__":
# set the list of words, maxnumber of guesses, and prompt limit
WORDS = ["apple", "banana", "grape", "orange", "mango", "lemon"]
NUM_GUESSES = 3
PROMPT_LIMIT = 5

# create recognizer and mic instances


recognizer = sr.Recognizer()
microphone = sr.Microphone()

# get a random word from the list


word = random.choice(WORDS)

# format the instructions string


instructions = (
"I'm thinking of one of these words:\n"
"{words}\n"
"You have {n} tries to guess which one.\n"
).format(words=', '.join(WORDS), n=NUM_GUESSES)

# show instructions and wait 3 seconds before starting the game


print(instructions)
time.sleep(3)

for i in range(NUM_GUESSES):
# get the guess from the user
# if a transcription is returned, break out of the loop and
# continue
# if no transcription returned and API request failed, break
# loop and continue
# if API request succeeded but no transcription was returned,
# re-prompt the user to say their guess again. Do this up
# to PROMPT_LIMIT times
for j in range(PROMPT_LIMIT):
print('Guess {}. Speak!'.format(i+1))
guess = recognize_speech_from_mic(recognizer, microphone)
if guess["transcription"]:
break
if not guess["success"]:
break
print("I didn't catch that. What did you say?\n")

# if there was an error, stop the game


if guess["error"]:
print("ERROR: {}".format(guess["error"]))
break

# show the user the transcription


print("You said: {}".format(guess["transcription"]))

# determine if guess is correct and if any attempts remain


guess_is_correct = guess["transcription"].lower() == word.lower()
user_has_more_attempts = i < NUM_GUESSES - 1
# determine if the user has won the game
# if not, repeat the loop if user has more attempts
# if no attempts left, the user loses the game
if guess_is_correct:
print("Correct! You win!".format(word))
break
elif user_has_more_attempts:
print("Incorrect. Try again.\n")
else:
print("Sorry, you lose!\nI was thinking of '{}'.".format(word))
break

You might also like