xi_arma

Untitled

Apr 14th, 2025
10
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.90 KB | None | 0 0
  1. import customtkinter as ctk
  2. import os
  3. from gtts import gTTS
  4. from pydub import AudioSegment
  5. import tempfile
  6.  
  7. # Set appearance
  8. ctk.set_appearance_mode("dark")
  9. ctk.set_default_color_theme("blue")
  10.  
  11. # Create main window
  12. root = ctk.CTk()
  13. root.title("Text to Speech")
  14. root.geometry("400x300")
  15.  
  16. # Get Windows Downloads folder path
  17. downloads_folder = os.path.join(os.path.expanduser("~"), "Downloads")
  18.  
  19. def convert_text_to_speech():
  20. text = entry.get()
  21. if not text:
  22. status_label.configure(text="Please enter some text!", text_color="red")
  23. return
  24.  
  25. try:
  26. status_label.configure(text="Processing...", text_color="yellow")
  27. root.update()
  28.  
  29. # Create temporary file for MP3
  30. with tempfile.NamedTemporaryFile(suffix=".mp3", delete=False) as temp_mp3:
  31. # Generate speech with gTTS
  32. tts = gTTS(text=text, lang='en')
  33. tts.save(temp_mp3.name)
  34.  
  35. # Convert MP3 to WAV using pydub
  36. audio = AudioSegment.from_mp3(temp_mp3.name)
  37. output_file = os.path.join(downloads_folder, "output.wav")
  38. audio.export(output_file, format="wav")
  39.  
  40. # Clean up temporary file
  41. os.unlink(temp_mp3.name)
  42.  
  43. status_label.configure(text="Saved to Downloads/output.wav", text_color="green")
  44.  
  45. except Exception as e:
  46. status_label.configure(text=f"Error: {str(e)}", text_color="red")
  47.  
  48. # Create GUI elements
  49. label = ctk.CTkLabel(root, text="Enter text to convert to speech:", font=("Arial", 14))
  50. label.pack(pady=20)
  51.  
  52. entry = ctk.CTkEntry(root, width=300, placeholder_text="Type your text here")
  53. entry.pack(pady=10)
  54.  
  55. convert_button = ctk.CTkButton(root, text="Convert to WAV", command=convert_text_to_speech)
  56. convert_button.pack(pady=20)
  57.  
  58. status_label = ctk.CTkLabel(root, text="", font=("Arial", 12))
  59. status_label.pack(pady=10)
  60.  
  61. # Start main loop
  62. root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment