whisper 语音识别项目部署

1.安装anaconda软件

在如下网盘免费获取软件:

链接:https://pan.baidu.com/s/1zOZCQOeiDhx6ebHh5zNasA

提取码:hfnd

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

python 复制代码
conda create -n whisper python==3.8

3.进入whisper虚拟环境

python 复制代码
conda activate whisper

4.安装cuda10.0的PyTorch环境

python 复制代码
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库包

python 复制代码
pip install -U openai-whisper

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

python 复制代码
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运行)

python 复制代码
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()  # 终止pyaudio

    wf = 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)  # 定义录音时间,单位/s
    result = model.transcribe("output.wav")
    s = result["text"]
    s1 = zhconv.convert(s, 'zh-cn')
    print(s1)

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

python 复制代码
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()  # 终止pyaudio

    wf = 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)  # 定义录音时间,单位/s
    audio = 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.展示实时翻译结果

相关推荐
做萤石二次开发的哈哈9 小时前
连锁门店、园区、交通枢纽的视频如何统一汇集?应用模板的接入与分权管理详解
人工智能·物联网·音视频·二次开发·视频监控·蓝海aiot一站式工作台·萤石云开放平台
老金带你玩AI9 小时前
全程拿着手机,我让dot准备了一场AI分享
人工智能
nvd119 小时前
Flink 批处理驱动的湖仓 AI 财务研报流水线:从双流广播汇聚到 Agent 智能决策与原生 Iceberg 落盘全景实战
大数据·人工智能·flink
snhna10 小时前
向量数据库深度实战:从 HNSW 到 pgvector、Milvus 选型与 RAG 落地
数据库·人工智能·python·postgresql·milvus
架构技术专栏10 小时前
Agent 工具调用:从工具声明到执行反馈
前端·人工智能·后端
点云-激光雷达-Slam-三维牙齿10 小时前
100,000 Records CSV File - India Traffic Accident Analysis Dataset.7z
人工智能·数据集
TechWayfarer10 小时前
精度极限的突破:AI与IPv6如何重塑高精度IP查询
人工智能·网络协议·tcp/ip·transformer
七十二时95610 小时前
视频掉帧怎么用AI补帧
人工智能
可达智灵10 小时前
信创适配|织灵 Coda Loom 2.0 完成银河麒麟服务器操作系统 V10、V11 适配认证
人工智能·可达智灵
Wx-bishekaifayuan11 小时前
express皖美特色农产品网售系统53118-计算机课程设计、毕业设计
人工智能·spring boot·后端·python·课程设计·express·旅游