130 lines
3.4 KiB
Markdown
130 lines
3.4 KiB
Markdown
# mp3Transriber
|
|
|
|
`mp3Transriber` is a desktop app for managing MP3 recordings from a pocket recorder, viewing their metadata, and generating transcriptions.
|
|
|
|
The project is being designed with **privacy first** in mind:
|
|
|
|
- **Local transcription is the default**
|
|
- **MP3 files and transcripts stay on the user's machine by default**
|
|
- **Cloud AI providers may be supported later as an explicit opt-in choice**
|
|
|
|
## Goals
|
|
|
|
- Import and manage MP3 recordings from a handheld or pocket recorder
|
|
- Read and display MP3 metadata
|
|
- Transcribe recordings to text
|
|
- Store transcripts inside the app
|
|
- Use a local `SQLite` database
|
|
- Run on **Linux** and **macOS**
|
|
- Be easy to start and use after download
|
|
|
|
## Planned Product Direction
|
|
|
|
The current plan is to build this as a **Tauri** desktop application with a small web UI and a Rust backend.
|
|
|
|
Core design points:
|
|
|
|
- Desktop-first app for Linux and macOS
|
|
- Local file import and local storage
|
|
- Local transcription engine by default
|
|
- Optional cloud provider support only when the user enables it
|
|
|
|
## Privacy Model
|
|
|
|
Privacy is a core requirement for this project because recordings may contain confidential information.
|
|
|
|
### Default behavior
|
|
|
|
By default, the app will:
|
|
|
|
- keep recordings on the local machine
|
|
- transcribe audio locally
|
|
- store transcript text locally in SQLite
|
|
- avoid sending audio or transcript text to the internet
|
|
|
|
### Optional cloud mode
|
|
|
|
The app may later support cloud transcription providers, but only under these conditions:
|
|
|
|
- cloud mode is **off by default**
|
|
- the user must explicitly enable it
|
|
- the user must configure their own provider credentials
|
|
- the UI must clearly warn that audio and transcript data may leave the machine
|
|
|
|
## Planned Tech Stack
|
|
|
|
This is the current working stack proposal:
|
|
|
|
- **Desktop shell:** Tauri
|
|
- **Frontend:** React + TypeScript
|
|
- **Backend orchestration:** Rust
|
|
- **Database:** SQLite
|
|
- **Metadata extraction:** local MP3 tag reader library
|
|
- **Local transcription:** `whisper.cpp` or another fully local ASR engine
|
|
- **Audio conversion:** `ffmpeg` when needed for transcription preprocessing
|
|
|
|
## Expected Features
|
|
|
|
### Recording management
|
|
|
|
- Import MP3 files from disk
|
|
- Keep a list of recordings inside the app
|
|
- Prevent duplicate imports where practical
|
|
|
|
### Metadata viewer
|
|
|
|
- Show common MP3 metadata fields such as:
|
|
- title
|
|
- artist
|
|
- album
|
|
- date
|
|
- duration
|
|
- bitrate
|
|
- file name and path
|
|
|
|
### Transcription
|
|
|
|
- Start transcription from the app UI
|
|
- Save the resulting text to the local database
|
|
- Re-open saved transcripts later
|
|
- Support local-only transcription as the primary mode
|
|
|
|
## Project Status
|
|
|
|
This repository is currently in the planning and scaffolding stage.
|
|
|
|
What exists so far:
|
|
|
|
- initial project notes in `todo.txt`
|
|
- an implementation plan for a privacy-focused desktop app
|
|
|
|
What is expected next:
|
|
|
|
- scaffold the Tauri app
|
|
- define the SQLite schema
|
|
- implement MP3 import and metadata extraction
|
|
- integrate local transcription
|
|
- add a basic user interface
|
|
|
|
## Non-Goals for the First Version
|
|
|
|
To keep the first version focused, these are likely out of scope initially:
|
|
|
|
- real-time live microphone dictation
|
|
- syncing files across devices
|
|
- automatic cloud backup
|
|
- multi-user collaboration
|
|
|
|
## Development Notes
|
|
|
|
The first implementation will prioritize:
|
|
|
|
1. local-first behavior
|
|
2. simple setup on Linux and macOS
|
|
3. a clear and minimal UI
|
|
4. auditable privacy behavior
|
|
|
|
## License
|
|
|
|
License not chosen yet.
|