dora-vad 0.3.10rc0__tar.gz → 0.3.11rc1__tar.gz
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.
- {dora_vad-0.3.10rc0 → dora_vad-0.3.11rc1}/PKG-INFO +3 -3
- {dora_vad-0.3.10rc0 → dora_vad-0.3.11rc1}/dora_vad/__init__.py +2 -0
- {dora_vad-0.3.10rc0 → dora_vad-0.3.11rc1}/dora_vad/main.py +17 -9
- {dora_vad-0.3.10rc0 → dora_vad-0.3.11rc1}/dora_vad.egg-info/PKG-INFO +3 -3
- {dora_vad-0.3.10rc0 → dora_vad-0.3.11rc1}/dora_vad.egg-info/requires.txt +1 -1
- {dora_vad-0.3.10rc0 → dora_vad-0.3.11rc1}/pyproject.toml +14 -3
- {dora_vad-0.3.10rc0 → dora_vad-0.3.11rc1}/tests/test_translate.py +3 -0
- {dora_vad-0.3.10rc0 → dora_vad-0.3.11rc1}/README.md +0 -0
- {dora_vad-0.3.10rc0 → dora_vad-0.3.11rc1}/dora_vad.egg-info/SOURCES.txt +0 -0
- {dora_vad-0.3.10rc0 → dora_vad-0.3.11rc1}/dora_vad.egg-info/dependency_links.txt +0 -0
- {dora_vad-0.3.10rc0 → dora_vad-0.3.11rc1}/dora_vad.egg-info/entry_points.txt +0 -0
- {dora_vad-0.3.10rc0 → dora_vad-0.3.11rc1}/dora_vad.egg-info/top_level.txt +0 -0
- {dora_vad-0.3.10rc0 → dora_vad-0.3.11rc1}/setup.cfg +0 -0
@@ -1,12 +1,12 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.4
|
2
2
|
Name: dora-vad
|
3
|
-
Version: 0.3.
|
3
|
+
Version: 0.3.11rc1
|
4
4
|
Summary: Dora Node for Text translating using Argostranslate
|
5
5
|
Author-email: Haixuan Xavier Tao <tao.xavier@outlook.com>
|
6
6
|
License: MIT
|
7
7
|
Requires-Python: >=3.8
|
8
8
|
Description-Content-Type: text/markdown
|
9
|
-
Requires-Dist: dora-rs>=0.3.
|
9
|
+
Requires-Dist: dora-rs>=0.3.9
|
10
10
|
Requires-Dist: numpy<2.0.0
|
11
11
|
Requires-Dist: silero-vad>=5.1
|
12
12
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
"""TODO: Add docstring."""
|
2
|
+
|
1
3
|
import os
|
2
4
|
|
3
5
|
import numpy as np
|
@@ -7,14 +9,15 @@ from dora import Node
|
|
7
9
|
from silero_vad import get_speech_timestamps, load_silero_vad
|
8
10
|
|
9
11
|
model = load_silero_vad()
|
10
|
-
MIN_SILENCE_DURATION_MS = int(os.getenv("MIN_SILENCE_DURATION_MS", "
|
12
|
+
MIN_SILENCE_DURATION_MS = int(os.getenv("MIN_SILENCE_DURATION_MS", "200"))
|
11
13
|
MIN_SPEECH_DURATION_MS = int(os.getenv("MIN_SPEECH_DURATION_MS", "300"))
|
12
|
-
|
13
|
-
|
14
|
-
|
14
|
+
THRESHOLD = float(os.getenv("THRESHOLD", "0.4"))
|
15
|
+
MAX_AUDIO_DURATION_S = float(os.getenv("MAX_AUDIO_DURATION_S", "75"))
|
16
|
+
MIN_AUDIO_SAMPLING_DURATION_MS = int(os.getenv("MIN_AUDIO_SAMPLING_DURATION_MS", "500"))
|
15
17
|
|
16
18
|
|
17
19
|
def main():
|
20
|
+
"""TODO: Add docstring."""
|
18
21
|
node = Node()
|
19
22
|
last_audios = []
|
20
23
|
while True:
|
@@ -26,10 +29,11 @@ def main():
|
|
26
29
|
last_audios += [audio]
|
27
30
|
last_audios = last_audios[-100:]
|
28
31
|
audio = np.concatenate(last_audios)
|
32
|
+
sr = event["metadata"].get("sample_rate", 16000)
|
29
33
|
speech_timestamps = get_speech_timestamps(
|
30
34
|
torch.from_numpy(audio),
|
31
35
|
model,
|
32
|
-
threshold=
|
36
|
+
threshold=THRESHOLD,
|
33
37
|
min_speech_duration_ms=MIN_SPEECH_DURATION_MS,
|
34
38
|
min_silence_duration_ms=MIN_SILENCE_DURATION_MS,
|
35
39
|
)
|
@@ -37,16 +41,20 @@ def main():
|
|
37
41
|
# Check ig there is timestamp
|
38
42
|
if (
|
39
43
|
len(speech_timestamps) > 0
|
40
|
-
and len(
|
44
|
+
and len(audio) > MIN_AUDIO_SAMPLING_DURATION_MS * sr / 1000
|
41
45
|
):
|
42
46
|
# Check if the audio is not cut at the end. And only return if there is a long time spent
|
43
47
|
if speech_timestamps[-1]["end"] == len(audio):
|
48
|
+
node.send_output(
|
49
|
+
"timestamp_start",
|
50
|
+
pa.array([speech_timestamps[-1]["start"]]),
|
51
|
+
)
|
44
52
|
continue
|
45
53
|
audio = audio[0 : speech_timestamps[-1]["end"]]
|
46
|
-
node.send_output("audio", pa.array(audio))
|
54
|
+
node.send_output("audio", pa.array(audio), metadata={"sample_rate": sr})
|
47
55
|
last_audios = [audio[speech_timestamps[-1]["end"] :]]
|
48
56
|
|
49
57
|
# If there is no sound for too long return the audio
|
50
|
-
elif len(last_audios) >
|
51
|
-
node.send_output("audio", pa.array(audio))
|
58
|
+
elif len(last_audios) > MAX_AUDIO_DURATION_S:
|
59
|
+
node.send_output("audio", pa.array(audio), metadata={"sample_rate": sr})
|
52
60
|
last_audios = []
|
@@ -1,12 +1,12 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.4
|
2
2
|
Name: dora-vad
|
3
|
-
Version: 0.3.
|
3
|
+
Version: 0.3.11rc1
|
4
4
|
Summary: Dora Node for Text translating using Argostranslate
|
5
5
|
Author-email: Haixuan Xavier Tao <tao.xavier@outlook.com>
|
6
6
|
License: MIT
|
7
7
|
Requires-Python: >=3.8
|
8
8
|
Description-Content-Type: text/markdown
|
9
|
-
Requires-Dist: dora-rs>=0.3.
|
9
|
+
Requires-Dist: dora-rs>=0.3.9
|
10
10
|
Requires-Dist: numpy<2.0.0
|
11
11
|
Requires-Dist: silero-vad>=5.1
|
12
12
|
|
@@ -1,17 +1,28 @@
|
|
1
1
|
[project]
|
2
2
|
name = "dora-vad"
|
3
|
-
version = "0.3.
|
3
|
+
version = "0.3.11-rc1"
|
4
4
|
description = "Dora Node for Text translating using Argostranslate"
|
5
5
|
authors = [{ name = "Haixuan Xavier Tao", email = "tao.xavier@outlook.com" }]
|
6
6
|
license = { text = "MIT" }
|
7
7
|
readme = "README.md"
|
8
8
|
requires-python = ">=3.8"
|
9
9
|
|
10
|
-
dependencies = ["dora-rs >= 0.3.
|
11
|
-
|
10
|
+
dependencies = ["dora-rs >= 0.3.9", "numpy < 2.0.0", "silero-vad >= 5.1"]
|
12
11
|
|
13
12
|
[dependency-groups]
|
14
13
|
dev = ["pytest >=8.1.1", "ruff >=0.9.1"]
|
15
14
|
|
16
15
|
[project.scripts]
|
17
16
|
dora-vad = "dora_vad.main:main"
|
17
|
+
|
18
|
+
[tool.ruff.lint]
|
19
|
+
extend-select = [
|
20
|
+
"D", # pydocstyle
|
21
|
+
"UP", # Ruff's UP rule
|
22
|
+
"PERF", # Ruff's PERF rule
|
23
|
+
"RET", # Ruff's RET rule
|
24
|
+
"RSE", # Ruff's RSE rule
|
25
|
+
"NPY", # Ruff's NPY rule
|
26
|
+
"N", # Ruff's N rule
|
27
|
+
"I", # Ruff's I rule
|
28
|
+
]
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|