Faster-Whisper 实时识别电脑语音转文本

Faster-Whisper 实时识别电脑语音转文本

  • 前言
  • 项目
    • 搭建环境
    • 安装Faster-Whisper
    • 下载模型
    • 编写测试代码
    • 运行测试代码
    • 实时转写脚本
  • 参考

前言

以前做的智能对话软件接的Baidu API,想换成本地的,就搭一套Faster-Whisper吧。
下面是B站视频实时转写的截图
效果图

项目

搭建环境

所需要的CUDANN已经装好了,如果装的是12.2应该是包含cuBLAS了
没装的,可以从下面链接下载装一下,文末的参考视频中也有讲解
https://github.com/Purfview/whisper-standalone-win/releases/tag/libs

配置好的CUDANN

Ancanda的运行环境去Clone一下之前配好的环境,用之前BertVits的即可

安装Faster-Whisper

输入即可安装

pip install faster-whisper

下载模型

https://huggingface.co/Systran/faster-whisper-large-v3
下载完放到代码旁边就可以了
模型放代码同文件夹

编写测试代码

模型放这里

# local_files_only=True 表示加载本地模型
# model_size_or_path=path 指定加载模型路径
# device="cuda" 指定使用cuda
# compute_type="int8_float16" 量化为8位
# language="zh" 指定音频语言
# vad_filter=True 开启vad
# vad_parameters=dict(min_silence_duration_ms=1000) 设置vad参数
from faster_whisper import WhisperModelmodel_size = "large-v3"
path = r"D:\Project\Python_Project\FasterWhisper\large-v3"# Run on GPU with FP16
model = WhisperModel(model_size_or_path=path, device="cuda", local_files_only=True)# or run on GPU with INT8
# model = WhisperModel(model_size, device="cuda", compute_type="int8_float16")
# or run on CPU with INT8
# model = WhisperModel(model_size, device="cpu", compute_type="int8")segments, info = model.transcribe("audio.wav", beam_size=5, language="zh", vad_filter=True, vad_parameters=dict(min_silence_duration_ms=1000))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))

运行测试代码

找个音频放入文件夹内,输入python main.py即可运行!
可以看到正确(不太正确)的识别出了音频说了什么。
运行效果

实时转写脚本

新建一个脚本transper.py
运行即可

此处特别感谢开源项目
https://github.com/MyloBishop/transper

import os
import sys
import time
import wave
import tempfile
import threadingimport torch
import pyaudiowpatch as pyaudio
from faster_whisper import WhisperModel as whisper# A bigger audio buffer gives better accuracy
# but also increases latency in response.
# 表示音频缓冲时间的常量
AUDIO_BUFFER = 5# 此函数使用 PyAudio 库录制音频,并将其保存为一个临时的 WAV 文件。
# 使用 pyaudio.PyAudio 实例创建一个音频流,通过指定回调函数 callback 来实时写入音频数据到 WAV 文件。
# time.sleep(AUDIO_BUFFER) 会阻塞执行,确保录制足够的音频时间。
# 最后,函数返回保存的 WAV 文件的文件名。
def record_audio(p, device):"""Record audio from output device and save to temporary WAV file."""with tempfile.NamedTemporaryFile(suffix=".wav", delete=False) as f:filename = f.namewave_file = wave.open(filename, "wb")wave_file.setnchannels(device["maxInputChannels"])wave_file.setsampwidth(pyaudio.get_sample_size(pyaudio.paInt16))wave_file.setframerate(int(device["defaultSampleRate"]))def callback(in_data, frame_count, time_info, status):"""Write frames and return PA flag"""wave_file.writeframes(in_data)return (in_data, pyaudio.paContinue)stream = p.open(format=pyaudio.paInt16,channels=device["maxInputChannels"],rate=int(device["defaultSampleRate"]),frames_per_buffer=pyaudio.get_sample_size(pyaudio.paInt16),input=True,input_device_index=device["index"],stream_callback=callback,)try:time.sleep(AUDIO_BUFFER)  # Blocking execution while playingfinally:stream.stop_stream()stream.close()wave_file.close()# print(f"{filename} saved.")return filename# 此函数使用 Whisper 模型对录制的音频进行转录,并输出转录结果。
def whisper_audio(filename, model):"""Transcribe audio buffer and display."""# segments, info = model.transcribe(filename, beam_size=5, task="translate", language="zh", vad_filter=True, vad_parameters=dict(min_silence_duration_ms=1000))segments, info = model.transcribe(filename, beam_size=5, language="zh", vad_filter=True, vad_parameters=dict(min_silence_duration_ms=1000))os.remove(filename)# print(f"{filename} removed.")for segment in segments:# print(f"[{segment.start:.2f} -> {segment.end:.2f}] {segment.text.strip()}")print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))# main 函数是整个脚本的主控制函数。
# 加载 Whisper 模型,选择合适的计算设备(GPU 或 CPU)。
# 获取默认的 WASAPI 输出设备信息,并选择默认的扬声器(输出设备)。
# 使用 PyAudio 开始录制音频,并通过多线程运行 whisper_audio 函数进行音频转录。
def main():"""Load model record audio and transcribe from default output device."""print("Loading model...")device = "cuda" if torch.cuda.is_available() else "cpu"print(f"Using {device} device.")# model = whisper("large-v3", device=device, compute_type="float16")model = whisper("large-v3", device=device, local_files_only=True)print("Model loaded.")with pyaudio.PyAudio() as pya:# Create PyAudio instance via context manager.try:# Get default WASAPI infowasapi_info = pya.get_host_api_info_by_type(pyaudio.paWASAPI)except OSError:print("Looks like WASAPI is not available on the system. Exiting...")sys.exit()# Get default WASAPI speakersdefault_speakers = pya.get_device_info_by_index(wasapi_info["defaultOutputDevice"])if not default_speakers["isLoopbackDevice"]:for loopback in pya.get_loopback_device_info_generator():# Try to find loopback device with same name(and [Loopback suffix]).# Unfortunately, this is the most adequate way at the moment.if default_speakers["name"] in loopback["name"]:default_speakers = loopbackbreakelse:print("""Default loopback output device not found.Run `python -m pyaudiowpatch` to check available devices.Exiting...""")sys.exit()print(f"Recording from: {default_speakers['name']} ({default_speakers['index']})\n")while True:filename = record_audio(pya, default_speakers)thread = threading.Thread(target=whisper_audio, args=(filename, model))thread.start()main()

