惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - Franky
Apple Machine Learning Research
Apple Machine Learning Research
月光博客
月光博客
Vercel News
Vercel News
Recent Announcements
Recent Announcements
B
Blog RSS Feed
Y
Y Combinator Blog
M
MIT News - Artificial intelligence
MongoDB | Blog
MongoDB | Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
雷峰网
雷峰网
D
Docker
Jina AI
Jina AI
IT之家
IT之家
人人都是产品经理
人人都是产品经理
L
LangChain Blog
G
Google Developers Blog
Google DeepMind News
Google DeepMind News
MyScale Blog
MyScale Blog
博客园 - 叶小钗
The GitHub Blog
The GitHub Blog
The Cloudflare Blog
A
About on SuperTechFans
Hugging Face - Blog
Hugging Face - Blog

Hacker News - Newest: "AI"

AI can't read an investor deck AI as an attorney? Student uses ChatGPT, Gemini to sue UW over alleged racial discrimination Hacking MCP Servers in AI Systems – The Rug Pull: Tool Changes After Approval GitHub - MeepCastana/KubeezCut: Free Web based video editor GitHub - GenAI-Gurus/awesome-eu-ai-act: Curated tools, official sources, OSS, templates, and guides for EU AI Act compliance. Can AI judge journalism? A Thiel-backed startup says yes, even if it risks chilling whistleblowers Coming soon: 10 Things That Matter in AI Right Now DARPA built an AI to fact-check enemy weapons claims What explains heterogeneity in AI adoption? When AI Meets Muscle: Context-Aware Electrical Stimulation Promises a New Way to Guide Human Movements - Department of Computer Science AI Changed How We Build. It Did Not Change What Matters. Linux rules on using AI-generated code - Copilot is OK, but humans must take 'full responsibility for the… Meta spins up AI version of Mark Zuckerberg to engage with employees Code Mode: Let Your AI Write Programs, Not Just Call Tools | TanStack Blog GitHub - Delavalom/graft: Go framework for building AI agents. Type-safe tools, multi-provider (OpenAI, Anthropic, Gemini, Bedrock), zero vendor SDKs. India's TCS tops estimates, says new AI models did not dent services demand Gen Z's fading AI hype Strong feeling: we are in a folded AI reality GitHub - machinarii/total-recall-catalog: A reference catalog of latest knowledge retrieval, memory & RAG systems GitHub - mensfeld/code-on-incus: Give each AI agent its own isolated machine with root, Docker, and systemd. Active defense detects and stops threats automatically.. Quantization, LoRA, and the 8% Problem: Benchmarking Local LLMs for Production AI Iran war: We spoke to the man making Lego-style AI videos that experts say are powerful propaganda Powell, Bessent discussed Anthropic's Mythos AI cyber threat with major U.S. banks GitHub - immartian/bellamem: Persistent belief-graph memory for AI agents. Retrieves decisive context by importance — not recency, not RAG, not /compact. recursive-mode: The Repo-Native Operating System for AI Engineering After the attack on Sam Altman's home, will AI CEO's go on the offensive? The biggest advance in AI since the LLM Opus 4.6 vs GPT 5.4 One Prompt Unity World Generation Test “AI polls” are fake polls Client Challenge
GitHub - xialeistudio/echoic
2026-04-11 · via Hacker News - Newest: "AI"

AI-powered speaking practice. Import any audio, practice sentence by sentence, and get instant phoneme-level pronunciation scoring.

English · 简体中文 · 繁體中文 · 日本語 · 한국어 · Français · Deutsch


Echoic demo


