termux-tts 1.4.2 → 1.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/release.yml +98 -98
- package/CHANGELOG.md +57 -48
- package/LICENSE +17 -17
- package/README.md +441 -438
- package/README.pypi.md +441 -438
- package/bin/cli.js +33 -33
- package/doc.config.yaml +532 -532
- package/docs/benchmarks.md +11 -11
- package/index.js +5 -5
- package/install.sh +53 -53
- package/package.json +57 -57
- package/pyproject.toml +81 -81
- package/setup.py +38 -38
- package/termux_tts/__init__.py +64 -64
- package/termux_tts/control/component.py +398 -398
- package/termux_tts/engine_native.py +104 -104
- package/termux_tts/exceptions.py +28 -28
- package/termux_tts/installer.py +66 -6
- package/termux_tts/tokenizer.py +184 -184
package/docs/benchmarks.md
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
# 모바일 지연시간 벤치마크 (Mobile Benchmarks)
|
|
2
|
-
|
|
3
|
-
## 1. 실기기 벤치마크 결과
|
|
4
|
-
|
|
5
|
-
| 디바이스 | AP 프로세서 | 모델 | RTF (Real-Time Factor) | 5초 문장 합성 소요시간 | 메모리 점유율 |
|
|
6
|
-
| :--- | :--- | :--- | :--- | :--- | :--- |
|
|
7
|
-
| **Galaxy S25 (SM-S931N)** | Snapdragon 8 Elite | VITS ONNX | **0.035x** | **0.18초** | ~68MB |
|
|
8
|
-
| **Galaxy A35 (SM-A356N)** | Exynos 1380 | VITS ONNX | **0.118x** | **0.59초** | ~72MB |
|
|
9
|
-
| **Galaxy S20 (SM-G981N)** | Snapdragon 865 | VITS ONNX | **0.142x** | **0.71초** | ~75MB |
|
|
10
|
-
|
|
11
|
-
> **RTF 공식**: $\text{RTF} = \frac{\text{합성에 소요된 연산 시간 (초)}}{\text{생성된 오디오 길이 (초)}}$
|
|
1
|
+
# 모바일 지연시간 벤치마크 (Mobile Benchmarks)
|
|
2
|
+
|
|
3
|
+
## 1. 실기기 벤치마크 결과
|
|
4
|
+
|
|
5
|
+
| 디바이스 | AP 프로세서 | 모델 | RTF (Real-Time Factor) | 5초 문장 합성 소요시간 | 메모리 점유율 |
|
|
6
|
+
| :--- | :--- | :--- | :--- | :--- | :--- |
|
|
7
|
+
| **Galaxy S25 (SM-S931N)** | Snapdragon 8 Elite | VITS ONNX | **0.035x** | **0.18초** | ~68MB |
|
|
8
|
+
| **Galaxy A35 (SM-A356N)** | Exynos 1380 | VITS ONNX | **0.118x** | **0.59초** | ~72MB |
|
|
9
|
+
| **Galaxy S20 (SM-G981N)** | Snapdragon 865 | VITS ONNX | **0.142x** | **0.71초** | ~75MB |
|
|
10
|
+
|
|
11
|
+
> **RTF 공식**: $\text{RTF} = \frac{\text{합성에 소요된 연산 시간 (초)}}{\text{생성된 오디오 길이 (초)}}$
|
|
12
12
|
> RTF가 1.0 미만이면 실시간 발화 속도보다 빠르게 합성됨을 의미합니다.
|
package/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* termux-tts Node.js SDK Entrypoint
|
|
3
|
-
*/
|
|
4
|
-
const tts = require('./binding_node');
|
|
5
|
-
module.exports = tts;
|
|
1
|
+
/**
|
|
2
|
+
* termux-tts Node.js SDK Entrypoint
|
|
3
|
+
*/
|
|
4
|
+
const tts = require('./binding_node');
|
|
5
|
+
module.exports = tts;
|
package/install.sh
CHANGED
|
@@ -1,53 +1,53 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# ==============================================================================
|
|
3
|
-
# termux-tts: Zero-Drift One-Touch Unified Installer (Android Termux / Linux)
|
|
4
|
-
# Open-Source under Apache License 2.0 (AMEVA Foundation)
|
|
5
|
-
# ==============================================================================
|
|
6
|
-
|
|
7
|
-
set -e
|
|
8
|
-
|
|
9
|
-
echo "========================================================="
|
|
10
|
-
echo " 🚀 Initializing termux-tts Installer "
|
|
11
|
-
echo "========================================================="
|
|
12
|
-
|
|
13
|
-
# 1. System Package Manager Provisioning (pkg / apt)
|
|
14
|
-
if command -v pkg >/dev/null 2>&1; then
|
|
15
|
-
echo "[1/4] Updating Termux packages and installing dependencies..."
|
|
16
|
-
pkg update -y
|
|
17
|
-
pkg install -y clang git python python-numpy termux-api nodejs
|
|
18
|
-
elif command -v apt-get >/dev/null 2>&1; then
|
|
19
|
-
echo "[1/4] Updating Debian/Ubuntu packages..."
|
|
20
|
-
apt-get update -y
|
|
21
|
-
apt-get install -y build-essential git python3 python3-pip python3-numpy nodejs npm
|
|
22
|
-
else
|
|
23
|
-
echo "[!] Unknown package manager. Please ensure python3, numpy, and nodejs are installed."
|
|
24
|
-
fi
|
|
25
|
-
|
|
26
|
-
# 2. Python Toolchain & Package Installation (pip)
|
|
27
|
-
echo "[2/4] Installing Python SDK and CLI via pip..."
|
|
28
|
-
pip install --upgrade pip setuptools wheel
|
|
29
|
-
if pip install ameva-runtime 2>/dev/null; then
|
|
30
|
-
echo " -> ameva-runtime hardware diagnostics bound."
|
|
31
|
-
else
|
|
32
|
-
echo " -> ameva-runtime optional hardware acceleration bridge skipped."
|
|
33
|
-
fi
|
|
34
|
-
pip install --no-build-isolation -e .
|
|
35
|
-
|
|
36
|
-
# 3. Node.js Dual Engine CLI Installation (npm)
|
|
37
|
-
echo "[3/4] Linking Node.js SDK and npm global CLI..."
|
|
38
|
-
if command -v npm >/dev/null 2>&1; then
|
|
39
|
-
npm install -g . || npm link
|
|
40
|
-
fi
|
|
41
|
-
|
|
42
|
-
# 4. Diagnostics & Verification
|
|
43
|
-
echo "[4/4] Running Vulkan GPU Hardware Probe..."
|
|
44
|
-
termux-tts doctor
|
|
45
|
-
|
|
46
|
-
echo "========================================================="
|
|
47
|
-
echo " ✅ termux-tts successfully installed!"
|
|
48
|
-
echo "========================================================="
|
|
49
|
-
echo " Dual-Engine Verification:"
|
|
50
|
-
echo " * Python CLI: termux-tts synth -t 'Hello' -o test.wav"
|
|
51
|
-
echo " * Native Speak: termux-tts speak -t '안녕하세요' -l ko"
|
|
52
|
-
echo " * Node.js CLI: npx termux-tts doctor"
|
|
53
|
-
echo "========================================================="
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# ==============================================================================
|
|
3
|
+
# termux-tts: Zero-Drift One-Touch Unified Installer (Android Termux / Linux)
|
|
4
|
+
# Open-Source under Apache License 2.0 (AMEVA Foundation)
|
|
5
|
+
# ==============================================================================
|
|
6
|
+
|
|
7
|
+
set -e
|
|
8
|
+
|
|
9
|
+
echo "========================================================="
|
|
10
|
+
echo " 🚀 Initializing termux-tts Installer "
|
|
11
|
+
echo "========================================================="
|
|
12
|
+
|
|
13
|
+
# 1. System Package Manager Provisioning (pkg / apt)
|
|
14
|
+
if command -v pkg >/dev/null 2>&1; then
|
|
15
|
+
echo "[1/4] Updating Termux packages and installing dependencies..."
|
|
16
|
+
pkg update -y
|
|
17
|
+
pkg install -y clang git python python-numpy termux-api nodejs
|
|
18
|
+
elif command -v apt-get >/dev/null 2>&1; then
|
|
19
|
+
echo "[1/4] Updating Debian/Ubuntu packages..."
|
|
20
|
+
apt-get update -y
|
|
21
|
+
apt-get install -y build-essential git python3 python3-pip python3-numpy nodejs npm
|
|
22
|
+
else
|
|
23
|
+
echo "[!] Unknown package manager. Please ensure python3, numpy, and nodejs are installed."
|
|
24
|
+
fi
|
|
25
|
+
|
|
26
|
+
# 2. Python Toolchain & Package Installation (pip)
|
|
27
|
+
echo "[2/4] Installing Python SDK and CLI via pip..."
|
|
28
|
+
pip install --upgrade pip setuptools wheel
|
|
29
|
+
if pip install ameva-runtime 2>/dev/null; then
|
|
30
|
+
echo " -> ameva-runtime hardware diagnostics bound."
|
|
31
|
+
else
|
|
32
|
+
echo " -> ameva-runtime optional hardware acceleration bridge skipped."
|
|
33
|
+
fi
|
|
34
|
+
pip install --no-build-isolation -e .
|
|
35
|
+
|
|
36
|
+
# 3. Node.js Dual Engine CLI Installation (npm)
|
|
37
|
+
echo "[3/4] Linking Node.js SDK and npm global CLI..."
|
|
38
|
+
if command -v npm >/dev/null 2>&1; then
|
|
39
|
+
npm install -g . || npm link
|
|
40
|
+
fi
|
|
41
|
+
|
|
42
|
+
# 4. Diagnostics & Verification
|
|
43
|
+
echo "[4/4] Running Vulkan GPU Hardware Probe..."
|
|
44
|
+
termux-tts doctor
|
|
45
|
+
|
|
46
|
+
echo "========================================================="
|
|
47
|
+
echo " ✅ termux-tts successfully installed!"
|
|
48
|
+
echo "========================================================="
|
|
49
|
+
echo " Dual-Engine Verification:"
|
|
50
|
+
echo " * Python CLI: termux-tts synth -t 'Hello' -o test.wav"
|
|
51
|
+
echo " * Native Speak: termux-tts speak -t '안녕하세요' -l ko"
|
|
52
|
+
echo " * Node.js CLI: npx termux-tts doctor"
|
|
53
|
+
echo "========================================================="
|
package/package.json
CHANGED
|
@@ -1,57 +1,57 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "termux-tts",
|
|
3
|
-
"version": "1.4.
|
|
4
|
-
"description": "On-device Text-to-Speech framework utilizing device resources (DSP Formant Vocoder, ONNX Neural Runtime & Android Native Voice)",
|
|
5
|
-
"main": "index.js",
|
|
6
|
-
"bin": {
|
|
7
|
-
"termux-tts": "bin/cli.js"
|
|
8
|
-
},
|
|
9
|
-
"scripts": {
|
|
10
|
-
"test": "node binding_node/test_node.js",
|
|
11
|
-
"doctor": "node bin/cli.js doctor"
|
|
12
|
-
},
|
|
13
|
-
"keywords": [
|
|
14
|
-
"tts",
|
|
15
|
-
"text-to-speech",
|
|
16
|
-
"vulkan",
|
|
17
|
-
"vulkan-compute",
|
|
18
|
-
"vits",
|
|
19
|
-
"piper-tts",
|
|
20
|
-
"sherpa-onnx",
|
|
21
|
-
"sherpa-ncnn",
|
|
22
|
-
"termux",
|
|
23
|
-
"android",
|
|
24
|
-
"on-device-ai",
|
|
25
|
-
"speech-synthesis",
|
|
26
|
-
"edge-ai",
|
|
27
|
-
"formant-synthesis",
|
|
28
|
-
"vocoder",
|
|
29
|
-
"mobile-ai",
|
|
30
|
-
"adreno",
|
|
31
|
-
"mali-gpu",
|
|
32
|
-
"dsp",
|
|
33
|
-
"rosenberg-glottal",
|
|
34
|
-
"biquad-filter",
|
|
35
|
-
"expressive-speech",
|
|
36
|
-
"voice-cloning",
|
|
37
|
-
"audio-generation",
|
|
38
|
-
"ncnn",
|
|
39
|
-
"arm64",
|
|
40
|
-
"snapdragon",
|
|
41
|
-
"exynos",
|
|
42
|
-
"real-time-factor",
|
|
43
|
-
"low-latency",
|
|
44
|
-
"zero-dependency",
|
|
45
|
-
"voice-assistant",
|
|
46
|
-
"headless-audio",
|
|
47
|
-
"embedded-systems"
|
|
48
|
-
],
|
|
49
|
-
"author": "AMEVA Foundation",
|
|
50
|
-
"license": "Apache-2.0",
|
|
51
|
-
"dependencies": {
|
|
52
|
-
"@ameva/runtime": ">=2.1.0"
|
|
53
|
-
},
|
|
54
|
-
"engines": {
|
|
55
|
-
"node": ">=16.0.0"
|
|
56
|
-
}
|
|
57
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "termux-tts",
|
|
3
|
+
"version": "1.4.3",
|
|
4
|
+
"description": "On-device Text-to-Speech framework utilizing device resources (DSP Formant Vocoder, ONNX Neural Runtime & Android Native Voice)",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"termux-tts": "bin/cli.js"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"test": "node binding_node/test_node.js",
|
|
11
|
+
"doctor": "node bin/cli.js doctor"
|
|
12
|
+
},
|
|
13
|
+
"keywords": [
|
|
14
|
+
"tts",
|
|
15
|
+
"text-to-speech",
|
|
16
|
+
"vulkan",
|
|
17
|
+
"vulkan-compute",
|
|
18
|
+
"vits",
|
|
19
|
+
"piper-tts",
|
|
20
|
+
"sherpa-onnx",
|
|
21
|
+
"sherpa-ncnn",
|
|
22
|
+
"termux",
|
|
23
|
+
"android",
|
|
24
|
+
"on-device-ai",
|
|
25
|
+
"speech-synthesis",
|
|
26
|
+
"edge-ai",
|
|
27
|
+
"formant-synthesis",
|
|
28
|
+
"vocoder",
|
|
29
|
+
"mobile-ai",
|
|
30
|
+
"adreno",
|
|
31
|
+
"mali-gpu",
|
|
32
|
+
"dsp",
|
|
33
|
+
"rosenberg-glottal",
|
|
34
|
+
"biquad-filter",
|
|
35
|
+
"expressive-speech",
|
|
36
|
+
"voice-cloning",
|
|
37
|
+
"audio-generation",
|
|
38
|
+
"ncnn",
|
|
39
|
+
"arm64",
|
|
40
|
+
"snapdragon",
|
|
41
|
+
"exynos",
|
|
42
|
+
"real-time-factor",
|
|
43
|
+
"low-latency",
|
|
44
|
+
"zero-dependency",
|
|
45
|
+
"voice-assistant",
|
|
46
|
+
"headless-audio",
|
|
47
|
+
"embedded-systems"
|
|
48
|
+
],
|
|
49
|
+
"author": "AMEVA Foundation",
|
|
50
|
+
"license": "Apache-2.0",
|
|
51
|
+
"dependencies": {
|
|
52
|
+
"@ameva/runtime": ">=2.1.0"
|
|
53
|
+
},
|
|
54
|
+
"engines": {
|
|
55
|
+
"node": ">=16.0.0"
|
|
56
|
+
}
|
|
57
|
+
}
|
package/pyproject.toml
CHANGED
|
@@ -1,81 +1,81 @@
|
|
|
1
|
-
[build-system]
|
|
2
|
-
requires = ["setuptools>=61.0"]
|
|
3
|
-
build-backend = "setuptools.build_meta"
|
|
4
|
-
|
|
5
|
-
[project]
|
|
6
|
-
name = "termux-tts"
|
|
7
|
-
version = "1.4.
|
|
8
|
-
description = "On-device 4-Tier Text-to-Speech framework utilizing device resources (DSP Formant Vocoder, C++ Sherpa-ONNX Neural, Android Native & Expressive)"
|
|
9
|
-
readme = "README.pypi.md"
|
|
10
|
-
requires-python = ">=3.10"
|
|
11
|
-
license = { text = "Apache-2.0" }
|
|
12
|
-
authors = [
|
|
13
|
-
{ name = "AOSF / uno-km", email = "zhfldk014745@naver.com" }
|
|
14
|
-
]
|
|
15
|
-
classifiers = [
|
|
16
|
-
"Development Status :: 5 - Production/Stable",
|
|
17
|
-
"Intended Audience :: Developers",
|
|
18
|
-
"License :: OSI Approved :: Apache Software License",
|
|
19
|
-
"Programming Language :: Python :: 3",
|
|
20
|
-
"Programming Language :: Python :: 3.10",
|
|
21
|
-
"Programming Language :: Python :: 3.11",
|
|
22
|
-
"Programming Language :: Python :: 3.12",
|
|
23
|
-
"Programming Language :: Python :: 3.13",
|
|
24
|
-
"Topic :: Multimedia :: Sound/Audio :: Speech",
|
|
25
|
-
]
|
|
26
|
-
keywords = [
|
|
27
|
-
"tts",
|
|
28
|
-
"text-to-speech",
|
|
29
|
-
"vulkan",
|
|
30
|
-
"vulkan-compute",
|
|
31
|
-
"vits",
|
|
32
|
-
"piper-tts",
|
|
33
|
-
"sherpa-onnx",
|
|
34
|
-
"sherpa-ncnn",
|
|
35
|
-
"termux",
|
|
36
|
-
"android",
|
|
37
|
-
"on-device-ai",
|
|
38
|
-
"speech-synthesis",
|
|
39
|
-
"edge-ai",
|
|
40
|
-
"formant-synthesis",
|
|
41
|
-
"vocoder",
|
|
42
|
-
"mobile-ai",
|
|
43
|
-
"adreno",
|
|
44
|
-
"mali-gpu",
|
|
45
|
-
"dsp",
|
|
46
|
-
"rosenberg-glottal",
|
|
47
|
-
"biquad-filter",
|
|
48
|
-
"expressive-speech",
|
|
49
|
-
"voice-cloning",
|
|
50
|
-
"audio-generation",
|
|
51
|
-
"ncnn",
|
|
52
|
-
"arm64",
|
|
53
|
-
"snapdragon",
|
|
54
|
-
"exynos",
|
|
55
|
-
"real-time-factor",
|
|
56
|
-
"low-latency",
|
|
57
|
-
"zero-dependency",
|
|
58
|
-
"voice-assistant",
|
|
59
|
-
"headless-audio",
|
|
60
|
-
"embedded-systems"
|
|
61
|
-
]
|
|
62
|
-
dependencies = [
|
|
63
|
-
"numpy>=1.20.0",
|
|
64
|
-
"ameva-component-sdk>=0.1.0,<2.0",
|
|
65
|
-
]
|
|
66
|
-
|
|
67
|
-
[project.optional-dependencies]
|
|
68
|
-
onnx = ["onnxruntime>=1.15.0"]
|
|
69
|
-
neural = ["onnxruntime>=1.15.0"]
|
|
70
|
-
dev = ["pytest>=7.0", "paramiko>=3.0"]
|
|
71
|
-
|
|
72
|
-
[project.scripts]
|
|
73
|
-
termux-tts = "termux_tts.cli:main"
|
|
74
|
-
|
|
75
|
-
[project.entry-points."ameva.components"]
|
|
76
|
-
termux-tts = "termux_tts.adapter:create_adapter"
|
|
77
|
-
|
|
78
|
-
[tool.setuptools.packages.find]
|
|
79
|
-
where = ["."]
|
|
80
|
-
include = ["termux_tts*"]
|
|
81
|
-
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=61.0"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "termux-tts"
|
|
7
|
+
version = "1.4.3"
|
|
8
|
+
description = "On-device 4-Tier Text-to-Speech framework utilizing device resources (DSP Formant Vocoder, C++ Sherpa-ONNX Neural, Android Native & Expressive)"
|
|
9
|
+
readme = "README.pypi.md"
|
|
10
|
+
requires-python = ">=3.10"
|
|
11
|
+
license = { text = "Apache-2.0" }
|
|
12
|
+
authors = [
|
|
13
|
+
{ name = "AOSF / uno-km", email = "zhfldk014745@naver.com" }
|
|
14
|
+
]
|
|
15
|
+
classifiers = [
|
|
16
|
+
"Development Status :: 5 - Production/Stable",
|
|
17
|
+
"Intended Audience :: Developers",
|
|
18
|
+
"License :: OSI Approved :: Apache Software License",
|
|
19
|
+
"Programming Language :: Python :: 3",
|
|
20
|
+
"Programming Language :: Python :: 3.10",
|
|
21
|
+
"Programming Language :: Python :: 3.11",
|
|
22
|
+
"Programming Language :: Python :: 3.12",
|
|
23
|
+
"Programming Language :: Python :: 3.13",
|
|
24
|
+
"Topic :: Multimedia :: Sound/Audio :: Speech",
|
|
25
|
+
]
|
|
26
|
+
keywords = [
|
|
27
|
+
"tts",
|
|
28
|
+
"text-to-speech",
|
|
29
|
+
"vulkan",
|
|
30
|
+
"vulkan-compute",
|
|
31
|
+
"vits",
|
|
32
|
+
"piper-tts",
|
|
33
|
+
"sherpa-onnx",
|
|
34
|
+
"sherpa-ncnn",
|
|
35
|
+
"termux",
|
|
36
|
+
"android",
|
|
37
|
+
"on-device-ai",
|
|
38
|
+
"speech-synthesis",
|
|
39
|
+
"edge-ai",
|
|
40
|
+
"formant-synthesis",
|
|
41
|
+
"vocoder",
|
|
42
|
+
"mobile-ai",
|
|
43
|
+
"adreno",
|
|
44
|
+
"mali-gpu",
|
|
45
|
+
"dsp",
|
|
46
|
+
"rosenberg-glottal",
|
|
47
|
+
"biquad-filter",
|
|
48
|
+
"expressive-speech",
|
|
49
|
+
"voice-cloning",
|
|
50
|
+
"audio-generation",
|
|
51
|
+
"ncnn",
|
|
52
|
+
"arm64",
|
|
53
|
+
"snapdragon",
|
|
54
|
+
"exynos",
|
|
55
|
+
"real-time-factor",
|
|
56
|
+
"low-latency",
|
|
57
|
+
"zero-dependency",
|
|
58
|
+
"voice-assistant",
|
|
59
|
+
"headless-audio",
|
|
60
|
+
"embedded-systems"
|
|
61
|
+
]
|
|
62
|
+
dependencies = [
|
|
63
|
+
"numpy>=1.20.0",
|
|
64
|
+
"ameva-component-sdk>=0.1.0,<2.0",
|
|
65
|
+
]
|
|
66
|
+
|
|
67
|
+
[project.optional-dependencies]
|
|
68
|
+
onnx = ["onnxruntime>=1.15.0"]
|
|
69
|
+
neural = ["onnxruntime>=1.15.0"]
|
|
70
|
+
dev = ["pytest>=7.0", "paramiko>=3.0"]
|
|
71
|
+
|
|
72
|
+
[project.scripts]
|
|
73
|
+
termux-tts = "termux_tts.cli:main"
|
|
74
|
+
|
|
75
|
+
[project.entry-points."ameva.components"]
|
|
76
|
+
termux-tts = "termux_tts.adapter:create_adapter"
|
|
77
|
+
|
|
78
|
+
[tool.setuptools.packages.find]
|
|
79
|
+
where = ["."]
|
|
80
|
+
include = ["termux_tts*"]
|
|
81
|
+
|
package/setup.py
CHANGED
|
@@ -1,38 +1,38 @@
|
|
|
1
|
-
import os
|
|
2
|
-
from setuptools import setup, find_packages
|
|
3
|
-
|
|
4
|
-
setup(
|
|
5
|
-
name="termux-tts",
|
|
6
|
-
version="1.4.2",
|
|
7
|
-
description="Ultra-Fast On-Device 4-Tier Text-to-Speech Framework (DSP Synth, Android Native, C++ Sherpa-ONNX Neural & Expressive)",
|
|
8
|
-
long_description=open("README.pypi.md", encoding="utf-8").read() if os.path.exists("README.pypi.md") else open("README.md", encoding="utf-8").read(),
|
|
9
|
-
long_description_content_type="text/markdown",
|
|
10
|
-
author="AMEVA Foundation",
|
|
11
|
-
license="Apache-2.0",
|
|
12
|
-
url="https://github.com/uno-km/termux-tts",
|
|
13
|
-
packages=find_packages(include=["termux_tts", "termux_tts.*"]),
|
|
14
|
-
python_requires=">=3.8",
|
|
15
|
-
install_requires=[
|
|
16
|
-
"numpy>=1.20.0",
|
|
17
|
-
"ameva-runtime>=2.0.0",
|
|
18
|
-
],
|
|
19
|
-
extras_require={
|
|
20
|
-
"onnx": ["onnxruntime>=1.15.0"],
|
|
21
|
-
"neural": ["onnxruntime>=1.15.0"],
|
|
22
|
-
"dev": ["pytest>=7.0.0", "pytest-asyncio"],
|
|
23
|
-
},
|
|
24
|
-
entry_points={
|
|
25
|
-
"console_scripts": [
|
|
26
|
-
"termux-tts=termux_tts.cli:main",
|
|
27
|
-
],
|
|
28
|
-
},
|
|
29
|
-
classifiers=[
|
|
30
|
-
"Development Status :: 5 - Production/Stable",
|
|
31
|
-
"Intended Audience :: Developers",
|
|
32
|
-
"License :: OSI Approved :: Apache Software License",
|
|
33
|
-
"Operating System :: Android",
|
|
34
|
-
"Operating System :: POSIX :: Linux",
|
|
35
|
-
"Programming Language :: Python :: 3",
|
|
36
|
-
"Topic :: Multimedia :: Sound/Audio :: Speech",
|
|
37
|
-
],
|
|
38
|
-
)
|
|
1
|
+
import os
|
|
2
|
+
from setuptools import setup, find_packages
|
|
3
|
+
|
|
4
|
+
setup(
|
|
5
|
+
name="termux-tts",
|
|
6
|
+
version="1.4.2",
|
|
7
|
+
description="Ultra-Fast On-Device 4-Tier Text-to-Speech Framework (DSP Synth, Android Native, C++ Sherpa-ONNX Neural & Expressive)",
|
|
8
|
+
long_description=open("README.pypi.md", encoding="utf-8").read() if os.path.exists("README.pypi.md") else open("README.md", encoding="utf-8").read(),
|
|
9
|
+
long_description_content_type="text/markdown",
|
|
10
|
+
author="AMEVA Foundation",
|
|
11
|
+
license="Apache-2.0",
|
|
12
|
+
url="https://github.com/uno-km/termux-tts",
|
|
13
|
+
packages=find_packages(include=["termux_tts", "termux_tts.*"]),
|
|
14
|
+
python_requires=">=3.8",
|
|
15
|
+
install_requires=[
|
|
16
|
+
"numpy>=1.20.0",
|
|
17
|
+
"ameva-runtime>=2.0.0",
|
|
18
|
+
],
|
|
19
|
+
extras_require={
|
|
20
|
+
"onnx": ["onnxruntime>=1.15.0"],
|
|
21
|
+
"neural": ["onnxruntime>=1.15.0"],
|
|
22
|
+
"dev": ["pytest>=7.0.0", "pytest-asyncio"],
|
|
23
|
+
},
|
|
24
|
+
entry_points={
|
|
25
|
+
"console_scripts": [
|
|
26
|
+
"termux-tts=termux_tts.cli:main",
|
|
27
|
+
],
|
|
28
|
+
},
|
|
29
|
+
classifiers=[
|
|
30
|
+
"Development Status :: 5 - Production/Stable",
|
|
31
|
+
"Intended Audience :: Developers",
|
|
32
|
+
"License :: OSI Approved :: Apache Software License",
|
|
33
|
+
"Operating System :: Android",
|
|
34
|
+
"Operating System :: POSIX :: Linux",
|
|
35
|
+
"Programming Language :: Python :: 3",
|
|
36
|
+
"Topic :: Multimedia :: Sound/Audio :: Speech",
|
|
37
|
+
],
|
|
38
|
+
)
|
package/termux_tts/__init__.py
CHANGED
|
@@ -1,64 +1,64 @@
|
|
|
1
|
-
"""
|
|
2
|
-
termux-tts: Production-Grade 4-Tier TTS Framework for Android Termux.
|
|
3
|
-
- Tier 1: Parametric DSP Formant Synthesizer Engine (0MB Zero-Dependency)
|
|
4
|
-
- Tier 2: Android System Native Voice Engine Bridge (Samsung / Google Voice)
|
|
5
|
-
- Tier 3: Authentic C++ Subprocess-Isolated Sherpa-ONNX Neural Vocoder (VITS Deep Learning)
|
|
6
|
-
- Tier 4: Pure On-Device Expressive Emotional Synthesizer (Conversational Tags)
|
|
7
|
-
"""
|
|
8
|
-
|
|
9
|
-
from .engine import TTSEngine, load, doctor
|
|
10
|
-
from .engine_native import NativeAndroidEngine, NativeResult
|
|
11
|
-
from .engine_dsp import ParametricDSPEngine, DSPResult, QUALITY_PRESETS, DSPSynthesizer
|
|
12
|
-
from .engine_sherpa import SherpaNeuralEngine, SherpaResult
|
|
13
|
-
from .engine_vulkan import VulkanNeuralEngine, VulkanResult
|
|
14
|
-
from .engine_expressive import ExpressiveEngine, ExpressiveResult
|
|
15
|
-
from .installer import run_installation
|
|
16
|
-
from .tokenizer import PhoneticTokenizer, EXPRESSIVE_TAGS
|
|
17
|
-
from .g2p_korean import KoreanG2PEngine, korean_text_to_phonemes
|
|
18
|
-
from .audio import AudioBuffer
|
|
19
|
-
from .exceptions import (
|
|
20
|
-
TTSError,
|
|
21
|
-
TTSModelLoadError,
|
|
22
|
-
TTSInferenceError,
|
|
23
|
-
VulkanInitializationError,
|
|
24
|
-
TTSAudioEncodingError,
|
|
25
|
-
TTSLanguageNotSupportedError
|
|
26
|
-
)
|
|
27
|
-
|
|
28
|
-
# Backward-compatibility alias
|
|
29
|
-
ONNXNeuralEngine = SherpaNeuralEngine
|
|
30
|
-
ONNXResult = SherpaResult
|
|
31
|
-
|
|
32
|
-
__version__ = "1.4.
|
|
33
|
-
__all__ = [
|
|
34
|
-
"TTSEngine",
|
|
35
|
-
"load",
|
|
36
|
-
"doctor",
|
|
37
|
-
"ParametricDSPEngine",
|
|
38
|
-
"DSPSynthesizer",
|
|
39
|
-
"DSPResult",
|
|
40
|
-
"NativeAndroidEngine",
|
|
41
|
-
"NativeResult",
|
|
42
|
-
"SherpaNeuralEngine",
|
|
43
|
-
"SherpaResult",
|
|
44
|
-
"VulkanNeuralEngine",
|
|
45
|
-
"VulkanResult",
|
|
46
|
-
"ExpressiveEngine",
|
|
47
|
-
"ExpressiveResult",
|
|
48
|
-
"run_installation",
|
|
49
|
-
"ONNXNeuralEngine",
|
|
50
|
-
"ONNXResult",
|
|
51
|
-
"QUALITY_PRESETS",
|
|
52
|
-
"PhoneticTokenizer",
|
|
53
|
-
"KoreanG2PEngine",
|
|
54
|
-
"korean_text_to_phonemes",
|
|
55
|
-
"EXPRESSIVE_TAGS",
|
|
56
|
-
"AudioBuffer",
|
|
57
|
-
"TTSError",
|
|
58
|
-
"TTSModelLoadError",
|
|
59
|
-
"TTSInferenceError",
|
|
60
|
-
"VulkanInitializationError",
|
|
61
|
-
"TTSAudioEncodingError",
|
|
62
|
-
"TTSLanguageNotSupportedError"
|
|
63
|
-
]
|
|
64
|
-
|
|
1
|
+
"""
|
|
2
|
+
termux-tts: Production-Grade 4-Tier TTS Framework for Android Termux.
|
|
3
|
+
- Tier 1: Parametric DSP Formant Synthesizer Engine (0MB Zero-Dependency)
|
|
4
|
+
- Tier 2: Android System Native Voice Engine Bridge (Samsung / Google Voice)
|
|
5
|
+
- Tier 3: Authentic C++ Subprocess-Isolated Sherpa-ONNX Neural Vocoder (VITS Deep Learning)
|
|
6
|
+
- Tier 4: Pure On-Device Expressive Emotional Synthesizer (Conversational Tags)
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from .engine import TTSEngine, load, doctor
|
|
10
|
+
from .engine_native import NativeAndroidEngine, NativeResult
|
|
11
|
+
from .engine_dsp import ParametricDSPEngine, DSPResult, QUALITY_PRESETS, DSPSynthesizer
|
|
12
|
+
from .engine_sherpa import SherpaNeuralEngine, SherpaResult
|
|
13
|
+
from .engine_vulkan import VulkanNeuralEngine, VulkanResult
|
|
14
|
+
from .engine_expressive import ExpressiveEngine, ExpressiveResult
|
|
15
|
+
from .installer import run_installation
|
|
16
|
+
from .tokenizer import PhoneticTokenizer, EXPRESSIVE_TAGS
|
|
17
|
+
from .g2p_korean import KoreanG2PEngine, korean_text_to_phonemes
|
|
18
|
+
from .audio import AudioBuffer
|
|
19
|
+
from .exceptions import (
|
|
20
|
+
TTSError,
|
|
21
|
+
TTSModelLoadError,
|
|
22
|
+
TTSInferenceError,
|
|
23
|
+
VulkanInitializationError,
|
|
24
|
+
TTSAudioEncodingError,
|
|
25
|
+
TTSLanguageNotSupportedError
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
# Backward-compatibility alias
|
|
29
|
+
ONNXNeuralEngine = SherpaNeuralEngine
|
|
30
|
+
ONNXResult = SherpaResult
|
|
31
|
+
|
|
32
|
+
__version__ = "1.4.3"
|
|
33
|
+
__all__ = [
|
|
34
|
+
"TTSEngine",
|
|
35
|
+
"load",
|
|
36
|
+
"doctor",
|
|
37
|
+
"ParametricDSPEngine",
|
|
38
|
+
"DSPSynthesizer",
|
|
39
|
+
"DSPResult",
|
|
40
|
+
"NativeAndroidEngine",
|
|
41
|
+
"NativeResult",
|
|
42
|
+
"SherpaNeuralEngine",
|
|
43
|
+
"SherpaResult",
|
|
44
|
+
"VulkanNeuralEngine",
|
|
45
|
+
"VulkanResult",
|
|
46
|
+
"ExpressiveEngine",
|
|
47
|
+
"ExpressiveResult",
|
|
48
|
+
"run_installation",
|
|
49
|
+
"ONNXNeuralEngine",
|
|
50
|
+
"ONNXResult",
|
|
51
|
+
"QUALITY_PRESETS",
|
|
52
|
+
"PhoneticTokenizer",
|
|
53
|
+
"KoreanG2PEngine",
|
|
54
|
+
"korean_text_to_phonemes",
|
|
55
|
+
"EXPRESSIVE_TAGS",
|
|
56
|
+
"AudioBuffer",
|
|
57
|
+
"TTSError",
|
|
58
|
+
"TTSModelLoadError",
|
|
59
|
+
"TTSInferenceError",
|
|
60
|
+
"VulkanInitializationError",
|
|
61
|
+
"TTSAudioEncodingError",
|
|
62
|
+
"TTSLanguageNotSupportedError"
|
|
63
|
+
]
|
|
64
|
+
|