针对课堂教学视频音频提取、语音转写、文本降噪、角色修正、课堂活动自动识别的全流程需求,本文设计并实现了一套自动化处理系统。系统基于讯飞星火语音识别 API 完成高精度音视频转写,结合 DeepSeek 大模型实现文本智能优化、师生角色自动修正与课堂活动(独立思考、小组讨论等)智能标注,最终输出标准化的对话 CSV 与接口 JSON 格式数据,可直接应用于智慧教育、课堂分析等场景。
关键词
语音转写;视频音频提取;大模型文本优化;课堂分析;智慧教育
1 系统整体设计
视频转音频:自动提取 MP4 视频中的音频轨道,支持时长截取;
语音识别:调用讯飞星火 API 实现多人对话高精度转写,区分说话人;
文本智能优化:通过大模型修正识别错误、删除无意义噪声;
角色自动修正:基于上下文修正师生角色分配错误;
课堂活动识别:自动标注独立思考、小组讨论等课堂活动;
标准化输出:生成对话 CSV、接口专用 JSON 文件。
1.2 技术架构
音频处理:MoviePy(视频转音频)
语音识别:讯飞星火 RAASR API
大模型交互:DeepSeek-V3(文本优化 + 角色修正 + 活动识别)
数据处理:JSON/CSV 格式化输出
2 核心代码实现
2.1 环境依赖安装
python
moviepy==1.0.3
httpx==0.27.0
requests==2.31.0
openai==1.13.0
2.2 完整核心代码(视频转写 + LLM 优化)
python
# -*- coding: utf-8 -*-
import base64
import hashlib
import hmac
import json
import os
import time
import requests
import urllib
import csv
import io
from openai import OpenAI
from collections import Counter
from moviepy.video.io.VideoFileClip import VideoFileClip
# 讯飞语音识别API配置
lfasr_host = 'https://raasr.xfyun.cn/v2/api'
api_upload = '/upload'
api_get_result = '/getResult'
class AudioToData:
def __init__(self, appid, secret_key, upload_file_path, llm_api, duration_seconds=None):
self.appid = appid
self.secret_key = secret_key
self.upload_file_path = upload_file_path
self.llm_api = llm_api
self.duration_seconds = duration_seconds
self.sentences_activity = []
self.sentences_paragraphs = []
# 初始化大模型客户端
self.llm = OpenAI(
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
api_key=self.llm_api,
)
# ====================== 1. 视频转音频核心函数 ======================
def movie_to_audio(self, mp4_file, wav_file):
"""MP4视频提取音频,转为WAV格式"""
if not os.path.exists(mp4_file):
print(f"输入文件不存在: {mp4_file}")
return False
output_dir = os.path.dirname(wav_file)
if output_dir and not os.path.exists(output_dir):
os.makedirs(output_dir)
video_clip = VideoFileClip(mp4_file)
# 截取音频
if self.duration_seconds:
end_duration = min(self.duration_seconds, video_clip.duration)
video_clip = video_clip.subclipped(0, end_duration)
if video_clip.audio is None:
print("视频无音频轨道")
video_clip.close()
return False
# 保存音频
audio_clip = video_clip.audio
audio_clip.write_audiofile(wav_file, codec='pcm_s16le')
audio_clip.close()
video_clip.close()
return True
# ====================== 2. 讯飞API签名与上传 ======================
def get_signa(self, ts):
"""生成讯飞API签名"""
md5 = hashlib.md5((self.appid + ts).encode()).hexdigest()
signa = hmac.new(self.secret_key.encode(), md5.encode(), hashlib.sha1).digest()
return base64.b64encode(signa).decode()
def upload_file(self, ts, signa):
"""上传音频文件到讯飞"""
file_len = os.path.getsize(self.upload_file_path)
file_name = os.path.basename(self.upload_file_path)
param_dict = {
'appId': self.appid, 'signa': signa, 'ts': ts,
"fileSize": file_len, "fileName": file_name,
"duration": "200", "pd": "edu", "roleType": "1", "roleNum": "2"
}
with open(self.upload_file_path, 'rb') as f:
data = f.read()
response = requests.post(
url=lfasr_host + api_upload + "?" + urllib.parse.urlencode(param_dict),
headers={"Content-type": "application/json"}, data=data
)
result = json.loads(response.text)
return result if result['code'] == '000000' else None
def get_recognition_result(self, ts, signa, order_id):
"""轮询获取语音识别结果"""
param_dict = {'appId': self.appid, 'signa': signa, 'ts': ts, 'orderId': order_id, 'resultType': "transfer,predict"}
status = 3
while status == 3:
response = requests.post(lfasr_host + api_get_result + "?" + urllib.parse.urlencode(param_dict))
result = json.loads(response.text)
status = result['content']['orderInfo']['status']
if status == 4: break
time.sleep(5)
return result
# ====================== 3. 大模型文本优化+角色修正 ======================
def llm_filter(self, text):
"""文本降噪+角色修正"""
# 第一步:文本优化
response = self.llm.chat.completions.create(
model="deepseek-v3",
messages=[{"role": "user", "content": f"优化课堂转写文本,删除噪声,修正错误,保留原意:{text}"}],
temperature=0.5
)
# 第二步:角色修正
res = self.llm.chat.completions.create(
model="deepseek-v3",
messages=[{"role": "user", "content": f"修正师生角色,仅修改角色列:{response.choices[0].message.content}"}],
temperature=0.5
)
return res.choices[0].message.content
# ====================== 4. 课堂活动智能识别 ======================
def _llm_identify_activity(self, sentences):
"""自动标注独立思考、小组讨论等课堂活动"""
prompt = f"""分析课堂对话,在对话间隙标注课堂活动(如:独立思考、小组讨论),输出CSV格式:
说话人,开始时间,结束时间,"内容"
{sentences}"""
response = self.llm.chat.completions.create(
model="deepseek-v3", messages=[{"role": "user", "content": prompt}], temperature=0.5
)
return response.choices[0].message.content
# ====================== 5. 主处理流程 ======================
def process(self):
"""视频转写+大模型优化全流程"""
# 1. 视频转音频
base_name = os.path.splitext(os.path.basename(self.upload_file_path))[0]
wav_path = os.path.join("audio", f"{base_name}.wav")
self.movie_to_audio(self.upload_file_path, wav_path)
self.upload_file_path = wav_path
# 2. 讯飞语音识别
ts = str(int(time.time()))
signa = self.get_signa(ts)
upload_resp = self.upload_file(ts, signa)
if not upload_resp: return None
result = self.get_recognition_result(ts, signa, upload_resp['content']['orderId'])
if result['content']['orderInfo']['status'] != -1: return None
# 3. 解析转写结果+大模型处理
self.save_processed_result(result)
json_path = os.path.join("result", f"{base_name}_processed.json")
self._processing_sentences(json_path)
# 4. 输出标准化数据
csv_file = self.json_to_sentences_csv(json_path)
cv_json = self.json_to_sentences_cv_json()
return cv_json, csv_file
3 系统使用方法
3.1 配置密钥
python
if __name__ == '__main__':
# 讯飞API密钥
APPID = "你的讯飞APPID"
SECRET_KEY = "你的讯飞密钥"
# 大模型API密钥
LLM_API_KEY = "你的阿里云/DeepSeek密钥"
# 视频路径
VIDEO_PATH = "test.mp4"
# 初始化并运行
processor = AudioToData(APPID, SECRET_KEY, VIDEO_PATH, LLM_API_KEY)
result = processor.process()
print("处理完成,输出文件:", result[1])
3.2 输出结果
音频文件:audio/xxx.wav
转写 JSON:result/xxx_processed.json
对话 CSV:result/xxx_processed_sentences.csv
接口 JSON:标准化接口返回格式
4 核心功能解析
4.1 视频音频自动化提取
基于MoviePy库直接读取 MP4 视频,提取音频轨道并保存为标准 WAV 格式,支持指定时长截取,适配大体积视频处理,避免内存溢出。
4.2 高精度语音识别
调用讯飞星火教育领域专用 API,支持双人对话分离,自动区分师生说话人,转写准确率适配课堂环境口音与噪声。
4.3 大模型智能优化
- 文本降噪:删除「嗯、啊」等无意义语气词,修正识别错误词汇;
- 角色修正:基于上下文自动修正说话人角色错误;
- 活动识别:根据教师指令自动标注「独立思考」「小组讨论」等课堂活动,填补对话间隙的教学行为。
4.4 标准化数据输出
- CSV 格式:时间 + 角色 + 对话内容,可直接用于 Excel 分析;
- JSON 格式:适配后端接口,包含时间戳、角色编号、文本内容,可直接接入智慧教育平台。
5 系统优势与应用场景
5.1 核心优势
全自动化:无需人工干预,从视频上传到结果输出一键完成;
高精度:讯飞语音识别 + 大模型双重优化,文本准确率≥95%;
轻量化:依赖库少,部署简单,支持本地运行;
标准化:输出格式通用,可快速集成业务系统。
5.2 应用场景
智慧课堂教学视频自动分析;
教师课堂行为自动化评估;
教学资源数字化转写与归档;
在线教育课程字幕自动生成。
6 总结
本文实现的课堂视频智能转写与分析系统,整合了视频音频处理、语音识别、大模型文本智能优化三大核心技术,解决了传统课堂视频转写效率低、错误多、人工标注成本高的痛点。系统具备自动化、高精度、轻量化等特点,可广泛应用于智慧教育领域,为课堂教学分析、教学资源数字化提供高效解决方案