当前位置: 首页 > news >正文

whisper 语音识别项目部署

1.安装anaconda软件
在如下网盘免费获取软件:
链接:https://pan.baidu.com/s/1zOZCQOeiDhx6ebHh5zNasA
提取码:hfnd

2.使用conda命令创建python3.8环境

conda create -n whisper python==3.8

3.进入whisper虚拟环境

conda activate whisper

4.安装cuda10.0的PyTorch环境

pip --trusted-host pypi.tuna.tsinghua.edu.cn install torch==1.10.1+cu102 torchvision==0.11.2+cu102 torchaudio==0.10.1 -f https://download.pytorch.org/whl/torch_stable.html

5.使用命令安装whisper库包

pip install -U openai-whisper

6.简单使用命令识别一段语音:

whisper output.wav --model medium  --language Chinese

6.安装和配置ffmpeg软件
在如下网盘免费获取软件:

配置只需要解压后将文件里面的bin路径放入系统环境变量Path中即可
在这里插入图片描述

7.安装cuda软件
cuda11.0软件百度网盘获取:
链接:https://pan.baidu.com/s/1KOJfAVR6nKmVafNnmbsYDw
提取码:lblh
cudnn11.0百度网盘获取:
链接:https://pan.baidu.com/s/1CBuq7jflihEDuclSq-RTJA
提取码:efgu

6.打开pycharm软件编写代码

7.可以实时录音并且语音转中文的代码编写(使用cpu运行)

import whisper
import zhconv
import wave  # 使用wave库可读、写wav类型的音频文件
import pyaudio  # 使用pyaudio库可以进行录音,播放,生成wav文件def record(time):  # 录音程序# 定义数据流块CHUNK = 1024  # 音频帧率(也就是每次读取的数据是多少,默认1024)FORMAT = pyaudio.paInt16  # 采样时生成wav文件正常格式CHANNELS = 1  # 音轨数(每条音轨定义了该条音轨的属性,如音轨的音色、音色库、通道数、输入/输出端口、音量等。可以多个音轨,不唯一)RATE = 16000  # 采样率(即每秒采样多少数据)RECORD_SECONDS = time  # 录音时间WAVE_OUTPUT_FILENAME = "./output.wav"  # 保存音频路径p = pyaudio.PyAudio()  # 创建PyAudio对象stream = p.open(format=FORMAT,  # 采样生成wav文件的正常格式channels=CHANNELS,  # 音轨数rate=RATE,  # 采样率input=True,  # Ture代表这是一条输入流,False代表这不是输入流frames_per_buffer=CHUNK)  # 每个缓冲多少帧print("* recording")  # 开始录音标志frames = []  # 定义frames为一个空列表for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):  # 计算要读多少次,每秒的采样率/每次读多少数据*录音时间=需要读多少次data = stream.read(CHUNK)  # 每次读chunk个数据frames.append(data)  # 将读出的数据保存到列表中print("* done recording")  # 结束录音标志stream.stop_stream()  # 停止输入流stream.close()  # 关闭输入流p.terminate()  # 终止pyaudiowf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')  # 以’wb‘二进制流写的方式打开一个文件wf.setnchannels(CHANNELS)  # 设置音轨数wf.setsampwidth(p.get_sample_size(FORMAT))  # 设置采样点数据的格式,和FOMART保持一致wf.setframerate(RATE)  # 设置采样率与RATE要一致wf.writeframes(b''.join(frames))  # 将声音数据写入文件wf.close()  # 数据流保存完,关闭文件if __name__ == '__main__':model = whisper.load_model("tiny")record(3)  # 定义录音时间,单位/sresult = model.transcribe("output.wav")s = result["text"]s1 = zhconv.convert(s, 'zh-cn')print(s1)

8.可以实时录音并且语音转中文的代码编写(使用gpu运行)

