目录
一、基于whisper的语音识别模块
二、文本摘要模块
一、基于whisper的语音识别模块
import json import whisper import torch #from paddlenlp import Taskflow # 加载模型(自动下载) torch.cuda.empty_cache() # 清理缓存 model = whisper.load_model("small") # 首次运行会自动下载模型 # 转录音频 result = model.transcribe( audio="13-后台任务.mp4", temperature=0.2, # 降低随机性 language="zh", # 中文 fp16=False, # 一定记得设置这个参数,避免Nan问题 beam_size=5, # 束搜索宽度 #word_timestamps=True # 获取词级时间戳 initial_prompt = "以下是普通话的句子,这是一段会议记录。" ) # 输出json格式 with open("output.json", "w") as f: json.dump(result, f, indent=2) #输出txt格式 with open("output.txt", "w", encoding="utf-8") as f: f.write(result["text"]) print(result)1、一开始运行时出现NaN问题,添加参数
fp16=False
降低精度
2、由于后续使用bert模型进行文本摘要需要文本中有标点符号,small模型转出的文本没有标点(medium和large应该有,我的电脑配置不够),添加参数
initial_prompt = "以下是普通话的句子,这是一段会议记录。"
3、代码运行后(如果视频或音频较长,需要等待好几分钟,参考我1.5小时的视频大概等待7—9分钟)会自动在当前目录下生成json和txt文件。结果如下:
二、文本摘要模块
目前方案:
1、抽取式:
1)用bert获取句子表示,计算每个句子与文档的整体相似度,按顺序选择top句子(test2.py或mybert.py)已实现,效果不好,只能得到最后几个句子
2)使用bert-extractive-summarizer库,代码如下:
from summarizer import Summarizer model = Summarizer(model="bert-base-chinese") text = "这里是需要摘要的中文文本..." # 抽取式摘要 summary = model(text, ratio=0.2) # 按比例提取关键句子 print(summary)安装有问题,无法安装这个库
pip install bert-extractive-summarizer
报错如下
原因是没有支持spacy依赖包的c++编译环境,安装预编译好的spacy
pip install spacy --prefer-binary -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install transformers scikit-learn numpy # 手动安装核心依赖
2、生成式:
from transformers import BertConfig, EncoderDecoderConfig, EncoderDecoderModel # 首先创建编码器和解码器配置 encoder_config = BertConfig.from_pretrained("bert-base-chinese") decoder_config = BertConfig.from_pretrained("bert-base-chinese") # 修改解码器配置以支持生成任务 decoder_config.is_decoder = True decoder_config.add_cross_attention = True # 创建EncoderDecoder模型 model = EncoderDecoderModel.from_encoder_decoder_pretrained( "bert-base-chinese", "bert-base-chinese", encoder_config=encoder_config, decoder_config=decoder_config ) # 然后需要在摘要任务上微调这个模型才能获得好的效果需要自己配置模型
jieba分词器安装:jieba · PyPI
进入目录下运行cmd
python环境下测试: