Python Script that Speaks Word Definitions



Here, you are going to learn how to create a Python script that will be able to get a word from the user and read out its definition. Then the script calls upon the PyDictionary to determine the definition of the word or phrase that has been entered, and pyttsx3 for text to speech conversion.

This is useful for those users who learn better when listening or for those who do not have the time for reading and definitions. The script allows the user to type in a word, then retrieves the meaning of the word and vocalizes it; this greatly improves the ease with which simple dictionary searches can be done.

Installing Required Modules

1. pyttsx3

This is an offline Text-to-Speech (TTS) conversion library in Python.

You can easily install it using pip −

pip install pyttsx3

2. PyDictionary

This is a Python package for dictionary services, allowing us to retrieve the meanings, synonyms, and antonyms of words.

You can easily install it using pip −

pip install PyDictionary

Code Explanation

The code explanation along with the function created and used are as follows −

1. get_word_definition(word)

This function accepts one input parameter, which is a word, and this will return the meaning of the word from the PyDictionary object. If it has a definition, then it returns the first noun definition of the word. In case a valid definition is not identified, it gives the message "No definition found."

2. text_to_speech(text)

This function is the entry point of the TTS engine, and it synthesizes the text into speech. It employs the say() method to queue the text to be spoken and runAndWait() to execute the queue and speak out the text.

3. main()

The direct task of the script. It starts by displaying and speaking to the user to input a word, and it waits for the input from the user. On receipt of the word, it uses the get_word_definition() function to retrieve the definition of the word and then uses text_to_speech() to 'say’ the definition.

Python Code to Speaks Word Definitions

import pyttsx3
from PyDictionary import PyDictionary

def get_word_definition(word):
   dictionary = PyDictionary()
   definition = dictionary.meaning(word)
   if definition:
      return definition.get('Noun', ['No definition found'])[0]
   else:
      return 'No definition found'

def text_to_speech(text):
   engine = pyttsx3.init()
   engine.say(text)
   engine.runAndWait()

def main():
   # Provide spoken prompt
   prompt_text = "Which word do you want to find the meaning of? Please write the word and I will wait."
   text_to_speech(prompt_text)

   # Wait for user to input the word
   print(prompt_text)
   word = input("Word: ").strip()

   if word:
      definition = get_word_definition(word)
      print(f"Definition: {definition}")

      # Provide the definition in audio form
      text_to_speech(definition)
   else:
      print("No word provided.")

if __name__ == "__main__":
   main()

Output

Word Definitions

Output Summary

In this output, the first machine will speak: Which word do you want to find the meaning of? Please write the word, and I will wait."

Then you have to write the proper word, wait 20-30 seconds, and the and the machine will answer as well as print the answer.

python_projects_from_basic_to_advanced.htm
Advertisements