【亲测有效】Whisper+DeepSeek视频转文字工具,准确率高达95%!

【亲测有效】Whisper+DeepSeek视频转文字工具,准确率高达95%!

一、前言:为什么我要做一个视频转文字的工具?

随着短视频和在线课程的爆发式增长,越来越多的信息以“视频”的形式呈现。但许多时候,我们想要快速获取视频中的内容,列如会议记录、教学讲解、采访对话等,手动听写效率太低,而且容易出错。

于是,我就想着自己动手,用 Whisper DeepSeek-R1 模型 ,手搓一个全自动视频转文字+格式化输出 的小工具,不仅能识别语音,还能自动纠错、加标点、分段落,简直不要太香!

二、项目简介:这个工具能做什么?

该项目实现了以下功能:

✅ 通过moviepy从视频中提取音频
✅ 使用 Whisper 将音频转为原始文本
✅ 将原始文本保存为
.txt 文件
✅ 调用 DeepSeek-R1 模型对文本进行格式化处理
✅ 自动修正错别字、添加标点、书面化表达
✅ 输出最终结构清晰、可读性强的文档

一句话总结:视频一拖进去,直接输出排版整齐、语义通顺的文字稿!

三、核心技术栈介绍

1. MoviePy(视频处理)

  • 提取视频中的音频轨道
  • 简单易用,Python 写脚本神器

2. Whisper(语音转文字)

  • 来自 OpenAI 的开源语音识别模型
  • 支持多语言识别,中文也完全没问题
  • 可选择不同大小模型(tiny / base / small / medium / large)

3. DeepSeek-R1(文本处理)

  • 硅基流动平台提供的大模型服务
  • 基于 deepseek-ai/DeepSeek-R1
  • 超级擅长文本格式化、错别字纠正、书面化转换等任务

四、实现思路详解(附代码逻辑)

整个流程分为以下几个步骤:

Step 1:从视频中提取音频

from moviepy.editor import VideoFileClip

def extract_audio_from_video(video_path, audio_output_path):
    video = VideoFileClip(video_path)
    video.audio.write_audiofile(audio_output_path)

使用 MoviePy 从视频中提取音频文件(如 .wav),供下一步语音识别使用。

Step 2:使用 Whisper 进行语音识别

import whisper

def transcribe_audio_to_text(audio_path, text_output_path):
    model = whisper.load_model("large")
    result = model.transcribe(audio_path, language="zh",fp16=False)
    raw_text = result["text"]
    
    with open(text_output_path, "w", encoding="utf-8") as f:
        f.write(raw_text)

加载 Whisper 模型并进行语音识别,将结果写入 .txt 文件。

这里我们使用了large的whisper模型

【亲测有效】Whisper+DeepSeek视频转文字工具,准确率高达95%!

whisper 模型文件

Step 3:调用 DeepSeek-R1 对文本进行格式化处理

由于whisper输出的文字通篇没有标点符号和换行,偶尔有错别字,这就需要AI大模型来进行整理输出。

import openai

def format_text_with_siliconflow(raw_text, api_key, formatted_output_path):
    client = openai.OpenAI(
        base_url="https://api.siliconflow.cn/v1", 
        api_key=api_key,
    )

    prompt = """# 角色
你是一个文本格式化与错别字修正智能体,专门处理无分段和标点的文本文件,能按照正常格式要求对其进行格式化,精准识别并修正其中的错别字。

## 技能
### 技能 1: 格式化文本
1. 接收无分段和标点的文本文件内容。
2. 依据正常语言表达习惯和格式要求,对文本进行分段处理,添加合适的标点符号。

### 技能 2:分段和书面化转换
1. 在格式化后的文本中,运用自身语言知识储备,识别并标记出所有错别字。
2. 将错别字替换为正确的字词。
3. 根据文档内容,按照常规的文章段落要求进行分段落显示。
4. 对文章中过于口语化的内容做书面形式的转换,要求不影响整体意思的表达。

## 限制
- 仅处理无分段和标点且存在错别字的文本文件内容,不涉及其他类型任务。
- 不增删和修改文字,不要做总结,直接完整输出。
- 处理过程严格按照正常语言格式要求和通用语言规范进行,不得随意更改文本原意。
"""

    completion = client.chat.completions.create(
        model="deepseek-ai/DeepSeek-R1",
        messages=[
            {"role": "system", "content": prompt},
            {"role": "user", "content": raw_text}
        ]
    )
    formatted_text = completion.choices[0].message.content

    with open(formatted_output_path, "w", encoding="utf-8") as f:
        f.write(formatted_text)

通过 SiliconFlow API 调用 DeepSeek-R1 大模型,对识别出的原始文本进行格式化、错别字修正、标点补充、段落划分等处理。

Step 4:整合所有模块,一键运行

将上述模块整合成一个完整的函数,传入视频路径即可完成全流程处理。

完整代码如下:

from moviepy.editor import VideoFileClip
import os
import whisper
import openai

