当前位置:AIGC资讯 > AIGC > 正文

[1305]whisper(音转文)使用教程

文章目录

实时录制音频并转录 faster-whisper使用教程

github:https://github.com/openai/whisper
https://gitcode.com/gh_mirrors/whisp/whisper/overview
https://github.com/jhj0517/Whisper-WebUI

安装Whisper
pip install -U openai-whisper

此外你还需要安装ffmpeg。

下载模型:

Whisper提供了多种大小的模型,您可以根据需要下载。例如,要下载large-v2模型,可以使用以下命令:

wget https://openaipublic.azureedge.net/main/whisper/models/81f7c96c852ee8fc832187b0132e569d6c3065a3252ed18e56effd0b6a73e524/large-v2.pt

模型文件通常保存在~/.cache/whisper/目录下。

Openai whisper模型下载链接,包括medium(中型),large-v1、large-v2、large-v3

medium:https://openaipublic.azureedge.net/main/whisper/models/345ae4da62f9b3d59415adc60127b97c714f32e89e936602e85993674d08dcb1/medium.pt

large-v1: https://openaipublic.azureedge.net/main/whisper/models/e4b87e7e0bf463eb8e6956e646f1e277e901512310def2c24bf0e11bd3c28e9a/large-v1.pt   

large-v2: https://openaipublic.azureedge.net/main/whisper/models/81f7c96c852ee8fc832187b0132e569d6c3065a3252ed18e56effd0b6a73e524/large-v2.pt

large-v3:https://openaipublic.azureedge.net/main/whisper/models/e5b1a55b89c1367dacf97e3e19bfd829a01529dbfdeefa8caeb59b3f1b81dadb/large-v3.pt


{
    "tiny.en": "https://openaipublic.azureedge.net/main/whisper/models/d3dd57d32accea0b295c96e26691aa14d8822fac7d9d27d5dc00b4ca2826dd03/tiny.en.pt",
    "tiny": "https://openaipublic.azureedge.net/main/whisper/models/65147644a518d12f04e32d6f3b26facc3f8dd46e5390956a9424a650c0ce22b9/tiny.pt",
    "base.en": "https://openaipublic.azureedge.net/main/whisper/models/25a8566e1d0c1e2231d1c762132cd20e0f96a85d16145c3a00adf5d1ac670ead/base.en.pt",
    "base": "https://openaipublic.azureedge.net/main/whisper/models/ed3a0b6b1c0edf879ad9b11b1af5a0e6ab5db9205f891f668f8b0e6c6326e34e/base.pt",
    "small.en": "https://openaipublic.azureedge.net/main/whisper/models/f953ad0fd29cacd07d5a9eda5624af0f6bcf2258be67c92b79389873d91e0872/small.en.pt",
    "small": "https://openaipublic.azureedge.net/main/whisper/models/9ecf779972d90ba49c06d968637d720dd632c55bbf19d441fb42bf17a411e794/small.pt",
    "medium.en": "https://openaipublic.azureedge.net/main/whisper/models/d7440d1dc186f76616474e0ff0b3b6b879abc9d1a4926b7adfa41db2d497ab4f/medium.en.pt",
    "medium": "https://openaipublic.azureedge.net/main/whisper/models/345ae4da62f9b3d59415adc60127b97c714f32e89e936602e85993674d08dcb1/medium.pt",
    "large-v1": "https://openaipublic.azureedge.net/main/whisper/models/e4b87e7e0bf463eb8e6956e646f1e277e901512310def2c24bf0e11bd3c28e9a/large-v1.pt",
    "large-v2": "https://openaipublic.azureedge.net/main/whisper/models/81f7c96c852ee8fc832187b0132e569d6c3065a3252ed18e56effd0b6a73e524/large-v2.pt",
    "large-v3": "https://openaipublic.azureedge.net/main/whisper/models/e5b1a55b89c1367dacf97e3e19bfd829a01529dbfdeefa8caeb59b3f1b81dadb/large-v3.pt",
    "large": "https://openaipublic.azureedge.net/main/whisper/models/e5b1a55b89c1367dacf97e3e19bfd829a01529dbfdeefa8caeb59b3f1b81dadb/large-v3.pt",
}
使用Whisper进行语音识别
import whisper

# 加载模型
model = whisper.load_model("large-v2")
# 转录音频文件
result = model.transcribe("path_to_your_audio_file.wav")
# 打印识别结果
print(result["text"])

