db.py
import sqlite3
def init_db():
conn = sqlite3.connect("words.db")
cursor = conn.cursor()
cursor.execute('''CREATE TABLE IF NOT EXISTS dictionary (
id INTEGER PRIMARY KEY AUTOINCREMENT,
word TEXT,
language TEXT,
meaning TEXT,
synonyms TEXT,
audio_file TEXT)''')
conn.commit()
conn.close()
def add_word(word, lang, meaning, synonyms, audio_file):
conn = sqlite3.connect("words.db")
cursor = conn.cursor()
cursor.execute("INSERT INTO dictionary (word, language, meaning, synonyms, audio_file) VALUES (?, ?, ?, ?, ?)",
(word, lang, meaning, synonyms, audio_file))
conn.commit()
conn.close()
def search_word(word):
conn = sqlite3.connect("words.db")
cursor = conn.cursor()
cursor.execute("SELECT * FROM dictionary WHERE word = ?", (word,))
result = cursor.fetchone()
conn.close()
return result
tts.py
from gtts import gTTS
import os
def generate_audio(word, lang='en'):
tts = gTTS(text=word, lang=lang)
audio_file = f"audio/{word}_{lang}.mp3"
tts.save(audio_file)
return audio_file
app.py
import tkinter as tk
from db import init_db, add_word, search_word
from tts import generate_audio
import os
from playsound import playsound
init_db()
def submit_word():
word = entry_word.get()
lang = entry_lang.get()
meaning = entry_meaning.get()
synonyms = entry_synonyms.get()
audio_path = generate_audio(word, lang)
add_word(word, lang, meaning, synonyms, audio_path)
label_status.config(text="✅ Word added!")
def play_audio():
word = entry_word.get()
result = search_word(word)
if result and os.path.exists(result[5]):
playsound(result[5])
else:
label_status.config(text="❌ Audio not found.")
# GUI Setup
window = tk.Tk()
window.title("📚 Custom Dictionary Builder")
window.geometry("400x400")
entry_word = tk.Entry(window)
entry_word.insert(0, "Word")
entry_word.pack(pady=5)
entry_lang = tk.Entry(window)
entry_lang.insert(0, "Language Code (e.g., en, es)")
entry_lang.pack(pady=5)
entry_meaning = tk.Entry(window)
entry_meaning.insert(0, "Meaning")
entry_meaning.pack(pady=5)
entry_synonyms = tk.Entry(window)
entry_synonyms.insert(0, "Synonyms")
entry_synonyms.pack(pady=5)
tk.Button(window, text="Add Word", command=submit_word).pack(pady=10)
tk.Button(window, text="Play Pronunciation", command=play_audio).pack(pady=5)
label_status = tk.Label(window, text="")
label_status.pack(pady=10)
window.mainloop()
Language Codes for gTTS:
-
English:
en
-
Hindi:
hi
-
Spanish:
es
-
French:
fr
-
Malayalam:
ml
-
Tamil:
ta