|
from .vad import AudioVad, AudioSegment |
|
import numpy as np |
|
from typing import List, Tuple |
|
|
|
class VoiceActivityDetector: |
|
""" |
|
VAD检测器,用于检测音频中的语音片段 |
|
这是一个包装类,内部使用AudioVad实现功能 |
|
""" |
|
|
|
def __init__(self, save_audio=True, save_json=True): |
|
""" |
|
初始化VAD检测器 |
|
|
|
:param save_audio: 是否保存分段音频 |
|
:param save_json: 是否保存JSON元数据 |
|
""" |
|
self.vad = AudioVad( |
|
save_audio=save_audio, |
|
save_json=save_json, |
|
output_dir="dataset/audio/segments", |
|
json_dir="dataset/audio/metadata" |
|
) |
|
|
|
def detect_voice_segments(self, audio_data: np.ndarray, sample_rate: int) -> List[Tuple[float, float]]: |
|
""" |
|
检测音频中的语音片段 |
|
|
|
:param audio_data: 音频数据 |
|
:param sample_rate: 采样率 |
|
:return: 语音片段列表,每个片段为(开始时间, 结束时间)的元组 |
|
""" |
|
segments = self.vad.process_audio_data(audio_data, sample_rate) |
|
return [(segment.start_time, segment.end_time) for segment in segments] |
|
|
|
__all__ = ['AudioVad', 'AudioSegment', 'VoiceActivityDetector'] |
|
|