参考

faster-whisper
MyloBishop/transper
基于faster_whisper的实时语音识别
基于faster whisper实现实时语音识别项目语音转文本python编程实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/664322.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

版本管理git及其命令介绍-附带详细操作

前言 在版本管理时代之前,人们写软件的方式如下图1所示 图1 无版本管理的代码 其坏处就是软件版本随着时间越来越多,每个版本修改了什么内容,修改了哪些文件,如果没有详细记录也不知道。这样久会导致如果我们想回退到某个版本内…

MCU方案选型和进口替代,点击查看~

一、MCU简介 MCU(微控制单元)俗称单片机,可被认为是CPU的缩减版本,把CPU的频率与规格进行缩减处理,并将RAM、ROM、时钟、A/D转换、定时/计数器、UART 、DMA等电路单元,甚至包括USB接口、LCD驱动电路都整合…

缓存框架jetcache

在实际应用中,并不是单一的使用本地缓存或者redis,更多是组合使用来满足不同的业务场景。 jetcache组件实现了优雅的组合本地缓存和远程缓存。 支持多种缓存类型:本地缓存、分布式缓存、多级缓存。 官网地址:https://github.com…

《向量数据库指南》——Milvus Cloud丝滑入库是影响开发体验的第一步

除了查询之外,“插入”应该是使用最多的一个数据库操作,所有后续的工作也是建立在数据成功插入的基础上。丝滑的入库体验,是影响开发体验的第一步,也是至关重要的一步。 Milvus Cloud 社区对于“插入”的讨论,主要集中在数据插入的实践经验上: “插入的速度怎么优…

各版本的Qt Creator的下载地址

2024年2月3日,周六上午 Index of /official_releases/qtcreatorhttps://download.qt.io/official_releases/qtcreator/ 如果想下载测试中的最新版Qt Creator的快照可以去这个地址 Index of /snapshots/qtcreatorhttps://download.qt.io/snapshots/qtcreator/

浅谈智慧消防在铁路系统中的应用与发展

摘要:文章从基于物联网技术的“智慧消防”概念入手,探讨了智慧消防物联网技术在铁路工程中的应用,分析了在实际应用过程中存在的部分难点,并提出了新型物联网无线组网、智能传感器技术、图形可视化技术及安全隐患预测与评估的技术…

寒假作业2月2号

第一章 命名空间 一.选择题 1、编写C程序一般需经过的几个步骤依次是(C ) A. 编辑、调试、编译、连接 B. 编辑、编译、连接、运行 C. 编译、调试、编辑、连接 D. 编译、编辑、连接、运行 2、所谓数据封装就是将一组数据和与这组数据有关…

情人节送什么好?情人节送什么数码礼物?这总有你喜欢的那款!

