Faster-whisper + Silero-VAD 实时语音转录

Faster-whisper + Silero-VAD 实时语音转录

在语音识别任务中,如何将语音数据实时转录为文本是一个常见且重要的需求。Faster-whisper 和 Silero-VAD(语音活动检测器)是两个强大的工具,可以结合起来进行实时的语音转录。本文将详细介绍如何结合这两个工具,构建一个高效的实时语音转录系统。

目录

  1. 什么是 Faster-whisper 和 Silero-VAD
  2. 安装 Faster-whisper 和 Silero-VAD
  3. 如何使用 Faster-whisper 进行语音转录
  4. 如何使用 Silero-VAD 检测语音活动
  5. 结合 Faster-whisper 和 Silero-VAD 实现实时语音转录
  6. 完整代码示例
  7. 图解:实时语音转录工作流程
  8. 总结

1. 什么是 Faster-whisper 和 Silero-VAD?

Faster-whisper

Faster-whisper 是一个基于 OpenAI Whisper 模型的快速语音转录工具,旨在提供低延迟和高性能的语音转录服务。它通过优化模型推理过程,能够在高效地处理语音数据的同时,保持较低的延时。Faster-whisper 可以支持多种语言的转录,并且具有自动语言识别能力。

Silero-VAD

Silero-VAD 是一个语音活动检测器(VAD),能够实时检测音频流中是否存在语音活动。通过在实时语音转录中加入 VAD,可以有效地减少非语音部分的计算负担,并提高转录的准确性。Silero-VAD 的优势在于其高效性和较低的计算资源需求,能够非常适合实时应用。


2. 安装 Faster-whisper 和 Silero-VAD

在开始之前,我们需要安装两个库:faster-whispersilero-vad

安装 Faster-whisper

Faster-whisper 依赖于 PyTorch 和一些其他的音频处理库。可以通过以下命令进行安装:

pip install faster-whisper

安装 Silero-VAD

Silero-VAD 也是基于 PyTorch 构建的,安装非常简单。可以使用以下命令:

pip install silero-vad

3. 如何使用 Faster-whisper 进行语音转录

Faster-whisper 主要通过加载预训练的 Whisper 模型进行语音转录。它支持多种语言,并能自动检测语音中的语言。以下是如何使用 Faster-whisper 进行语音转录的简单示例。

代码示例

from faster_whisper import WhisperModel

# 加载 Whisper 模型
model = WhisperModel("base")

# 加载音频文件并进行转录
audio_path = "path_to_audio_file.wav"
segments, _ = model.transcribe(audio_path)

# 输出转录结果
for segment in segments:
    print(f"Transcription: {segment.text}")

代码解释

  1. 加载模型:通过 WhisperModel("base") 加载预训练的 Whisper 模型。
  2. 转录音频:通过 transcribe() 方法处理音频文件,并返回转录结果。
  3. 输出结果:遍历返回的 segments,并打印出转录文本。

4. 如何使用 Silero-VAD 检测语音活动

Silero-VAD 用于检测音频中的语音活动,能够区分音频中的语音部分和非语音部分。这样可以帮助我们在实时语音转录时,只有在有语音时才进行计算,提高效率。

代码示例

import torch
import torchaudio
from silero_vad import VAD

# 加载 Silero VAD 模型
vad_model = VAD()

# 加载音频文件
waveform, sample_rate = torchaudio.load("path_to_audio_file.wav")

# 进行 VAD 检测
vad_output = vad_model(waveform)

# 打印 VAD 检测结果
print("Detected Speech Segments:", vad_output)

代码解释

  1. 加载模型:通过 VAD() 方法加载 Silero 的语音活动检测模型。
  2. 加载音频文件:使用 torchaudio.load() 方法加载音频文件。
  3. 进行语音活动检测:使用 VAD 模型对音频进行语音活动检测,vad_output 会返回检测到的语音段。
  4. 输出检测结果:打印出音频中的语音段。

5. 结合 Faster-whisper 和 Silero-VAD 实现实时语音转录

