File size: 3,949 Bytes
e111d94
ba81a8e
4cc0dc7
e111d94
7cd80cc
e111d94
0aababd
7cd80cc
3a0bd05
723b59c
19f4c03
7cd80cc
a388705
168a38a
 
7cd80cc
 
 
fef2923
7cd80cc
 
e111d94
313814b
e111d94
b995db6
7cd80cc
b995db6
 
04d664a
7cd80cc
35eafc3
81e8315
 
7cd80cc
 
 
8c4e76c
7cd80cc
 
c2c6908
74ecebe
c894e8d
73e7d80
b995db6
974e6f9
db995e1
974e6f9
 
 
 
1f91376
 
 
 
 
 
 
 
 
 
 
 
 
 
d200ef1
2393ed2
 
 
 
8ad4ca5
94c7543
8ad4ca5
16b1689
94c7543
8ad4ca5
 
 
dc4f25f
 
8ad4ca5
 
dc4f25f
 
 
 
8ad4ca5
dc4f25f
 
 
 
 
 
 
 
 
 
8ad4ca5
dc4f25f
8ad4ca5
dc4f25f
 
 
 
b995db6
 
93d8861
bf48682
8ad4ca5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9bac415
 
cf23b08
d0feed8
9bac415
7003957
 
f5d1866
 
 
a2a6c97
 
 
50d2a16
 
 
 
24881f2
19f4c03
 
 
24881f2
 
168a38a
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
[project]
name = "speaches"
version = "0.1.0"
requires-python = ">=3.12,<3.13"
# https://packaging.python.org/en/latest/specifications/version-specifiers/#id5
dependencies = [
    "ctranslate2>=4.5.0",
    "fastapi>=0.115.0",
    "faster-whisper>=1.1.0",
    "huggingface-hub[hf-transfer]>=0.25.1",
    "kokoro-onnx>=0.2.2",
    "numpy>=2.1.1",
    "onnxruntime-gpu>=1.20.1 ; platform_machine == 'x86_64'",
    "piper-phonemize ; platform_machine == 'x86_64'",
    "piper-tts>=1.2.0 ; platform_machine == 'x86_64'",
    "pydantic-settings>=2.5.2",
    "pydantic>=2.9.0",
    "python-multipart>=0.0.10",
    "sounddevice>=0.5.1",
    "soundfile>=0.12.1",
    "uvicorn>=0.30.6",
]

[project.optional-dependencies]
client = [
    "keyboard>=0.13.5",
]
dev = [
    "anyio>=4.4.0",
    "basedpyright>=1.18.0",
    "pytest-antilru>=2.0.0",
    "mkdocs-material>=9.5.39",
    "mkdocstrings[python]>=0.26.1",
    "pytest-asyncio>=0.24.0",
    "pytest-xdist>=3.6.1",
    "pytest>=8.3.3",
    "ruff>=0.9.1",
    "srt>=3.5.3",
    "webvtt-py>=0.5.1",
    "pre-commit>=4.0.1",
    "pytest-mock>=3.14.0",
    "mkdocs-render-swagger-plugin>=0.1.2",
    "mdx-truly-sane-lists>=1.3",
]
ui = [
    "gradio>=5.0.2",
    "httpx>=0.27.2",
    "httpx-sse>=0.4.0",
    "openai>=1.48.0",
]
opentelemetry = [
    "opentelemetry-distro>=0.48b0",
    "opentelemetry-exporter-otlp>=1.27.0",
    "opentelemetry-instrumentation-asyncio==0.48b0",
    "opentelemetry-instrumentation-logging==0.48b0",
    "opentelemetry-instrumentation-threading==0.48b0",
    "opentelemetry-instrumentation-urllib==0.48b0",
    # "opentelemetry-instrumentation-wsgi==0.48b0"
    "opentelemetry-instrumentation-fastapi==0.48b0",
    "opentelemetry-instrumentation-grpc==0.48b0",
    "opentelemetry-instrumentation-httpx==0.48b0",
    "opentelemetry-instrumentation-requests==0.48b0",
    "opentelemetry-instrumentation-urllib3==0.48b0",
]

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

# https://docs.astral.sh/ruff/configuration/
[tool.ruff]
line-length = 120
target-version = "py311"

[tool.ruff.lint]
select = ["ALL"]
ignore = [
    "FIX",
    "TD", # disable todo warnings
    "ERA",  # allow commented out code

    "ANN003", # missing kwargs
    "ANN101", # missing self type
    "B006",
    "B008",
    "COM812", # trailing comma
    "D10",  # disabled required docstrings
    "D401",
    "EM102",
    "FBT001",
    "FBT002",
    "PLR0913",
    "PLR2004", # magic
    "RET504",
    "RET505",
    "RET508",
    "S101", # allow assert
    "S104",
    "S603", # subprocess untrusted input
    "SIM102",
    "T201", # print
    "TRY003",
    "W505",
    "ISC001", # recommended to disable for formatting
    "INP001",
    "PT018",
    "G004", # logging f string
]

[tool.ruff.lint.isort]
force-sort-within-sections = true

[tool.ruff.format]
# Like Black, use double quotes for strings.
quote-style = "double"
# Like Black, indent with spaces, rather than tabs.
indent-style = "space"
# Like Black, respect magic trailing commas.
skip-magic-trailing-comma = false
# Like Black, automatically detect the appropriate line ending.
line-ending = "auto"

[tool.basedpyright]
typeCheckingMode = "standard"
pythonVersion = "3.12"
pythonPlatform = "Linux"
# https://github.com/DetachHead/basedpyright?tab=readme-ov-file#pre-commit-hook
venvPath = "."
venv = ".venv"

[tool.pytest.ini_options]
asyncio_default_fixture_loop_scope = "function" # this fixes pytest warning
filterwarnings = [
    'ignore::DeprecationWarning'
]
# https://docs.pytest.org/en/stable/how-to/mark.html#registering-marks
markers = [
    "requires_openai",
]

[tool.uv]
constraint-dependencies = ["llvmlite>=0.40.0"]

[tool.uv.sources]
piper-phonemize = { url = "https://github.com/fedirz/piper-phonemize/raw/refs/heads/master/dist/piper_phonemize-1.2.0-cp312-cp312-manylinux_2_28_x86_64.whl" }

[[tool.uv.dependency-metadata]]
name = "piper-tts"
version = "1.2.0"
requires-dist = ["piper-phonemize"]