​情人节礼物选择繁多,但许多人钟爱数码产品。以下是我为您精心挑选的几款实用且深受男女生喜爱的数码产品。它们不仅功能出色,还能为您的节日增添一份特别的惊喜。 一、南卡OE MIX蓝牙耳机 南卡OE MIX无疑是在情人节礼物预算千元以内的首选。它配备了重…

文旅行业解决方案

顶层规划设计 系统化地为目的地、政府、景区、游客等提供基于全流程服务和管理的智慧文旅应用体系 智慧产品矩阵 整合腾讯产品矩阵和先进技术,持续研发创新产品,实现各文旅场景智慧化及产业协同式发展 文创孵化平台 用科技文化助力中华文明复兴&…

MySQL的ACID、死锁、MVCC问题

1 ACID ACID代表原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)。一个确保数据安全的事务处理系统,必须满足这些密切相关的标准。 原…

【Spring实战】33 Spring Boot3 集成 Nacos 配置中心

文章目录 1. 配置中心定义2. 解决哪些问题3. 常用的配置中心4. 使用示例1)没引入 Nacos 配置中心2)引入依赖3)配置Nacos连接信息4)在 Nacos 上配置属性5)在 Spring Boot 中使用配置6)启动服务&验证7&am…

spring boot学习第九篇:操作mongo的集合和集合中的数据

1、安装好了Mongodb 参考&#xff1a;ubuntu安装mongod、配置用户访问、添删改查-CSDN博客 2、pom.xml文件内容如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns…

奠定基础:用于机器学习的微积分、数学和线性代数

一、说明 机器学习是一个引人入胜的领域&#xff0c;它使计算机能够从数据中学习并做出预测或决策&#xff0c;而无需明确编程。然而&#xff0c;在幕后&#xff0c;有一个坚实的数学和线性代数基础&#xff0c;构成了机器学习算法的支柱。在本文中&#xff0c;我们将探讨在深入…

C++多线程3

生产者消费者模型 OS经典问题&#xff0c;生产者消费者模型,empty和full还有mutex对应到C上如何处理看代码即可 #include <iostream> #include <thread> #include <mutex> #include <condition_variable> #include <queue> using namespace st…

数据中心机房建设的关键痛点及解决方案

随着信息技术的飞速发展&#xff0c;数据中心机房已成为企业信息系统的核心。然而&#xff0c;在机房系统的建设过程中&#xff0c;投资及运行维护成为项目管理的关键痛点。合理的投资决策和高效的运维管理是确保机房系统经济性和可靠性的重要因素。本文将探讨机房系统建设的投…

那些不输于乙游男主人设的国漫男主

最近乙游的势头越来越猛&#xff0c;新宠旧爱一起上阵&#xff0c;叫人应接不暇。在二次元的世界里&#xff0c;乙游男主们凭借着超凡的魅力&#xff0c;成为了无数少女心中的理想对象。他们或冷酷、或温柔、或阳光、或神秘&#xff0c;每一个角色都有着独特的性格和故事。 乙游…

NLP_统计语言模型的发展历程

文章目录 统计语言模型发展的里程碑&#xff1a; 上半部分是语言模型技术的进展&#xff1b;下半部分则是词向量&#xff08;词的表示学习&#xff09;技术的发展。其中&#xff0c;词向量表示的学习为语言模型提供了更高质量的输入信息&#xff08;词向量表示&#xff09; 1…

性能测试常用术语

之前在性能测试过程中&#xff0c;对于某些其中的术语一知半解&#xff0c;导致踩了很多坑。这篇博客&#xff0c;就常见的一些性能测试术语进行一次浅析。。。 负载 对被测系统不断施加压力&#xff0c;直到性能指标超过预期或某项资源使用达到饱和&#xff0c;以验证系统的处…

玩美移动为花西子海外官网打造AR虚拟试妆决方案

全球领先的增强现实&#xff08;AR&#xff09;及人工智能&#xff08;AI&#xff09;美妆科技领导者及玩美系列APP开发商——玩美移动&#xff08;纽交所代码&#xff1a;PERF&#xff09;于近日宣布携手知名美妆品牌花西子&#xff0c;在其线海外官方网页提供多项彩妆虚拟试妆…

C语言搭配EasyX实现贪吃蛇小游戏

封面展示 内部展示 完整代码 #define _CRT_SECURE_NO_WARNINGS #include<easyx.h> #include<stdio.h> #include<mmsystem.h> #pragma comment (lib,"winmm.lib") #define width 40//宽有40个格子 #define height 30//长有40个格子 #define size 2…