Explore All Our Tools
Discover our complete suite of productivity tools and features designed to help you work smarter.
Visit our tools hub for more innovative solutions and take your productivity to the next level.
import { useState } from 'react'; import { Link } from 'react-router-dom'; import { Helmet } from 'react-helmet-async'; import { useSpeechSynthesis } from '@/hooks/useSpeechSynthesis'; import { TextInput } from '@/components/tts/TextInput'; import { VoiceSelector } from '@/components/tts/VoiceSelector'; import { SpeechControls } from '@/components/tts/SpeechControls'; import { PlaybackControls } from '@/components/tts/PlaybackControls'; import { StatusIndicator } from '@/components/tts/StatusIndicator'; import { ThemeToggle } from '@/components/ThemeToggle'; import { AudioExport } from '@/components/tts/AudioExport'; import { ReadingMode } from '@/components/tts/ReadingMode'; import { Volume2, Sparkles, Zap, Shield, RotateCcw, Play, BookOpen, Wand2, ArrowRight } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { toast } from 'sonner'; import { processTextForSpeech } from '@/utils/textProcessor'; const Index = () => { const { voices, languages, selectedVoice, selectedLanguage, settings, isSupported, isSpeaking, isPaused, currentPosition, currentWordStart, currentWordEnd, setSelectedVoice, setSelectedLanguage, setSettings, speak, pause, resume, stop, storedText, setStoredText, storedPosition, } = useSpeechSynthesis(); const [readingModeOpen, setReadingModeOpen] = useState(false); const text = storedText; const setText = setStoredText; const handleSpeak = () => { if (text.trim()) { const processedText = processTextForSpeech(text); speak(processedText); } }; const handleResumeFromPosition = () => { if (text.trim() && storedPosition > 0) { const processedText = processTextForSpeech(text); speak(processedText, storedPosition); toast.success('Resuming from where you left off'); } }; const canResume = storedPosition > 0 && storedPosition < text.length && !isSpeaking; return (
Free, unlimited text-to-speech powered by your browser. No API keys, no limits, works offline.
Discover our complete suite of productivity tools and features designed to help you work smarter.
Visit our tools hub for more innovative solutions and take your productivity to the next level.