import whisper
import zhconv
import wave  # 使用wave库可读、写wav类型的音频文件
import pyaudio  # 使用pyaudio库可以进行录音,播放,生成wav文件
def record(time):  # 录音程序# 定义数据流块CHUNK = 1024  # 音频帧率(也就是每次读取的数据是多少,默认1024)FORMAT = pyaudio.paInt16  # 采样时生成wav文件正常格式CHANNELS = 1  # 音轨数(每条音轨定义了该条音轨的属性,如音轨的音色、音色库、通道数、输入/输出端口、音量等。可以多个音轨,不唯一)RATE = 16000  # 采样率(即每秒采样多少数据)RECORD_SECONDS = time  # 录音时间WAVE_OUTPUT_FILENAME = "./output.wav"  # 保存音频路径p = pyaudio.PyAudio()  # 创建PyAudio对象stream = p.open(format=FORMAT,  # 采样生成wav文件的正常格式channels=CHANNELS,  # 音轨数rate=RATE,  # 采样率input=True,  # Ture代表这是一条输入流,False代表这不是输入流frames_per_buffer=CHUNK)  # 每个缓冲多少帧print("* recording")  # 开始录音标志frames = []  # 定义frames为一个空列表for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):  # 计算要读多少次,每秒的采样率/每次读多少数据*录音时间=需要读多少次data = stream.read(CHUNK)  # 每次读chunk个数据frames.append(data)  # 将读出的数据保存到列表中print("* done recording")  # 结束录音标志stream.stop_stream()  # 停止输入流stream.close()  # 关闭输入流p.terminate()  # 终止pyaudiowf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')  # 以’wb‘二进制流写的方式打开一个文件wf.setnchannels(CHANNELS)  # 设置音轨数wf.setsampwidth(p.get_sample_size(FORMAT))  # 设置采样点数据的格式,和FOMART保持一致wf.setframerate(RATE)  # 设置采样率与RATE要一致wf.writeframes(b''.join(frames))  # 将声音数据写入文件wf.close()  # 数据流保存完,关闭文件if __name__ == '__main__':model = whisper.load_model("base")record(3)  # 定义录音时间,单位/saudio = whisper.load_audio("output.wav")audio = whisper.pad_or_trim(audio)mel = whisper.log_mel_spectrogram(audio).to(model.device)_, probs = model.detect_language(mel)print(f"Detected language: {max(probs, key=probs.get)}")options = whisper.DecodingOptions()result = whisper.decode(model, mel, options)s1 = zhconv.convert(result.text, 'zh-cn')print(s1)

9.展示实时翻译结果
在这里插入图片描述

http://www.lryc.cn/news/138424.html

相关文章:

  • 实例044 在关闭窗口前加入确认对话框
  • 子查询和事务隔离以及用户管理
  • uniapp 滚动到指定元素的位置(锚点)
  • Spring AOP 的 afterReturing 返回值是否能修改问题
  • MyBatis分页插件PageHelper的使用及特殊字符的处理
  • [语音识别] 基于Python构建简易的音频录制与语音识别应用
  • Matlab彩色图像转索引图像
  • 测试框架pytest教程(11)-pytestAPI
  • Docker自学:利用FastAPI建立一个简单的web app
  • 微调bert做学术论文分类(以科大讯飞学术论文分类挑战赛为例)
  • Springboot中sharding-jdbc的API模式并使用自定义算法
  • MySQL回表是什么?哪些情况下会回表
  • VR、AR、MR 傻傻分不清楚?区别的底层逻辑?
  • VScode运行C语言出现的调试问题 lauch:program does not exist 解决方法
  • 云原生安全:保护现代化应用的新一代安全策略
  • mysql操作
  • 前端(十四)——DOM节点操作手册:你需要了解的一切
  • PDF怎么转成PPT文件免费?一个软件解决
  • 数据结构基础:P3-树(上)----编程作业02:List Leaves
  • 山西电力市场日前价格预测【2023-08-25】
  • 手机无人直播软件,有哪些优势?
  • SpringBoot概述SpringBoot基础配置yml的使用多环境启动
  • Python Pandas 处理Excel数据 制图
  • 如何自己实现一个丝滑的流程图绘制工具(五)bpmn的xml和json互转
  • mysql--数据库的操作
  • kafka--技术文档--架构体系
  • ctfshow web入门 web103-web107
  • 前端工程化之模块化
  • 文件服务器实现方式汇总
  • ChatGPT计算机科学与技术专业的本科毕业论文,2000字。论文查重率低于30%。