在快速发展的语音识别领域,实现高准确度的同时保持低延迟是一项重大挑战。OpenAI 的 Whisper 模型为自动语音识别(ASR)设定了新的基准。然而,对于资源有限的设备上的实时应用来说,其规模可能是一个障碍。
为了解决这个问题,我们可以利用 Distil-Whisper(Hugging Face 提供的 Whisper 模型的精简版),它可以缩小模型大小,同时保留其大部分性能。在本文中,我们将探讨如何使用 Distil-Whisper 实现实时语音转文字系统,直接从麦克风获取输入。此外,我们还将讨论如何集成 Redis 以实现高效的进程间通信,以及如何构建代码以实现模块化和易于集成。
系统规格
在实施过程中,我们使用了具有以下规格的系统:
主要功能
了解 Distil-Whisper
Distil-Whisper 是 OpenAI Whisper 的轻量级版本,经过精炼,速度更快,内存效率更高,同时仍能提供令人印象深刻的转录功能。因此,它适用于需要实时转录且性能至关重要的使用案例。
在本项目中,我们将 Distil-Whisper 集成到实时语音到文本管道中。主要功能包括:
项目概述
该项目的目标是创建一个实时语音转文本系统,该系统可监听麦克风输入,使用 Distil-Whisper 实时转录音频,并将转录文本发布到 Redis 服务器,供下游应用程序使用。
项目结构
├── configs
│ └── config.tomlconfig.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
入门
前提条件
第 1 步:克隆版本库
git clone https://github.com/yourusername/distil-whisper-live.gitclone 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 redisp 6379:6379 redis
第 5 步:运行应用程序
python main.pymain.py
应用程序将开始捕捉麦克风中的音频,实时执行语音到文本的转录,并将结果发布到 Redis 服务器。
工作原理
音频捕获
audio_src.py 模块使用 pyaudio 库实时捕获麦克风中的音频数据。它处理音频流初始化、读取音频数据块,并在应用程序停止时关闭音频流。
语音到文本处理
stt.py 模块使用 Hugging Face 的转换器库加载 Distil-Whisper 模型。它处理音频块,执行必要的预处理,并将数据输入模型进行转录。
噪音检测
noise_check.py 模块包含检测和过滤静音或背景噪音的功能,确保只处理重要音频,从而提高效率和准确性。
Redis Pub/Sub 通信
pubsub.py 模块负责将转录文本发布到 Redis 频道。这样,其他应用程序或服务就可以订阅该通道并实时接收转录文本,从而促进解耦和可扩展架构。
模块化设计
代码库分为多个模块,每个模块负责特定的功能。这种模块化设计使系统更易于维护、扩展和集成到更大的项目中。
性能考虑因素
GPU 利用率
如果你拥有与 CUDA 兼容的 GPU,应用程序将利用 GPU 进行模型推理,从而显著提高性能。
延迟
与完整的 Whisper 模型相比,使用 Distil-Whisper 可以缩短推理时间,从而实现适合实时应用的实时转录。
结论
通过利用 Distil-Whisper 模型并为模块化和实时处理构建应用程序,我们为实时语音到文本应用程序奠定了基础。集成 Redis 进行消息传递,为构建复杂的系统提供了可能性,这些系统可以为各种目的使用转录数据。