One-click AI denoising for short-form video: make voices pop and cut background noise—free in the browser.
Traditional Chinese README: README.zh.md
Try the live demo · 简体中文 / 繁體說明
Great audio keeps people watching Reels, TikTok, and YouTube Shorts. Many creators hit the same limits:
- Environmental noise — traffic, crowds, wind
- Gear / room noise — AC hum, laptop fans
- Budget — no pro mic yet
ClearVoice AI uses DeepFilterNet3 to reduce non-speech noise while keeping voices clear—upload an .mp4 in the browser, no desktop app install.
- One click — drag & drop
.mp4, processing in the cloud - DeepFilterNet3 — perceptual speech enhancement tuned for clarity
- Privacy-minded — stateless flow; temp uploads are cleaned up after response
- Minimal UI — Next.js-inspired dark layout, focused workflow
Modern split stack: Next.js frontend (Vercel) talks directly to FastAPI backend (Docker on Hugging Face Spaces).
Browser ──(FormData POST)──► Next.js 14 (Vercel)
│
NEXT_PUBLIC_API_URL
│
▼
FastAPI (HF Spaces :7860)
├─ ffmpeg: extract / resample audio (48 kHz mono)
├─ DeepFilterNet3: neural denoise
└─ ffmpeg: mux cleaned audio → output MP4
aiNoiseFilter/
├── README.md # English (default for GitHub)
├── README.zh.md # Traditional Chinese
├── backend/
│ ├── app.py # POST /api/denoise
│ ├── requirements.txt # pinned Python deps
│ └── Dockerfile # ffmpeg + Python runtime (+ git where needed)
└── frontend/
├── package.json
├── next.config.mjs
├── .env.local.example
├── public/
│ └── og-image.png # Open Graph preview (replace with branded art)
└── app/
├── layout.tsx # fonts + SEO metadata
├── page.tsx # main UI (client-side)
├── robots.ts
├── sitemap.ts
└── components/
- macOS / Linux / Windows (WSL2 recommended on Windows)
- Python 3.11+
- Node.js 18+
- FFmpeg
- macOS:
brew install ffmpeg - Ubuntu/Debian:
sudo apt install ffmpeg
- macOS:
cd backend
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# Match torchaudio 2.2.x — newer releases can break DeepFilterNet imports
pip install torch==2.2.2 torchaudio==2.2.2 deepfilternet==0.5.6 fastapi uvicorn python-multipart
uvicorn app:app --reload --port 7860cd frontend
cp .env.local.example .env.local
# Edit .env.local: NEXT_PUBLIC_API_URL (backend) + NEXT_PUBLIC_SITE_URL (canonical site URL for SEO)
npm install
npm run dev- Create a Space with SDK Docker.
- Push the contents of
backend/to the Space repo. - Cold starts on the free tier can take ~30–60s; first inference may download model weights (~200 MB).
- Import this GitHub repository.
- Set Root Directory to
frontend. - Add environment variables:
Name Example NEXT_PUBLIC_API_URLhttps://<your-space>.hf.spaceNEXT_PUBLIC_SITE_URLhttps://clear-voice-ai.vercel.app
Rebuild after changing env vars so Open Graph URLs resolve correctly.
- Set
NEXT_PUBLIC_SITE_URLon Vercel to your production URL. - Replace
frontend/public/og-image.pngwith a 1200×630 branded image. - Submit the site URL in Google Search Console after deploy.
torchaudio==2.2.2— DeepFilterNet relies on APIs removed in newer torchaudio; pin versions perbackend/requirements.txt.- 48 kHz mono — ffmpeg normalizes audio before inference (DeepFilterNet’s sweet spot).
- Docker
git— some DeepFilterNet logging paths assume a git repo; installinggitin the image avoids noisy failures.
- Model / research: DeepFilterNet by Rikorose (see upstream license for redistribution / commercial terms).
- This repository: MIT.