通过Whisper音频转字幕

本文介绍OpenAI Whisper的安装、基础用法、模型对比(tiny至large)、Python调用示例及批量处理脚本。支持多语言语音识别与翻译,可生成带时间戳的SRT字幕文件,适用于不同场景下的音频转字幕需求。

作者:zhuge···预计阅读 8 分钟·657 阅读·0 评论
通过Whisper音频转字幕

Whisper 的目标是构建一个 通用语音识别模型,能够在不同语言、不同口音、嘈杂环境、不同麦克风质量等条件下表现良好。

首先我们要先安装ffmpeg和Whisper

#ffmpeg
apt-get update && apt-get install -y ffmpeg
#检查
ffmpeg -version
Whisper
pip install git+https://github.com/openai/whisper.git
# 或
pip install openai-whisper

基础用法

whisper audio.mp3 --model medium --language Chinese

支持将中文、法语、西班牙语等语言直接翻译为英文文本

whisper audio.mp3 --task translate

分段+时间戳输出(字幕文件生成)

whisper audio.mp3 --output_format srt

支持将中文、法语、西班牙语等语言直接翻译为英文文本

whisper your_audio.wav --model small

模型名称参数量速度准确率适用场景
tiny39M非常快较低移动端、快速转录
base74M通用语音识别
small244M中等中上多语种转录
medium769M高质量转写
large1550M最佳多语言识别翻译、字幕生成

使用示例(Python)

import whisper
model = whisper.load_model("base")
result = model.transcribe("audio.mp3")
print(result["text"])

批量

#!/bin/bash

# 循环处理序号从 02 到 12 的文件
for i in {01..12}
do
    # 构造文件名
    input_file="FILE-$i.mp3"
    
    # 打印正在处理的信息
    echo "正在处理文件: $input_file"
    
    # 执行 Whisper 命令
    # 默认模型是 small,改为 medium,对于中文,使用 --language Chinese 可能精度更高
    whisper "$input_file" --output_format srt --model medium --language Chinese
    
    # 检查上一个命令是否执行成功
    if [ $? -eq 0 ]; then
        echo "成功生成: $input_file 的字幕"
    else
        echo "处理文件时出错: $input_file"
    fi
    echo "-----------------------------------"
done

echo "所有文件处理完成!"

#!/bin/bash

# 设置基础参数
BASE_NAME="SEFXHHYQ"
MODEL="large"
LANGUAGE="Chinese"

echo "开始处理音频文件转字幕..."

# 循环处理01到12文件
for i in $(seq -f "%02g" 1 12); do
    FILENAME="${BASE_NAME}-${i}.mp3"
    OUTPUT_SRT="${BASE_NAME}-${i}.srt"
    
    # 检查文件是否存在
    if [ ! -f "$FILENAME" ]; then
        echo "警告: 文件 $FILENAME 不存在,跳过"
        continue
    fi
    
    echo "正在处理: $FILENAME"
    
    # 执行whisper转换
    whisper "$FILENAME" \
        --output_format srt \
        --model "$MODEL" \
        --language "$LANGUAGE"
    
    # 检查是否成功
    if [ $? -eq 0 ] && [ -f "${BASE_NAME}-${i}.srt" ]; then
        echo "✓ 成功生成: $OUTPUT_SRT"
    else
        echo "✗ 处理失败: $FILENAME"
    fi
    
    echo "--------------------------------------"
done

echo "所有文件处理完成!"

相关文章

评论

加载中...