首先,我们建议使用Whisper的large-v2模型。根据我的实测结果,这个模型的表现非常优秀,它可以识别多种语言,包括中文,而且中文识别效果非常出色。在某些文字转换的场景中,它的表现甚至优于腾讯云、阿里云。

实时录制音频并转录

import pyaudio
import wave
import numpy as np
from pydub import AudioSegment
from audioHandle import addAudio_volume,calculate_volume
from faster_whisper import WhisperModel

model_size = "large-v3"

# Run on GPU with FP16
model = WhisperModel(model_size, device="cuda", compute_type="float16")

def GetIndex():
    p = pyaudio.PyAudio()
    # 要找查的设备名称中的关键字
    target = '立体声混音'
    for i in range(p.get_device_count()):
        devInfo = p.get_device_info_by_index(i)
        # if devInfo['hostApi'] == 0:
        if devInfo['name'].find(target) >= 0 and devInfo['hostApi'] == 0:
            print(devInfo)
            print(devInfo['index'])
            return devInfo['index']
    return -1
# 配置
FORMAT = pyaudio.paInt16  # 数据格式
CHANNELS = 1 # 声道数
RATE = 16000  # 采样率
CHUNK = 1024  # 数据块大小
RECORD_SECONDS = 5  # 录制时长
WAVE_OUTPUT_FILENAME = "output3.wav"  # 输出文件
DEVICE_INDEX = GetIndex() # 设备索引,请根据您的系统声音设备进行替换
if DEVICE_INDEX==-1:
    print('请打开立体声混音')
audio = pyaudio.PyAudio()

# 开始录制
stream = audio.open(format=FORMAT, channels=CHANNELS,
                    rate=RATE, input=True,
                    frames_per_buffer=CHUNK, input_device_index=DEVICE_INDEX)
data = stream.read(CHUNK)
print("recording...")

frames = []

moreDatas=[]
maxcount=3
count=0
while True:
    # 初始化一个空的缓冲区

    datas = []
    for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):

        data = stream.read(CHUNK)

        audio_data = np.frombuffer(data, dtype=np.int16)
        datas.append(data)


        # 计算音频的平均绝对值
        volume = np.mean(np.abs(audio_data))
        # 将音量级别打印出来
        print("音量级别:", volume)
    moreDatas.append(datas)

    if len(moreDatas)>maxcount:
        moreDatas.pop(0)
    newDatas=[i for j in moreDatas for i in j]
    buffers=b''
    for buffer in newDatas:
        buffers+=buffer

    print('开始识别')
    buffers=np.frombuffer(buffers, dtype=np.int16)
   # a = np.ndarray(buffer=np.array(datas), dtype=np.int16, shape=(CHUNK,))
    segments, info = model.transcribe(np.array(buffers), language="en")
    text=''
    for segment in segments:
        print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
        text+=segment.text
    print(text)
print("finished recording")

# 停止录制
stream.stop_stream()
stream.close()
audio.terminate()