Features

  • Oral Practice — AI-driven speaking drills in three modes:
    • Read Aloud — phoneme-level accuracy, fluency, and completeness scored against a reference passage
    • Situational — respond to an AI-generated scenario; LLM evaluates content, relevance, and expression
    • Monologue — speak freely on a given topic for about one minute; LLM scores and gives feedback
  • Content Gallery — Browse and import curated episodes from VOA Learning English and BBC Learning English
  • Audio Import — Upload local files or import from any direct audio URL
  • Collections — Organise audio into named collections
  • Sentence Practice — Practice each sentence with adjustable playback speed (0.5×–2×)
  • Pronunciation Scoring — Accuracy, fluency, and completeness scores with word-level breakdown
  • Phoneme Display — IPA transcription per word; phonemes colour-coded by score after assessment
  • Word Error Review — Aggregate word accuracy across all sessions to identify weak spots
  • A/B Compare — Play original then your recording back-to-back in one click
  • AI Sentence Analysis — Translation and grammar breakdown via OpenAI or local Ollama (optional)
  • Practice History — Every attempt saved with full score details; click to replay any recording
  • Sentence States — Bookmark sentences for review; mark sentences as mastered to hide them
  • Sentence Search — Filter sentences by text within any audio file
  • Practice Heatmap — 365-day activity calendar on the overview page
  • Keyboard Shortcuts — Space / R / Enter / ←→ / Esc for hands-free practice flow
  • Dark Mode — Light, dark, and system-follow themes
  • Multi-language Learning — Practice English, Japanese, Korean, French, German, Spanish, Italian, Portuguese, Russian; phoneme scoring adapts per language automatically
  • Multilingual UI — English, Simplified Chinese, Traditional Chinese, Japanese, Korean, French, German

Supported Learning Languages

Sentence Practice (audio library)

Configure a single primary language in .env:

Language ASR__WHISPERX__LANGUAGE ALIGNMENT__WAV2VEC2__LANGUAGE SCORING__PHONEME__LANGUAGE
English en en en-us
French fr fr fr-fr
German de de de
Japanese ja ja ja

Oral Practice

Language is selected per session in the UI — no .env change required. Supported: English, Japanese, Korean, French, German, Spanish, Italian, Portuguese, Russian.

Language-specific ASR and alignment models are downloaded automatically on first use (~400 MB each) and cached permanently.

Phoneme scoring uses facebook/wav2vec2-lv-60-espeak-cv-ft for all languages.

Tech Stack

Layer Technology
Frontend React 18, Vite, Tailwind CSS v4, shadcn/ui, WaveSurfer.js
Backend FastAPI, SQLAlchemy, Alembic
Database PostgreSQL 16
ASR WhisperX (faster-whisper + CTranslate2)
Alignment wav2vec2
Scoring wav2vec2 + phonemizer
LLM OpenAI API / Ollama (optional)

Quick Start (Docker)

The easiest way to run Echoic. Requires only Docker.

git clone https://github.com/xialeistudio/echoic.git
cd echoic
docker compose up

Open http://localhost:8000 in your browser.

First run: The ASR and alignment models (~1 GB) download automatically on first use and are cached in a Docker volume. Subsequent starts are instant.

Enable AI Sentence Analysis (optional)

Create a .env file in the project root before running docker compose up.

OpenAI:

LLM__BACKEND=openai
LLM__OPENAI__API_KEY=sk-...
LLM__OPENAI__MODEL=gpt-4o-mini
# Any OpenAI-compatible endpoint is supported:
# LLM__OPENAI__BASE_URL=https://api.openai.com/v1

Ollama (local, no API key):

Install Ollama and pull a model first:

Then create .env:

LLM__BACKEND=ollama
LLM__OLLAMA__BASE_URL=http://host.docker.internal:11434
LLM__OLLAMA__MODEL=qwen2.5:3b
LLM__OLLAMA__NUM_CTX=512

host.docker.internal lets the container reach Ollama on your host machine. On Linux, replace it with your host IP.


Manual Setup

Prerequisites

  • Python 3.11+, uv
  • Node.js 20+, pnpm
  • PostgreSQL 16
  • ffmpeg
  • espeak-ng

macOS (Homebrew):

brew install ffmpeg espeak-ng postgresql@16

Ubuntu / Debian:

sudo apt install ffmpeg espeak-ng postgresql

Steps

# 1. Clone
git clone https://github.com/xialeistudio/echoic.git
cd echoic

