使用faster-whisper音频转asr字幕(亲测可行)

在这里插入图片描述重点说明,下载模型时需科学上网或者用国内huggingface镜像网站下载。

from faster_whisper import WhisperModel
from pydub import AudioSegment
from zhconv import convert  # 简繁转换库
import os
import datetime
import torch


def format_time(seconds):
    """将秒数格式化为SRT时间格式 (HH:MM:SS,mmm)"""
    td = datetime.timedelta(seconds=seconds)
    hours, remainder = divmod(int(td.total_seconds()), 3600)
    minutes, seconds = divmod(remainder, 60)
    milliseconds = int((td.microseconds / 1000))
    return f"{hours:02d}:{minutes:02d}:{seconds:02d},{milliseconds:03d}"


def audio_to_srt_fast(audio_path, output_srt_path, model_size="small", device="cpu"):
    """
    高效本地音频转SRT(强制简体中文输出)
    :param audio_path: 音频文件路径
    :param output_srt_path: 输出SRT路径
    :param model_size: 模型大小 (tiny, base, small, medium, large)
    :param device: 运行设备 (cpu 或 cuda)
    """
    # 转换为16kHz WAV格式
    print("正在预处理音频...")
    audio = AudioSegment.from_file(audio_path)
    audio = audio.set_frame_rate(16000).set_channels(1)
    temp_wav = "temp_16k.wav"
    audio.export(temp_wav, format="wav")

    # 加载Whisper模型
    print(f"正在加载Whisper模型({model_size})...")
    try:
        model_path = "C:/whisper_models/faster-whisper-small"  # 替换为你的实际路径
        model = WhisperModel(model_path, device=device, compute_type="int8")
        # model = WhisperModel(model_size, device=device, compute_type="int8", local_files_only=False)

    except Exception as e:
        print(f"模型加载失败: {str(e)}")
        return False

    # 转录音频(强制指定简体中文)
    print("开始语音识别...")
    segments, info = model.transcribe(
        temp_wav,
        beam_size=5,
        language="zh",
        initial_prompt="请用简体中文转写以下内容"  # 重要提示词
    )

    print(f"检测到语言: {info.language}, 概率: {info.language_probability:.2f}")

    # 写入SRT文件(确保简体中文)
    with open(output_srt_path, 'w', encoding='utf-8') as srt_file:
        for i, segment in enumerate(segments, 1):
            start_time = format_time(segment.start)
            end_time = format_time(segment.end)
            text = convert(segment.text.strip(), 'zh-cn')  # 强制转换为简体

            srt_file.write(f"{i}\n")
            srt_file.write(f"{start_time} --> {end_time}\n")
            srt_file.write(f"{text}\n\n")

    # 清理临时文件
    os.remove(temp_wav)
    print(f"简体中文SRT生成完成: {output_srt_path}")


if __name__ == "__main__":
    # 测试配置
    audio_file = "c.mp3"  # 替换为您的音频文件
    output_srt = "c.srt"

    # 安装简繁转换库(如果尚未安装)
    try:
        import zhconv
    except ImportError:
        print("正在安装简繁转换库...")
        import subprocess

        subprocess.run(["pip", "install", "zhconv"])
        import zhconv

    # 选择模型大小(中文推荐small或以上)
    model_size = "small"

    # 选择设备
    device = "cuda" if torch.cuda.is_available() else "cpu"
    print(f"使用设备: {device}")

    print("=== 开始生成简体中文字幕 ===")
    audio_to_srt_fast(audio_file, output_srt, model_size, device)
<think>好的,用户想在Ubuntu系统上安装faster-whisper库。我需要根据提供的引用资料来整理安装步骤。首先,引用[1]、[2]、[3]提到了相关项目的地址,可能需要查看这些项目的文档。 faster-whisper是基于CTranslate2和Whisper的优化版本,安装可能需要Python环境。先确认系统是否安装了Python和pip。然后可能需要安装依赖项,比如FFmpeg,因为Whisper处理音频需要它。安装命令可能是sudo apt install ffmpeg。 接下来,用pip安装faster-whisper。引用[3]的项目地址是Hugging Face的模型库,可能需要安装CTranslate2库。正确的安装步骤可能包括: 1. 安装Python和pip。 2. 安装FFmpeg。 3. 安装CTranslate2:pip install ctranslate2。 4. 安装faster-whisper:pip install faster-whisper。 另外,用户可能需要下载预训练模型,比如large-v3,使用huggingface-cli下载。此外,确保安装PyTorch,因为有些依赖可能需要它。如果用户遇到问题,可以建议他们查看项目的GitHub页面或文档,或者使用虚拟环境避免依赖冲突。最后,验证安装是否成功,运行一个试脚本看看是否报错。</think>### 逐步安装说明 1. **安装系统依赖** 确保系统已安装 `Python 3.8+`、`pip` 和 `FFmpeg`(用于音频处理): ```bash sudo apt update sudo apt install python3-pip ffmpeg ``` 2. **安装 CTranslate2 基础库** faster-whisper 依赖高性能的 CTranslate2 推理引擎: ```bash pip install ctranslate2 ``` 3. **安装 faster-whisper** 通过 pip 直接安装: ```bash pip install faster-whisper ``` 4. **验证安装(可选)** 运行简单试代码: ```python from faster_whisper import WhisperModel model = WhisperModel("small") # 首次运行会自动下载模型 ``` 5. **下载预训练模型(可选)** 通过 Hugging Face 下载指定模型,例如 large-v3: ```bash huggingface-cli download Systran/faster-whisper-large-v3 ``` ### 注意事项 - 建议使用虚拟环境(如 `venv`)隔离依赖。 - 若遇到 CUDA 相关错误,需确保已正确安装 NVIDIA 驱动和 PyTorch 的 GPU 版本[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值