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.
@@ -1,12 +1,12 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: dora-vad
3
- Version: 0.3.10rc0
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.6
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
  # Define the path to the README file relative to the package directory
@@ -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", "100"))
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
- MIN_AUDIO_SAMPLING_DURAION_S = int(os.getenv("MAX_AUDIO_DURATION_S", "20"))
14
- MAX_AUDIO_DURAION_S = int(os.getenv("MAX_AUDIO_DURATION_S", "75"))
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=0.2,
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(last_audios) > MIN_AUDIO_SAMPLING_DURAION_S
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) > 75:
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.2
1
+ Metadata-Version: 2.4
2
2
  Name: dora-vad
3
- Version: 0.3.10rc0
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.6
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,3 @@
1
- dora-rs>=0.3.6
1
+ dora-rs>=0.3.9
2
2
  numpy<2.0.0
3
3
  silero-vad>=5.1
@@ -1,17 +1,28 @@
1
1
  [project]
2
2
  name = "dora-vad"
3
- version = "0.3.10-rc0"
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.6", "numpy < 2.0.0", "silero-vad >= 5.1"]
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
+ ]
@@ -1,7 +1,10 @@
1
+ """TODO: Add docstring."""
2
+
1
3
  import pytest
2
4
 
3
5
 
4
6
  def test_import_main():
7
+ """TODO: Add docstring."""
5
8
  from dora_vad.main import main
6
9
 
7
10
  # Check that everything is working, and catch dora Runtime Exception as we're not running in a dora dataflow.
File without changes
File without changes