我们将 Faster-whisper 和 Silero-VAD 结合起来,实现在音频中检测语音活动并实时转录的功能。具体步骤如下:

  1. 使用 Silero-VAD 检测语音活动,只处理音频中的语音部分。
  2. 使用 Faster-whisper 转录语音,确保转录过程中仅处理有效的语音段。

完整代码示例

import torch
import torchaudio
from faster_whisper import WhisperModel
from silero_vad import VAD

# 初始化 Whisper 模型和 VAD 模型
whisper_model = WhisperModel("base")
vad_model = VAD()

# 加载音频流(这里模拟音频文件读取,可以替换为麦克风输入)
waveform, sample_rate = torchaudio.load("path_to_audio_file.wav")

# 对音频进行语音活动检测
vad_output = vad_model(waveform)

# 实时转录语音
for segment in vad_output:
    # 提取语音段
    start_time = segment[0]
    end_time = segment[1]
    segment_audio = waveform[:, int(start_time * sample_rate): int(end_time * sample_rate)]
    
    # 使用 Whisper 模型进行转录
    segments, _ = whisper_model.transcribe(segment_audio)
    for segment in segments:
        print(f"Transcription: {segment.text}")

代码解释

  1. 加载音频:通过 torchaudio.load() 加载音频文件。可以根据实际需求更改为麦克风输入。
  2. 进行语音活动检测:使用 Silero-VAD 对音频进行语音活动检测,返回语音段的时间戳。
  3. 提取语音段并转录:对每个检测到的语音段,通过 Faster-whisper 进行转录,并输出转录结果。

6. 图解:实时语音转录工作流程

[音频输入] --> [Silero-VAD检测语音活动] --> [提取语音段] --> [Faster-whisper转录语音] --> [输出转录文本]

图 1:实时语音转录的工作流程


7. 总结

通过结合使用 Faster-whisper 和 Silero-VAD,我们可以构建一个高效且实时的语音转录系统。Silero-VAD 帮助我们检测语音活动,仅对语音部分进行处理,从而提高了计算效率,而 Faster-whisper 提供了强大的语音转录能力,能够快速地将语音转换为文本。

这种结合方案特别适用于实时语音转录任务,如语音助手、会议记录、实时字幕等应用场景。在实际应用中,用户可以根据自己的需求调整模型和代码,优化转录效果和实时性。

评论已关闭

推荐阅读

DDPG 模型解析,附Pytorch完整代码
2024年11月24日
DQN 模型解析,附Pytorch完整代码
2024年11月24日
AIGC实战——Transformer模型
2024年12月01日
Socket TCP 和 UDP 编程基础(Python)
2024年11月30日
python , tcp , udp
如何使用 ChatGPT 进行学术润色?你需要这些指令
2024年12月01日
AI
最新 Python 调用 OpenAi 详细教程实现问答、图像合成、图像理解、语音合成、语音识别(详细教程)
2024年11月24日
ChatGPT 和 DALL·E 2 配合生成故事绘本
2024年12月01日
omegaconf,一个超强的 Python 库!
2024年11月24日
【视觉AIGC识别】误差特征、人脸伪造检测、其他类型假图检测
2024年12月01日
[超级详细]如何在深度学习训练模型过程中使用 GPU 加速
2024年11月29日
Python 物理引擎pymunk最完整教程
2024年11月27日
MediaPipe 人体姿态与手指关键点检测教程
2024年11月27日
深入了解 Taipy:Python 打造 Web 应用的全面教程
2024年11月26日
基于Transformer的时间序列预测模型
2024年11月25日
Python在金融大数据分析中的AI应用(股价分析、量化交易)实战
2024年11月25日
AIGC Gradio系列学习教程之Components
2024年12月01日
Python3 `asyncio` — 异步 I/O,事件循环和并发工具
2024年11月30日
llama-factory SFT系列教程:大模型在自定义数据集 LoRA 训练与部署
2024年12月01日
Python 多线程和多进程用法
2024年11月24日
Python socket详解,全网最全教程
2024年11月27日