分享最新优惠信息
购买主机更加划算

Linux系统使用Whisper AI实现实时语音转文本实例教程

Whisper AI是由OpenAI开发的一种先进的自动语音识别 (ASR)模型,它可以将音频以惊人的准确度转录为文本,并支持多种语言进行转换。

虽然Whisper AI主要用于批处理,但它可以在Linux系统上面配置为实时语音到文本转录。在本文中,小编将简单介绍Linux系统安装、配置和运行Whisper AI进行实时转录的过程。

什么是Whisper AI?

Whisper AI是一个开源语音识别模型,经过大量音频记录数据集的训练,并且基于深度学习架构,使其能够:

  • 转录多种语言的语音
  • 高效处理口音和背景噪音
  • 将口语翻译成英语

由于它是为高精度转录而设计的,因此广泛应用于:

  • 实时转录服务(例如用于无障碍访问)
  • 语音助手与自动化
  • 转录录制的音频文件

默认情况下,Whisper AI 并未针对实时处理进行优化。然而,通过一些附加工具,它可以处理实时音频流并立即进行转录。

Whisper AI系统要求

在Linux系统上运行Whisper AI之前,请确保你的系统满足以下要求:

硬件要求:

  • CPU:多核处理器(Intel/AMD)
  • RAM:至少8GB(建议16GB或更多)
  • GPU:带有CUDA的NVIDIA GPU(不必须,但使用的话可显著加快处理速度)
  • 存储:至少10GB的可用磁盘空间用于存储模型和依赖项

软件要求:

  • Linux发行版,例如Ubuntu、Debian、Arch、Fedora等
  • Python 3.8或更高版本
  • Pip包管理器用于安装Python包
  • FFmpeg用于处理音频文件和流

步骤1、安装所需的依赖项

在安装Whisper AI之前,请更新软件包列表并升级现有软件包,命令如下:

sudo apt update  [Ubuntu系统] 
sudo dnf update -y  [Fedora系统] 
sudo pacman -Syu  [Arch系统]

接下来需要安装Python 3.8或更高版本和Pip包管理器,命令如下:

sudo apt install python3 python3-pip python3-venv -y  [Ubuntu系统] 
sudo dnf install python3 python3-pip python3-virtualenv -y  [Fedora系统] 
sudo pacman -S python python-pip python-virtualenv  [Arch系统] 

最后需要安装FFmpeg,这是一个用于处理音频和视频文件的多媒体框架:

sudo apt install ffmpeg  [在Ubuntu系统] 
sudo dnf install ffmpeg  [在Fedora系统] 
sudo pacman -S ffmpeg  [Arch系统]

步骤2、在Linux中安装Whisper AI

安装所需依赖项后,可以继续在虚拟环境中安装Whisper AI,该环境允许安装Python包而不会影响系统包:

python3 -m venv whisper_env
source whisper_env/bin/activate
pip install openai-whisper

在Linux上安装Whisper AI

安装完成后,运行以下命令检查Whisper AI是否正确安装:

whisper --help

这将显示一个包含可用命令和选项的帮助菜单,这意味着Whisper AI已成功安装并可以使用:

在Linux上检查Whisper AI

步骤3、在Linux中运行Whisper AI

一旦安装了Whisper AI,现在就可以开始使用不同的命令转录音频文件。

要转录音频文件(例如audio.mp3),请运行以下命令:

whisper audio.mp3

Whisper将处理该文件并生成文本格式的转录内容:

转录音频文件

现在所有内容都准备就绪,这里可以创建一个Python脚本,从麦克风捕获音频并实时转录:

nano real_time_transcription.py

将以下代码复制粘贴到该文件中(以下代码仅供参考,可以根据系统性能和实际使用情况灵活调整):

import sounddevice as sd
import numpy as np
import whisper
import queue
import threading
import wave
import io
import time

# ------------------ Whisper Model ------------------
print("Loading Whisper model...")
model = whisper.load_model("base")
print("Whisper model loaded.")

# ------------------ Audio Parameters ------------------
SAMPLE_RATE = 16000  # Whisper 需要16k采样率
BUFFER_SIZE = 1024   # 录音缓冲区
CHANNELS = 1         # 单声道

# 限制队列大小,防止音频数据积压
audio_queue = queue.Queue(maxsize=10)

def audio_callback(indata, frames, time, status):
    """麦克风音频回调函数"""
    if status:
        print(f"Audio callback status: {status}")
    try:
        audio_queue.put_nowait(indata.copy())  #复制数据,避免被覆盖
    except queue.Full:
        print("Warning: Audio queue is full, dropping frames.")  #避免队列积压

def save_audio_to_memory(audio_data):
    """将NumPy音频数据转换为WAV格式(存储在内存)"""
    wav_io = io.BytesIO()
    with wave.open(wav_io, 'wb') as wf:
        wf.setnchannels(CHANNELS)
        wf.setsampwidth(2)  # 16-bit PCM
        wf.setframerate(SAMPLE_RATE)
        wf.writeframes(audio_data.astype(np.int16).tobytes())
    return wav_io.getvalue()

def transcribe_audio():
    """线程:从队列中获取音频数据,并进行转录"""
    while True:
        try:
            audio_data = audio_queue.get(timeout=2)  # 获取音频数据
            buffer = [audio_data]

            while not audio_queue.empty():
                buffer.append(audio_queue.get())

            # 合并音频数据
            audio_data = np.concatenate(buffer, axis=0)

            # 转换为 WAV 格式(存储在内存)
            wav_bytes = save_audio_to_memory(audio_data)

            # Whisper 进行转录
            result = model.transcribe(io.BytesIO(wav_bytes), language="zh")

            if result["text"].strip():
                print(f"[{time.strftime('%H:%M:%S')}] Transcription: {result['text']}")  # 输出转录结果

        except queue.Empty:
            continue  # 没有数据就继续等待

# ------------------ 启动转录线程 ------------------
transcription_thread = threading.Thread(target=transcribe_audio, daemon=True)
transcription_thread.start()

# 这里设置 `dtype="float32"` 让Whisper处理更精准
with sd.InputStream(callback=audio_callback, channels=CHANNELS, samplerate=SAMPLE_RATE, blocksize=BUFFER_SIZE, dtype="float32"):
    print("Listening... Press Ctrl+C to stop.")
    try:
        while True:
            time.sleep(0.1)  # 避免CPU过载
    except KeyboardInterrupt:
        print("\nStopping...")

使用Python执行脚本,它将开始监听麦克风输入并实时显示转录的文本:

python3 real_time_transcription.py

这时对着麦克风清晰地说话,应该能够看到终端上输出对应转录文本文字。

结论

Whisper AI是一个强大的语音转文本工具,可以适用于Linux进行实时转录。当然,为了获得最佳效果,建议使用GPU并优化系统以实现实时处理。

总的来说,Whisper AI的实时语音转文本技术极大地提升了语音数据的可用性,为各个行业带来了更高的生产力和便利性。

未经允许不得转载:惠主机 » Linux系统使用Whisper AI实现实时语音转文本实例教程