# Step 1: 从视频中提取音频
def extract_audio_from_video(video_path, audio_output_path):
    print("正在从视频中提取音频...")
    video = VideoFileClip(video_path)
    video.audio.write_audiofile(audio_output_path)
    print(f"音频已保存为 {audio_output_path}")

# Step 2: 将音频转为文字
def transcribe_audio_to_text(audio_path, text_output_path):
    print("正在加载 Whisper 模型并识别语音内容...")
    model_path = "/root/.cache/whisper/large-v3-turbo.pt"  # 例如:'./models/base.pt'
    # 从本地加载模型
    model = whisper.load_model(model_path)
    result = model.transcribe(audio_path, language="zh",fp16=False)  # 设置语言为中文
    text = result["text"]
    
    print(f"识别完成,正在将原始文字写入文件:{text_output_path}")
    with open(text_output_path, "w", encoding="utf-8") as f:
        f.write(text)
    print("原始文字已成功写入文件")
    return text

# Step 3: 使用 SiliconFlow API 格式化文本
def format_text_with_siliconflow(raw_text, api_key, formatted_output_path):
    print("正在调用 SiliconFlow API 对文本进行格式化与纠错...")

    client = openai.OpenAI(
        base_url="https://api.siliconflow.cn/v1", 
        api_key=api_key,
    )

    prompt = """# 角色
你是一个文本格式化与错别字修正智能体,专门处理无分段和标点的文本文件,能按照正常格式要求对其进行格式化,精准识别并修正其中的错别字。

## 技能
### 技能 1: 格式化文本
1. 接收无分段和标点的文本文件内容。
2. 依据正常语言表达习惯和格式要求,对文本进行分段处理,添加合适的标点符号。

### 技能 2:分段和书面化转换
1. 在格式化后的文本中,运用自身语言知识储备,识别并标记出所有错别字。
2. 将错别字替换为正确的字词。
3. 根据文档内容,按照常规的文章段落要求进行分段落显示。
4. 对文章中过于口语化的内容做书面形式的转换,要求不影响整体意思的表达。

## 限制
- 仅处理无分段和标点且存在错别字的文本文件内容,不涉及其他类型任务。
- 不增删和修改文字,不要做总结,直接完整输出。
- 处理过程严格按照正常语言格式要求和通用语言规范进行,不得随意更改文本原意。
"""

    try:
        completion = client.chat.completions.create(
            model="deepseek-ai/DeepSeek-R1",
            messages=[
                {"role": "system", "content": prompt},
                {"role": "user", "content": raw_text}
            ]
        )
        formatted_text = completion.choices[0].message.content

        print(f"格式化完成,正在将结果写入文件:{formatted_output_path}")
        with open(formatted_output_path, "w", encoding="utf-8") as f:
            f.write(formatted_text)
        print("格式化文本已成功写入文件")
        return formatted_text

    except Exception as e:
        print("调用 SiliconFlow API 出错:", str(e))
        return None

# 主函数
def video_to_formatted_text(video_file, output_text_file="output.txt", formatted_output_file="formatted_output.txt"):
    audio_file = "output.wav"

    # Step 1: 提取音频
    extract_audio_from_video(video_file, audio_file)

    # Step 2: 音频转文字
    raw_text = transcribe_audio_to_text(audio_file, output_text_file)

    # Step 3: 使用 API 进行格式化
    siliconflow_api_key = "your_siliconflow_api_key_here"  # 替换为你自己的 API Key
    formatted_text = format_text_with_siliconflow(raw_text, siliconflow_api_key, formatted_output_file)

    # Step 4: 删除临时音频文件
    if os.path.exists(audio_file):
        os.remove(audio_file)
        print("临时音频文件已删除")

    return formatted_text

# 示例调用
if __name__ == "__main__":
    video_path = "video.mp4"  # 替换为你自己的视频路径
    output_text_path = "output.txt"
    formatted_output_path = "formatted_output.txt"

    video_to_formatted_text(video_path, output_text_path, formatted_output_path)
    print(f"
原始识别文本已保存到:{output_text_path}")
    print(f"格式化后文本已保存到:{formatted_output_path}")

执行代码:

python video2text_deepseek.py

【亲测有效】Whisper+DeepSeek视频转文字工具,准确率高达95%!

执行转化脚本

输出的文本内容:

【亲测有效】Whisper+DeepSeek视频转文字工具,准确率高达95%!

对比原来的视频内容,文字准确还是挺高的。

© 版权声明

相关文章

5 条评论

  • 头像
    读者

    并发能够多少?

    无记录
    回复
  • 头像
    hmmhzzz 投稿者

    并发要看机器的配置情况的

    无记录
    回复
  • 头像
    放肆 读者

    我都是用360AI里面有免费额度,可以视频转文字的,非常好用。

    无记录
    回复
  • 头像
    大大大柠 读者

    视频转文字,效率提升不止一点点。

    无记录
    回复
  • 头像
    创赢商学院 读者

    收藏了,感谢分享

    无记录
    回复