Termux-STT
디바이스 리소스를 활용한 통합 온디바이스 음성인식(STT) 및 순수 Python 128d X-Vector 화자 분리 프레임워크
Unified On-Device Speech-to-Text Utilizing Device Resources & Pure Python 128d X-Vector Speaker Diarization
Architecture & Overview
Whisper.cpp, Vosk, Sherpa-ONNX 3대 네이티브 엔진을 통합하고, 닫힌 형태 순수 Python 128차원 X-Vector 클러스터링을 결합하여 80MB 미만의 초경량 메모리로 100% 온디바이스 실시간 음성인식과 화자 분리를 구현합니다.
Integrates Whisper.cpp, Vosk, and Sherpa-ONNX with a closed-form pure-Python 128-dimensional X-Vector clustering algorithm that operates in under 80MB RAM with zero cloud egress.
Installation & Quickstart
Python (PyPI)
pip install termux-stt
from termux_stt import create_engine
# 1. Initialize Engine with Hybrid GPU-Encoder / CPU-Decoder Acceleration
engine = create_engine("whisper", model="small", lang="en", threads=4, split_mode=True)
# 2. Transcribe Audio directly into Subtitles
result = engine.transcribe("samples/jfk_1min.wav")
print("Transcript:\n", result.text)
print("SRT Subtitles:\n", result.to_srt())
# 3. 2-Speaker Diarization without PyTorch
hybrid = create_engine("hybrid", lang="en", num_speakers=2)
diar_result = hybrid.diarize("samples/jfk_1min.wav")
for seg in diar_result.segments:
print(f"[{seg.speaker}] ({seg.start:.1f}s -> {seg.end:.1f}s): {seg.text}")
Node.js / TypeScript (npm)
npm install termux-stt
const { createEngine } = require("termux-stt");
async function main() {
// 1. Initialize Whisper Engine
const engine = createEngine("whisper", { model: "tiny", lang: "en", threads: 4 });
// 2. Transcribe Audio
const result = await engine.transcribe("samples/jfk_1min.wav");
console.log("Transcript:", result.text);
console.log("SRT Subtitles:\n", result.toSrt());
}
main();
Distributed Clustering & Memory Pooling (AMEVA-Cluster)
Termux-STT natively integrates with AMEVA-Cluster (pip install ameva-cluster) for distributed large-model speech recognition (e.g. whisper-large-v3-turbo) across interconnected mobile fleets.
1. Install Cluster Runtime
pip install ameva-cluster
# or Node.js:
npm install @ameva/cluster
2. Launch Worker Node on Remote Phone
# On remote worker device (e.g. Galaxy A53):
ameva-cluster worker --port 50052
3. Distributed Transcription via Master Node
# Master node sharding Whisper-Large layers across remote phone RAM:
termux-stt transcribe meeting.wav \
--model whisper-large-v3-turbo.bin \
--rpc 192.0.2.10:50052,192.0.2.11:50052
from termux_stt import create_engine
# Python SDK Distributed STT
engine = create_engine(
"whisper",
model="large-v3-turbo",
cluster_rpc_servers="192.0.2.10:50052,192.0.2.11:50052"
)
result = engine.transcribe("meeting.wav")
print(result.text)
Official Documentation & Benchmarks
- Official Architecture & API Reference
- Ecosystem Metrics & Registry Stats
- AMEVA Open-Source Foundation Portal
License
Licensed under the Apache-2.0 License. Copyright (c) 2026 Eunho Kim (@uno-km).
Metadata
Release files for termux-stt 1.5.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| termux_stt-1.5.1.tar.gz | 3.1 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| termux_stt-1.5.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 3.2 MB
Release files / termux_stt-1.5.1.tar.gz
| Download URL | termux_stt-1.5.1.tar.gz |
|---|---|
| Size | 3.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
66a69ec743d59512b64ec43565d66a55cb01ceb1f8deec86ae23114ba7de66df
|
|
BLAKE2b-256 checksum How to use checksums |
c69e9bf43a2dd2fd0725e4e8c1e7d34eb6fd0afdc95984be00666c839233bd6a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.16
|
Release files / termux_stt-1.5.1-py3-none-any.whl
| Download URL | termux_stt-1.5.1-py3-none-any.whl |
|---|---|
| Size | 93.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b1f3f1f95828039ff3ae4a61ec4c23e62868fb04de951cfbf81a5da7122e094b
|
|
BLAKE2b-256 checksum How to use checksums |
60800f67a75ba91999d4d0d3390ca9fd5bf240311daa6d68d7e72868349a9880
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.16
|