xi_arma

pirs

Apr 16th, 2025
14
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.47 KB | None | 0 0
  1. import customtkinter as ctk
  2. import tkinter as tk
  3. from tkinter import messagebox as mbox
  4. from PIL import Image, ImageDraw, ImageFont, ImageTk
  5. import speech_recognition as sr
  6. import socket
  7.  
  8. # === SETUP ===
  9. ctk.set_appearance_mode("light")
  10. root = ctk.CTk()
  11. root.title("Voice to Image")
  12. root.geometry("500x450")
  13. root.configure(bg="white")
  14.  
  15. PINK = "#ff69b4"
  16. WHITE = "#ffffff"
  17.  
  18. # === INTERNET CHECK ===
  19. def check_internet():
  20. try:
  21. socket.create_connection(("www.google.com", 80))
  22. return True
  23. except OSError:
  24. return False
  25.  
  26. # === SPEECH TO TEXT FUNCTION ===
  27. def recognize_speech():
  28. recognizer = sr.Recognizer()
  29. # List available microphones for debugging
  30. print("Available microphones:")
  31. for i, mic in enumerate(sr.Microphone.list_microphone_names()):
  32. print(f"{i}: {mic}")
  33.  
  34. if not check_internet():
  35. mbox.showerror("Error", "No internet connection.")
  36. return
  37.  
  38. try:
  39. with sr.Microphone(device_index=1) as source: # Add device_index if needed, e.g., device_index=1
  40. mbox.showinfo("Recording", "Adjusting for ambient noise... Please wait.")
  41. recognizer.adjust_for_ambient_noise(source, duration=3)
  42. mbox.showinfo("Recording", "Speak now...")
  43. audio = recognizer.listen(source, timeout=10, phrase_time_limit=5)
  44. text = recognizer.recognize_google(audio)
  45. textbox.delete("1.0", "end")
  46. textbox.insert("1.0", text)
  47. mbox.showinfo("Success", "Text inserted into box.")
  48. except sr.UnknownValueError:
  49. mbox.showerror("Error", "Could not understand audio.")
  50. except sr.RequestError as e:
  51. mbox.showerror("Error", f"API error: {str(e)}")
  52. except sr.WaitTimeoutError:
  53. mbox.showerror("Error", "No speech detected in time.")
  54. except Exception as e:
  55. mbox.showerror("Error", f"Unexpected error: {str(e)}")
  56.  
  57. # === TEXT TO IMAGE FUNCTION ===
  58. def generate_image():
  59. text = textbox.get("1.0", "end").strip()
  60. if not text:
  61. mbox.showwarning("Warning", "Textbox is empty.")
  62. return
  63.  
  64. width, height = 800, 400
  65. image = Image.new("RGB", (width, height), WHITE)
  66. draw = ImageDraw.Draw(image)
  67.  
  68. try:
  69. font = ImageFont.truetype("arial.ttf", 24)
  70. except:
  71. font = ImageFont.load_default()
  72.  
  73. margin = 40
  74. draw.text((margin, margin), text, fill=PINK, font=font)
  75.  
  76. image_path = "text_image.png"
  77. image.save(image_path)
  78. show_image_preview(image)
  79.  
  80. # === IMAGE PREVIEW ===
  81. def show_image_preview(image):
  82. preview_win = tk.Toplevel(root)
  83. preview_win.title("Image Preview")
  84. preview_win.configure(bg="white")
  85.  
  86. display_image = image.copy()
  87. display_image.thumbnail((600, 400))
  88. tk_image = ImageTk.PhotoImage(display_image)
  89.  
  90. label = tk.Label(preview_win, image=tk_image, bg="white")
  91. label.image = tk_image
  92. label.pack(padx=10, pady=10)
  93.  
  94. # === WIDGETS ===
  95. textbox = ctk.CTkTextbox(root, height=200, width=460, fg_color=WHITE, text_color="black", border_color=PINK, border_width=2)
  96. textbox.pack(pady=20)
  97.  
  98. record_button = ctk.CTkButton(root, text="🎙️ Record Voice", command=recognize_speech, fg_color=PINK, hover_color="#ff85c1", text_color="white")
  99. record_button.pack(pady=5)
  100.  
  101. generate_button = ctk.CTkButton(root, text="Generate Image", command=generate_image, fg_color=PINK, hover_color="#ff85c1", text_color="white")
  102. generate_button.pack(pady=10)
  103.  
  104. # === RUN ===
  105. root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment