基于Distil-Whisper的实时ASR【自动语音识别】

在快速发展的语音识别领域,实现高精度的同时保持低延迟是一项重大挑战。OpenAI 的 Whisper 模型为自动语音识别 (ASR) 树立了新的标杆。然而,其规模可能会成为资源受限设备上实时应用的障碍。

为了解决这个问题,我们可以利用 Distil-Whisper,这是 Hugging Face 提供的 Whisper 模型的精简版,它可以减小模型大小,同时保留其大部分性能。在这篇博文中,我们将探讨如何使用 Distil-Whisper 实现实时语音转文本系统,直接从麦克风获取输入。此外,我们将讨论集成 Redis 以实现高效的进程间通信,以及如何构建代码以实现模块化和易于集成。

对于此实现,我们的运行环境使用了具有以下规格的系统:

  • 处理器:Intel Core i7
  • 显卡:配备 6GB VRAM 的 NVIDIA GeForce RTX 2060
  • 内存:32GB DDR4 RAM
  • 存储:1TB SSD

系统的主要功能如下:

  • 实时语音转文本:麦克风输入的实时转录。
  • Redis Pub/Sub 通信:高效的消息传递,便于进一步处理。
  • 模块化代码库:组织结构,易于理解和修改。
  • 轻松集成:简化与大型项目的整合。

NSDT工具推荐Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - AI模型在线查看 - Three.js虚拟轴心开发包 - 3D模型在线减面 - STL模型在线切割 - 3D道路快速建模

1、了解 Distil-Whisper

Distil-Whisper 是 OpenAI Whisper 的轻量级版本,经过精简,速度更快、内存效率更高,同时仍提供令人印象深刻的转录功能。这使其适用于需要实时转录且性能至关重要的用例。

在此项目中,我们将 Distil-Whisper 集成到实时语音转文本管道中。主要功能包括:

  • 麦克风实时输入,用于实时转录。
  • 使用 Redis Pub/Sub 将转录文本发送到其他服务或应用程序。
  • 模块化结构,使代码易于扩展并集成到其他项目中。

2、项目概述

该项目的目标是创建一个实时语音转文本系统,该系统可监听麦克风输入,使用 Distil-Whisper 实时转录音频,并将转录文本发布到 Redis 服务器以供下游应用程序使用。

2.1 项目结构

├── configs
│   └── config.toml
├── internal
│   ├── app.py
│   ├── core
│   │   ├── audio_src.py
│   │   ├── stt.py
│   ├── server
│   │   └── pubsub.py
│   └── utils
│       ├── config.py
│       ├── logger.py
│       ├── noise_check.py
│       └── textformat.py
├── logs
│   └── server.log
├── main.py
├── README.md
└── requirements.txt
  • configs/config.toml:用于设置麦克风详细信息和其他参数的配置文件。
  • internal/app.py:应用程序逻辑的入口点。
  • internal/core:包含音频捕获和语音转文本处理等核心功能。
  • audio_src.py:处理麦克风输入。
  • stt.py:使用 Distil-Whisper 管理语音转文本转换。
  • internal/server/pubsub.py:实现 Redis Pub/Sub 进行消息通信。
  • internal/utils:用于配置管理、日志记录、噪声检测和文本格式化的实用程序模块。
  • main.py:运行应用程序的主要脚本。
  • logs/server.log:捕获应用程序运行时日志的日志文件。
  • requirements.txt:列出所有 Python 依赖项。

2、快速入门

先决条件:

  • Python 3.10 或更高版本
  • PyTorch 2.0 或更高版本
  • Redis 服务器(用于 Pub/Sub 功能)
  • Docker(可选,用于容器化开发)

步骤 1:克隆存储库

git clone https://github.com/yourusername/distil-whisper-live.git
cd distil-whisper-live

步骤 2:安装依赖项

建议使用虚拟环境来管理依赖项。

python3 -m venv venv
source venv/bin/activate  # On Windows use `venv\Scripts\activate`
pip install -r requirements.txt

步骤 3:配置应用程序

编辑 configs/config.toml 文件以匹配您的麦克风设置:

[microphone]
name = "Your Microphone Name"
sample_rate = 16000  # Adjust as needed
chunk_size = 1024

您可能需要根据您的环境调整 config.toml 中的 noise_threshold,以有效过滤背景噪音。

步骤 4:运行 Redis 服务器

确保 Redis 服务器在本地运行。您可以使用 Docker 启动一个:

