news 2026/9/4 6:38:56

python:speech(MP4) to text

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
python:speech(MP4) to text
# encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:pip install moviepy SpeechRecognition pip install openai-whisper move to text # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/6/14 17:40 # User : geovindu # Product : PyCharm # Project : Pysimple # File : MP4totextdest.py import warnings warnings.filterwarnings("ignore") warnings.filterwarnings("ignore", category=RuntimeWarning) from moviepy import VideoFileClip import speech_recognition as sr import os import whisper import numpy as np import wave import audioop import whisper.audio VIDEO_FILE = "20260614_102306.mp4" TEMP_WAV = "temp_audio.wav" OUTPUT_TXT = "完整演讲文稿_带时间戳medium.txt" # 1. 提取视频音频 print("正在提取音频...") video = VideoFileClip(VIDEO_FILE) # 导出16位单声道标准wav,适配识别 video.audio.write_audiofile(TEMP_WAV, codec="pcm_s16le", fps=16000) video.close() # 2. 原生Python读取wav,彻底绕过ffmpeg def load_audio_without_ffmpeg(path): with wave.open(path, 'rb') as wav_file: n_channels = wav_file.getnchannels() width = wav_file.getsampwidth() frames = wav_file.readframes(wav_file.getnframes()) # 双声道转单声道 if n_channels == 2: frames = audioop.tomono(frames, width, 0.5, 0.5) # 转浮点音频数组 audio_np = np.frombuffer(frames, dtype=np.int16).flatten().astype(np.float32) / 32768.0 return audio_np # 覆盖whisper自带读取函数,不再调用ffmpeg import whisper.audio whisper.audio.load_audio = load_audio_without_ffmpeg # 3. 加载最轻量模型 tiny(速度最快,中文演讲够用) print("加载离线语音模型 medium ...") model = whisper.load_model("medium") # 4. 开始识别,开启分段时间戳 print("开始逐段识别演讲内容,请等待...") result = model.transcribe( audio=TEMP_WAV, language="zh", verbose=False, word_timestamps=True ) # 5. 格式化带时间戳文稿,实时打印每一段 full_content = "=== EV录屏 2026年6月13日 第十八届海峡论坛苏恒演讲 完整转写稿 ===\n\n" print("\n====================识别结果====================") for seg in result["segments"]: start_min = int(seg["start"] // 60) start_sec = int(seg["start"] % 60) end_min = int(seg["end"] // 60) end_sec = int(seg["end"] % 60) seg_text = seg["text"].strip() line = f"[{start_min:02d}:{start_sec:02d} - {end_min:02d}:{end_sec:02d}] {seg_text}" print(line) # 实时控制台打印每一段文字 full_content += line + "\n" # 6. 保存本地文本 with open(OUTPUT_TXT, "w", encoding="utf-8") as f: f.write(full_content) # 清理临时音频文件 os.remove(TEMP_WAV) print(f"\n================================================") print(f"✅ 全部识别完成!文稿已保存至:{OUTPUT_TXT}")
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/4 6:36:36

从系统架构视角精读《史记·五帝本纪》:解码华夏文明的初始设计

最近在整理历史学习笔记时,发现很多朋友对《史记》的开篇《五帝本纪》既熟悉又陌生。熟悉的是黄帝、尧、舜、禹这些如雷贯耳的名字,陌生的是他们具体做了什么,以及司马迁为何将他们作为华夏文明的开端来书写。本文将以技术人拆解系统架构的视…

作者头像 李华
网站建设 2026/9/4 6:36:32

LLM推理性能基准测试指南:关键指标、压测方法与工程实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/4 6:36:30

C与Python跨语言通信实战:基于UDP的高效数据传输方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/4 6:34:42

《恐龙猎人:起源》画面技术解析:从Nanite到Lumen的图形渲染实践

这次我们来看一个让老玩家兴奋的消息:经典IP《恐龙猎人》以《恐龙猎人:起源》的形式回归了。从最新放出的实机演示来看,这款游戏在画面表现上带来了不小的惊喜,无论是场景的宏大感、恐龙的细节刻画,还是光影特效的运用…

作者头像 李华
网站建设 2026/9/4 6:33:59

Java EE图书管理系统课程设计:从Servlet到MVC的完整开发实战

简介:本资源是一套完整的Java EE课程设计级图书管理系统实现方案,面向高校计算机相关专业学生及Java Web初学者,用于完成期末作业或课程实践任务。系统采用B/S架构,支持借阅者(学生、教师等)与管理员两类角…

作者头像 李华
网站建设 2026/9/4 6:33:00

320张香烟盒YOLO数据集:小而精的工业检测实战入口

简介:本资源是专为YOLO系列目标检测算法研发者与初学者打造的香烟盒子专用数据集,适用于工业质检、零售货架识别等实际场景中的小目标检测任务,支持YOLOv5至YOLOv11全版本模型训练与验证。压缩包共961个文件,包含320张高质量JPG图…

作者头像 李华