Spaces:
Running
Running
Do not parallelize period vad
Browse files- src/vad.py +10 -0
- src/vadParallel.py +1 -1
src/vad.py
CHANGED
|
@@ -77,6 +77,12 @@ class AbstractTranscription(ABC):
|
|
| 77 |
def get_audio_segment(self, str, start_time: str = None, duration: str = None):
|
| 78 |
return load_audio(str, self.sampling_rate, start_time, duration)
|
| 79 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 80 |
@abstractmethod
|
| 81 |
def get_transcribe_timestamps(self, audio: str, config: TranscriptionConfig, start_time: float, end_time: float):
|
| 82 |
"""
|
|
@@ -462,6 +468,10 @@ class VadPeriodicTranscription(AbstractTranscription):
|
|
| 462 |
def __init__(self, sampling_rate: int = 16000):
|
| 463 |
super().__init__(sampling_rate=sampling_rate)
|
| 464 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 465 |
def get_transcribe_timestamps(self, audio: str, config: PeriodicTranscriptionConfig, start_time: float, end_time: float):
|
| 466 |
result = []
|
| 467 |
|
|
|
|
| 77 |
def get_audio_segment(self, str, start_time: str = None, duration: str = None):
|
| 78 |
return load_audio(str, self.sampling_rate, start_time, duration)
|
| 79 |
|
| 80 |
+
def is_transcribe_timestamps_fast(self):
|
| 81 |
+
"""
|
| 82 |
+
Determine if get_transcribe_timestamps is fast enough to not need parallelization.
|
| 83 |
+
"""
|
| 84 |
+
return False
|
| 85 |
+
|
| 86 |
@abstractmethod
|
| 87 |
def get_transcribe_timestamps(self, audio: str, config: TranscriptionConfig, start_time: float, end_time: float):
|
| 88 |
"""
|
|
|
|
| 468 |
def __init__(self, sampling_rate: int = 16000):
|
| 469 |
super().__init__(sampling_rate=sampling_rate)
|
| 470 |
|
| 471 |
+
def is_transcribe_timestamps_fast(self):
|
| 472 |
+
# This is a very fast VAD - no need to parallelize it
|
| 473 |
+
return True
|
| 474 |
+
|
| 475 |
def get_transcribe_timestamps(self, audio: str, config: PeriodicTranscriptionConfig, start_time: float, end_time: float):
|
| 476 |
result = []
|
| 477 |
|
src/vadParallel.py
CHANGED
|
@@ -90,7 +90,7 @@ class ParallelTranscription(AbstractTranscription):
|
|
| 90 |
total_duration = get_audio_duration(audio)
|
| 91 |
|
| 92 |
# First, get the timestamps for the original audio
|
| 93 |
-
if (cpu_device_count > 1):
|
| 94 |
merged = self._get_merged_timestamps_parallel(transcription, audio, config, total_duration, cpu_device_count, cpu_parallel_context)
|
| 95 |
else:
|
| 96 |
timestamp_segments = transcription.get_transcribe_timestamps(audio, config, 0, total_duration)
|
|
|
|
| 90 |
total_duration = get_audio_duration(audio)
|
| 91 |
|
| 92 |
# First, get the timestamps for the original audio
|
| 93 |
+
if (cpu_device_count > 1 and not transcription.is_transcribe_timestamps_fast()):
|
| 94 |
merged = self._get_merged_timestamps_parallel(transcription, audio, config, total_duration, cpu_device_count, cpu_parallel_context)
|
| 95 |
else:
|
| 96 |
timestamp_segments = transcription.get_transcribe_timestamps(audio, config, 0, total_duration)
|