# 保存录音
wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(audio.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()

#addAudio_volume(WAVE_OUTPUT_FILENAME)

配置麦克风输入
在开始语音识别之前,您需要配置麦克风输入。您可以使用Python的pyaudio库来捕获麦克风输入。例如:

import pyaudio
p = pyaudio.PyAudio()
stream = p.open(format=pyaudio.paInt16, channels=1, rate=16000, input=True, frames_per_buffer=1024)
stream.start_stream()

创建语音识别器对象
接下来,您需要创建一个语音识别器对象。您可以使用Whisper库的create_recognizer函数来创建它。例如:

recognizer = whisper.create_recognizer()

开始语音识别
现在,您可以开始进行语音识别了。您可以使用recognizer对象的listen方法来捕获音频输入,并使用recognizer对象的recognize方法来识别音频内容。例如:

audio = recognizer.listen(stream)
text = recognizer.recognize(audio)

处理识别结果
最后,您可以处理识别结果。例如,您可以将识别的文本输出到控制台或将其保存到文件中。例如:

print(text)  # 输出到控制台

faster-whisper使用教程

github:https://github.com/SYSTRAN/faster-whisper
https://gitcode.com/gh_mirrors/fas/faster-whisper/overview
https://github.com/ycyy/faster-whisper-webui

Faster Whisper 是一个基于 CTranslate2 的 OpenAI Whisper 模型的重新实现。它是一个快速推理引擎,用于 Transformer 模型,相比 OpenAI 的 Whisper 模型,速度提升了 4 倍。该项目支持 Windows、Linux 和 macOS 平台,并且提供了多种优化选项,如 FP16 和 INT8 计算类型,以适应不同的硬件环境。

安装

pip install faster-whisper

样例

import os
os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"

from faster_whisper import WhisperModel


model_size = "large-v3"  # 选择模型大小,这里使用的是较大的模型版本
device = "cuda"  # 在GPU上运行则设置为"cuda",如果CPU运行则设置为"cpu"
compute_type = "float16"  # 使用FP16计算类型进行高效计算

# model = WhisperModel(model_size, device=device, compute_type=compute_type)
# 或在CPU上以INT8模式运行
model = WhisperModel(model_size, device="cpu", compute_type="int8")

# file_name = "./data/rich_text_example_1.wav"
file_name = "./data/2.mp3"
# 对音频文件进行转录,beam_size参数影响转录的精度和速度
segments, info = model.transcribe(file_name, beam_size=5)
# 输出检测到的语言和置信度
print("Detected language '%s' with probability %f" % (info.language, info.language_probability))

for segment in segments:
    # 输出每个转录段的内容和时间信息
    print("[% 2fs -> % 2fs] %s" % (segment.start, segment.end, segment.text))

whisper参考:https://www.bilibili.com/read/cv28169729/
https://blog.csdn.net/jaja1223/article/details/134991210
https://blog.csdn.net/u010751000/article/details/130333856
https://blog.csdn.net/qq_51116518/article/details/136864350
https://zhuanlan.zhihu.com/p/692375653
https://developer.baidu.com/article/detail.html?id=2850876
https://cloud.tencent.com/developer/article/2421076

whisper-webui使用教程:https://post.smzdm.com/p/a3052kz7/

faster-whisper参考:https://blog.csdn.net/gitblog_00489/article/details/141049036
https://zhuanlan.zhihu.com/p/690424577

总结

### 文章总结:实时录制音频并转录的Faster Whisper使用指南
#### 一、引言
本文介绍了如何使用Faster Whisper这一基于OpenAI Whisper模型的快速推理引擎,来实现实时音频录制与转录的功能。Faster Whisper利用CTranslate2优化了Transformer模型,提供了较高的语音识别速度和精度,支持Windows、Linux和macOS平台。
#### 二、安装准备
1. **安装Whisper**:
- 通过pip安装`openai-whisper`库:`pip install -U openai-whisper`
- 下载并配置Whisper模型文件(如`large-v2`、`large-v3`等),模型文件可以从相关链接下载并保存在`~/.cache/whisper/`目录下。
2. **Faster Whisper安装**:
- 通过pip安装Faster Whisper:`pip install faster-whisper`
#### 三、使用Whisper进行语音识别
1. **加载模型和转录音频文件**:
- 使用`whisper.load_model()`加载选定的模型(如`large-v2`)。
- 使用模型的`transcribe()`方法对音频文件进行转录。
2. **实时录制并转录音频**:
- 使用`pyaudio`库进行麦克风输入配置。
- 配置音频格式、采样率、声道数和数据块大小等参数。
- 利用Whisper(或通过Faster Whisper的模拟方式)对录制的音频数据进行实时转录处理。
#### 四、Faster Whisper的功能与优势
1. **快速推理**:
- Faster Whisper通过CTranslate2框架显著提高了Transformer模型的推理速度,可达原生Whisper的4倍。
2. **跨平台支持**:
- 支持Windows、Linux和macOS平台。
3. **硬件优化**:
- 提供多种计算类型和设备选择,如FP16和INT8计算类型,以及GPU或CPU运行选项。
#### 五、示例代码
文章提供了多个示例代码段,包括使用Whisper进行基本音频转录、实时音频录制与转录,以及Faster Whisper的安装、配置和使用示例。其中,Faster Whisper的实时音频处理示例展示了如何在GPU上使用FP16计算类型加载大模型(如`large-v3`),并通过循环读取麦克风数据进行实时转录。
#### 六、其他资源
文章末尾列出了多个参考链接,包括whisper和faster-whisper的GitHub仓库、相关教程和博客文章,帮助用户深入学习和使用这两个库。
### 结论
本文通过详细步骤和示例代码,展示了如何使用Whisper(及其优化版Faster Whisper)来实现实时音频录制和高效转录的功能。无论是对于科研人员,还是开发人员来说,这些工具都是进行智能语音处理工作的有力助手。

更新时间 2024-09-24