iArt.ai
AI 모션 그래픽 소프트웨어, 누구나 사용할 수 있는 After Effects 대안, 텍스트 프롬프트로 몇 분 안에 애니메이션·설명 영상 제작
Word-by-word synced lyrics over the music video of what you play. Windows + Android. Free, open source, no account.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗| Platform | How |
|---|---|
| Windows 10/11 | Download Lyra-Setup-x.y.z.exe from the latest release, or winget install DhruvHarani1.Lyra once it is listed. Windows may show a SmartScreen notice because the app is not code-signed yet: choose More info → Run anyway. |
| Android 8+ | Download Lyra-Android-x.y.z.apk from the Android releases and open it. Grant Notification access so Lyra can see what is playing. F-Droid / IzzyOnDroid listings are being prepared. |
Lyra reads the Spotify desktop app on Windows (through Windows media controls) and any media app on Android. Lyrics come from the free LRCLIB database.
Star the repo, tell a friend, or open an issue. Good first issues are labelled. Translations, new lyric sources and bug reports are all welcome: see CONTRIBUTING.md.
Requirements: Node 20+, the Spotify desktop app (not the web player).
npm install
node node_modules/electron/install.js # only if you get "Electron uninstall"
npm run dev # development
npm test # LRC parser tests
npm run typecheck
npm run build && npm start # production build preview
npm run dist # Windows NSIS installer in ./release
npm run dist:local # same, but works around antivirus EPERM rename failures
Play a song in Spotify — the widget shows it. Click the widget to expand; fullscreen button (or F) for immersive lyrics. No Spotify handy? Settings → Music source → Demo.
| Source | Needs | Gives | Missing |
|---|---|---|---|
| Windows (default) | Spotify desktop app | title, artist, album, artwork, position, play/pause/next/previous/seek, system volume, release year (MusicBrainz), Lyra-local favorites ♥ | queue, shuffle/repeat (buttons hidden), syncing likes to Spotify |
| Spotify API (optional) | your own Spotify Developer app (Client ID) | everything above + volume, queue, likes, devices | Premium for any control; Dev Mode needs a Premium app owner and your account under User Management |
| Demo | nothing | simulated playback with sample lyrics | — |
How the default works: a tiny native helper (resources/lyra-media.exe, ~14 KB, C#) subscribes to the Windows System Media Transport Controls events and streams JSON to the app (src/main/smtc, native/lyra-media). It is event-driven (≈0% CPU idle) and only follows a session whose app id contains "Spotify". Rebuild it with npm run build:helper (needs the Windows SDK; the built exe is committed). If the exe is missing the app falls back to a PowerShell bridge. Volume (opt-in: Settings → System → Control system volume) is the Windows master volume via Core Audio. Release year is looked up once per song on MusicBrainz and cached. Favorites are stored locally in favorites.json.
http://127.0.0.1:53682/callbackSPOTIFY_CLIENT_ID in .env (see .env.example).Tokens are encrypted with Windows DPAPI (safeStorage); passwords are never seen. The API source polls (3 s playing / 6 s paused / 5–15 s idle, honours Retry-After).
LRCLIB (free, keyless, timestamped LRC; descriptive User-Agent; no scraping). Line-synced; word-level timing is supported by the engine (enhanced LRC) but LRCLIB rarely has it — the demo shows it. Results are cached on disk. Plain-only lyrics are shown unsynced, with a notice. Use the −/+ footer (or [ ]) to nudge sync. Providers are pluggable: implement LyricsProvider in src/main/lyrics/provider.ts, add it to the chain in service.ts.
Spotify's own looping "Canvas" videos have no public API, so Lyra offers three legitimate sources, all optional (Settings → Background, one on/off switch):
Auto order: your per-song file → your global file → a free 30 s Apple music-video preview when one exists → YouTube (only if you added a key) → living artwork. Videos pause while the window is hidden or reduce-motion is on.
Lyra also runs on Android (8.0+). It is the same UI and the same shared core (src/core), inside a small Kotlin shell (android/).
Lyra-Android-<version>.apk from the Releases page (look for tags named android-v…) and open it. Android will ask you to allow installs from your browser or file manager the first time.adb install Lyra-Android-<version>.apk.npm ci
npm run build:android-ui # builds the web UI into android/app/src/main/assets/ui
cd android && ./gradlew assembleDebug
Release APKs are built and signed by the GitHub workflow when a tag like is pushed (secrets: , , , ). Without those secrets (a fork) it signs with the debug key instead.src/shared types, IPC contract, LRC parser (+tests), shortcut list
src/main window (modes, tween, drag, monitors) · tray · shortcuts · settings
smtc/ (Windows media bridge) · spotify/ (PKCE API) · lyrics/ · demo/ · artwork · ipc
src/preload typed contextBridge API
src/renderer store/ · hooks/ · components/ · styles/
Global: Ctrl+Alt+Space play/pause · Ctrl+Alt+←/→ prev/next · Ctrl+Alt+L expand · Ctrl+Alt+F fullscreen · Ctrl+Alt+H show/hide.
In-app: Space, ←/→ seek, Shift+←/→ tracks, ↑/↓ volume (API source), F, Esc, D (distraction-free), [ ] lyric offset.
Free replacements for the account-free gaps (see issues), configurable shortcuts, installer icon + autostart polish, history dashboard, audio-reactive visualiser, lyric translation, moments export.
MIT licensed (LICENSE). See PRIVACY.md for exactly what leaves your PC and THIRD_PARTY.md for credits. Lyra is not affiliated with Spotify; Spotify is a trademark of Spotify AB.
android-v0.1.0ANDROID_KEYSTORE_BASE64ANDROID_KEYSTORE_PASSWORDANDROID_KEY_ALIASANDROID_KEY_PASSWORDsrc/android-web implements window.lyra for the phone (the same interface the Windows app uses); android/app/src/main/java/dev/lyra/android has the media-session reader, the origin-restricted bridge (Rpc.kt), the floating widget and the Keystore storage. Contributions welcome.