[1305]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.youkuaiyun.com/jaja1223/article/details/134991210
https://blog.youkuaiyun.com/u010751000/article/details/130333856
https://blog.youkuaiyun.com/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.youkuaiyun.com/gitblog_00489/article/details/141049036
https://zhuanlan.zhihu.com/p/690424577

Whisper是一个基于Python语言开发的分布式消息传递系统,它具有高可靠、高效率、高灵活性等优势,被广泛应用于互联网领域的消息推送、数据同步、实时计算等场景。下面是Whisper搭建教程。 一、安装Python和pip Whisper是基于Python语言开发的,因此需要安装Python 2.6.6或更高版本,同时也需安装Python包管理工具pip,可以使用以下命令进行安装: sudo apt-get install python-pip 二、安装Whisper 使用pip进行安装: sudo pip install whisper 三、创建Whisper数据存储目录 在创建Whisper数据存储目录前,需要先创建数据目录和日志目录: sudo mkdir -p /opt/graphite/storage/whisper /opt/graphite/storage/log 然后修改这两个目录的权限: sudo chown -R www-data /opt/graphite/storage sudo chmod 0775 /opt/graphite/storage /opt/graphite/storage/whisper /opt/graphite/storage/log 四、安装Carbon Carbon是Whisper的守护进程,用于接收、存储和查询Whisper数据,可以使用以下命令进行安装: sudo pip install carbon 然后运行Carbon的安装脚本: sudo /opt/graphite/bin/carbon-cache.py start 五、安装Web应用 Graphite-web是Whisper的Web应用,可用于查看和分析Whisper数据,可以使用以下命令进行安装: sudo pip install graphite-web 六、修改配置文件 修改Carbon的配置文件/opt/graphite/conf/carbon.conf,将以下内容复制到文件末尾: [whisper] enabled = True data_dir = /opt/graphite/storage/whisper 修改Graphite-web的配置文件/opt/graphite/webapp/graphite/local_settings.py,将以下内容修改为自己的数据库信息: DATABASES = { 'default': { 'NAME': 'graphite', 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'USER': 'graphite', 'PASSWORD': 'your_password', 'HOST': '127.0.0.1', 'PORT': '' } } 七、启动服务 重启Carbon服务: sudo /opt/graphite/bin/carbon-cache.py stop sudo /opt/graphite/bin/carbon-cache.py start 启动Web应用: sudo /opt/graphite/bin/run-graphite-devel-server.py /opt/graphite/ 八、访问Web页面 通过浏览器访问http://your_server_ip:8888,即可打开Graphite-web的主页。在这里,你可以创建图表、查询Whisper数据、设置阈值等操作。 总结:通过以上步骤,我们就可以轻松搭建自己的Whisper分布式消息传递系统,并通过Graphite-web进行快速数据查询和分析,在互联网领域的消息推送、数据同步、实时计算等场景中大放异彩。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

周小董

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值