docker run -p 6379:6379 redis

步骤 5:运行应用程序

python main.py

应用程序将开始从您的麦克风捕获音频,实时执行语音到文本的转录,并将结果发布到 Redis 服务器。

3、工作原理

  • 音频捕获

audio_src.py 模块使用 pyaudio 库实时捕获来自麦克风的音频数据。它处理音频流初始化、读取音频数据块以及在应用程序停止时关闭音频流。

  • 语音转文本处理

stt.py 模块使用 Hugging Face 的 transformers 库加载 Distil-Whisper 模型。它处理音频块、执行必要的预处理并将数据提供给模型进行转录。

  • 噪音检测

noise_check.py 模块包括检测和过滤静音或背景噪音的功能,确保只处理重要的音频,从而提高效率和准确性。

  • Redis 发布/订阅通信

pubsub.py 模块负责将转录的文本发布到 Redis 频道。这允许其他应用程序或服务订阅频道并实时接收转录的文本,从而促进解耦和可扩展的架构。

  • 模块化设计

代码库被组织成模块,每个模块负责特定的功能。这种模块化使系统更容易维护、扩展和集成到更大的项目中。

4、性能考虑因素

  • GPU 利用率

如果您拥有兼容 CUDA 的 GPU,应用程序将利用它进行模型推理,从而显著提高性能。

  • 延迟

通过使用 Distil-Whisper,与完整的 Whisper 模型相比,推理时间有所减少,从而实现了适合实时应用的实时转录。

5、为什么选择 Redis Pub/Sub?

Redis Pub/Sub 允许在服务之间高效地广播消息。在此项目中,转录完成后,文本将发布到 Redis 频道。订阅此频道的任何服务都可以实时接收转录。这对于以下情况特别有用:

  • 与需要实时文本输入的后端系统集成。
  • 开发需要立即转录的聊天机器人或虚拟助手。
  • 将转录输入分析管道以进行进一步处理。

6、潜在应用

  • 虚拟助手:实时转录可以增强语音控制的 AI 助手。
  • 实时字幕:为现场活动或广播提供字幕。
  • 语音命令识别:与需要语音命令进行控制的系统集成。
  • 辅助功能工具:为有听力障碍的人提供的辅助技术。

7、挑战和未来改进

  • 噪声稳健性

背景噪声仍然会影响转录准确性。未来的改进可能包括集成更先进的噪声抑制技术。

  • 模型微调

在特定数据集上微调 Distil-Whisper 模型可以提高特定领域词汇或口音的准确性。

  • 可扩展性

为了处理多个音频流或扩展服务,请考虑使用 Kubernetes 等容器编排工具部署应用程序。

8、结束语

通过利用 Distil-Whisper 模型并构建模块化和实时处理的应用程序,我们为实时语音转文本应用程序奠定了基础。集成 Redis 进行消息传递为构建复杂的系统提供了可能性,这些系统可以使用转录数据来实现各种目的。


原文链接:Distil-Whisper实时ASR - BimAnt

相关推荐
龙萱坤诺15 分钟前
AI自动评论插件V1.3 WordPress插件 自动化评论插件
运维·人工智能·自动化
BH0425090920 分钟前
VQ-VAE(2018-05:Neural Discrete Representation Learning)
人工智能·计算机视觉
蜡笔小新星28 分钟前
PyTorch的基础教程
开发语言·人工智能·pytorch·经验分享·python·深度学习·学习
OBOO鸥柏39 分钟前
OBOO鸥柏丨液晶拼接大屏分布式基本管理系统架构显示技术曝光
人工智能·分布式·科技·系统架构·交互
一颗甜苞谷1 小时前
开源一个开发的聊天应用与AI开发框架,集成 ChatGPT,支持私有部署的源码
人工智能·chatgpt·开源
爱技术的小伙子1 小时前
【ChatGPT】通过明确的角色设定提高ChatGPT输出的专业性
人工智能·chatgpt
爱技术的小伙子1 小时前
【ChatGPT】如何利用情景模拟让ChatGPT做决策分析
人工智能·chatgpt
右恩2 小时前
【人工智能】重塑未来生活与工作的引擎
人工智能·生活
大数据编程之光2 小时前
人工智能技术:塑造未来生活与工作的变革力量
人工智能·生活
写代码到不能自控2 小时前
人工智能技术的应用前景及其对生活和工作的影响
人工智能·生活