# 2. Start PostgreSQL
make db                          # starts postgres via Docker on port 5433

# 3. Backend
cd backend
uv sync
cp .env.example .env             # edit as needed
uv run alembic upgrade head
cd .. && make run                # serves on http://localhost:8000

# 4. Frontend (development only — skip for production)
make dev-frontend                # http://localhost:5173

For production, build the frontend first; it gets bundled into the backend:

make build   # outputs to backend/static/
make run     # serves API + frontend at http://localhost:8000

Environment Variables

Copy backend/.env.example to backend/.env. All variables are optional except DATABASE_URL.

Core

Variable Default Description
DATABASE_URL postgresql://echoic:echoic@localhost:5433/echoic PostgreSQL connection string
CORS_ORIGINS ["http://localhost:5173"] Allowed CORS origins (JSON array)

ASR

WhisperX uses CTranslate2, which does not support MPS (Apple Silicon GPU). Use cpu on macOS.

Variable Default Description
ASR__WHISPERX__MODEL_SIZE base tiny · base · small · medium · large-v2 — larger = more accurate, slower
ASR__WHISPERX__DEVICE cpu cpu or cuda
ASR__WHISPERX__COMPUTE_TYPE int8 int8 · float16 · float32
ASR__WHISPERX__LANGUAGE en Language code for transcription

Alignment & Scoring

These use PyTorch — MPS is supported on Apple Silicon.

Variable Default Description
ALIGNMENT__WAV2VEC2__DEVICE cpu cpu · cuda · mps
ALIGNMENT__WAV2VEC2__LANGUAGE en Language code — must match ASR__WHISPERX__LANGUAGE
SCORING__PHONEME__DEVICE cpu cpu · cuda · mps
SCORING__PHONEME__LANGUAGE en-us espeak language code (en-us · fr-fr · de · ja …)
SCORING__PHONEME__ACCURACY_WEIGHT 0.5 Weight of accuracy in the final score
SCORING__PHONEME__FLUENCY_WEIGHT 0.3 Weight of fluency
SCORING__PHONEME__COMPLETENESS_WEIGHT 0.2 Weight of completeness

Storage

Variable Default Description
STORAGE__BACKEND local local or s3
STORAGE__LOCAL_DIR storage Directory for uploaded audio and recordings
STORAGE__S3_BUCKET S3 bucket name (when STORAGE__BACKEND=s3)
STORAGE__S3_PREFIX echoic/ S3 key prefix

LLM (optional)

Required only for the "Translation & Analysis" feature.

Variable Default Description
LLM__BACKEND openai or ollama — leave unset to disable
LLM__OPENAI__API_KEY OpenAI API key
LLM__OPENAI__MODEL gpt-4o-mini Model name
LLM__OPENAI__BASE_URL https://api.openai.com/v1 Any OpenAI-compatible endpoint
LLM__OLLAMA__BASE_URL http://localhost:11434 Ollama server URL
LLM__OLLAMA__MODEL llama3 Ollama model name
LLM__OLLAMA__NUM_CTX 512 Context size (512 is enough for sentence analysis)
LLM__OLLAMA__THINK false Enable thinking mode (e.g. for qwen3)

Development

# Terminal 1 — database (port 5433, avoids conflict with a local postgres)
docker compose up db

# Terminal 2 — backend with hot reload
make dev-backend

# Terminal 3 — frontend with HMR
make dev-frontend

Open http://localhost:5173. The dev server proxies /api to the backend at port 8000.

The docker-compose.override.yml exposes the database on localhost:5433 and is already in .gitignore — you can add your own local overrides there.


Keyboard Shortcuts

Available on the Practice page:

Key Action
Space Play / pause original audio
R Start / finish recording
Enter Submit recording for assessment
← → Previous / next sentence
Esc Cancel recording

Data Backup

All persistent data lives in two places:

  • Database: Docker volume postgres_data — practice records, scores, sentence states
  • Audio files: Docker volume storage — uploaded audio and recordings

Copy both volumes when migrating or backing up.


License

MIT