Skip to content

Spixz/LyreAudio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

52 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

LyreAudio

Available at lyreaudio.com

LyreAudio is a cross-platform application (Web, iOS, Android, macOS, and Windows) that converts web articles into audio. By providing an article URL, the application automatically retrieves its content and transforms it into speech.

Watch the demo

Features

  • ๐Ÿ” Conversion of web articles to audio (delete โ€œRead moreโ€, ...)
  • โ–ถ๏ธ Playlist-style playback: listen to your articles one after another, hands-free
  • ๐Ÿ—ฃ๏ธ Dynamic voice rendering: the voice changes for quotes and titles
  • ๐ŸŽซ Optional guest (anonymous) usage
  • ๐Ÿ“Š User behavior tracking

Installation

1. Create a Supabase project and configure the database

  • In the back/supabase directory, there are two SQL files: bucket.sql and tables.sql. Use these to create the required tables and storage bucket.

2. Define environment variables

  • In the front/flutter_project/env.dev (used when running in debug mode) and front/flutter_project/env.prod (used when building with the --release flag) files, set the following:
LYRE_V4_NODE_SERVER_URL='http://127.0.0.1:6063';
MIXPANEL_TOKEN=''; //optional
MIXPANEL_PROXY_URL=''; //optional
SUPABASE_URL='';
SUPABASE_ANON_KEY='';

3. Configure Docker for the Node.js and Python services

  • In back/docker-compose.yml, provide the environment variables for the node-server service.

4. Start the services

cd back
docker-compose up --build

5. Run the Flutter application

# In another terminal
cd front/flutter_project
flutter run

Project Architecture

1. Front-end (Flutter) โ€” front/flutter_project/

  • Connects to Supabase to manage user authentication and database access.
  • Communicates with the Node.js API to add articles and trigger audio generation or transcription.

2. Node.js Back-end โ€” back/node-server/

  • Receives article URLs and calls the Python API to extract article content.
  • Processes the article using a prompt with Gemini: it removes unnecessary elements such as newsletter prompts, "read later" sections, and similar unrelated content. It also detects and extracts quotes.
  • The same prompt transforms the cleaned text into SSML (Speech Synthesis Markup Language), which is then sent to Azure's TTS service.
  • The resulting audio is retrieved and uploaded to a Supabase bucket.

3. Python API (XML Extractor) โ€” back/xml-extractor/

  • Uses the Trafilatura library to extract article content in XML format.
  • Passes the retrieved content to the Node.js service for processing.

4. Supabase โ€” back/supabase/

  • Stores user accounts, articles, and audio files.
  • Manages authentication and resource access.

License

This project is licensed under PolyForm Noncommercial License 1.0.0

About

๐ŸŽง Convert web articles into dynamic audio

Resources

License

Stars

Watchers

Forks

Packages

No packages published