
























pip install moviepy pip install SpeechRecognition pip install pydub pip install ffmpeg-downloader pip install imageio-ffmpeg pip install openai-whisper
识别音频声音 ,转换不是很准
# encoding: utf-8
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:pip install moviepy SpeechRecognition pip install openai-whisper
# 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 = "完整演讲文稿_带时间戳.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("加载离线语音模型 tiny ...")
model = whisper.load_model("tiny")
# 4. 开始识别,开启分段时间戳
print("开始逐段识别演讲内容,请等待...")
result = model.transcribe(
audio=TEMP_WAV,
language="zh",
verbose=False,
word_timestamps=True
)
# 5. 格式化带时间戳文稿,实时打印每一段
full_content = "=== EV录屏 第十八届海峡论坛苏恒演讲 完整转写稿 ===\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}")
输出:

第十八届海峡论坛苏恒演讲 完整修正定稿(AI修正:保留原时间戳、修正同音错字、理顺语义、规范用词) === EV 录屏 2026 年 6 月 13 日 第十八届海峡论坛苏恒演讲 完整转写稿 === [00:00 - 00:02] 王沪宁主席、李慎明副主席 [00:02 - 00:04] 各位领导,各位嘉宾 [00:04 - 00:07] 各位两岸的朋友们,大家好 [00:08 - 00:11] 最近北京非常热闹 [00:11 - 00:15] 有超过 21 位外国国家领导人到访北京 [00:15 - 00:19] 很多国家今年首个出访目的地 [00:19 - 00:20] 就是北京 [00:20 - 00:23] 美国中断高层往来九年之后 [00:23 - 00:26] 再次踏上中国的土地 [00:26 - 00:29] 法国、英国以及其他国家 [00:29 - 00:31] 联合国安理会五个常任理事国 [00:31 - 00:33] 当中的四个国家 [00:33 - 00:37] 他们的领导人都在极短的时间之内 [00:37 - 00:38] 到访北京 [00:38 - 00:40] 当然,第五个常任理事国 [00:40 - 00:42] 就是我们中国自己 [00:43 - 00:46] 我们看到全世界正在重新认识中国 [00:46 - 00:49] 并以此调整自身定位 [00:49 - 00:51] 调整对华相处的方向 [00:51 - 00:53] 在这些国际变局当中 [00:53 - 00:56] 最引发台湾民众关注的 [00:56 - 00:58] 就是美国态度的转变 [00:58 - 00:59] 各国访华之后 [01:00 - 01:01] 特朗普在空军一号专机上 [01:01 - 01:03] 连续表态四个 “不” [01:03 - 01:05] 不支持台湾走向 “独立” [01:05 - 01:08] 不愿跨越 9500 英里为台海战事出兵 [01:08 - 01:12] 不会让岛内势力误以为有美国撑腰而激化对立 [01:12 - 01:15] 不会轻易承诺对台军援 [01:15 - 01:19] 9500 英里是华盛顿到台北的直线距离 [01:19 - 01:22] 这不是刻意创造的说辞 [01:22 - 01:24] 而是客观的地理事实 [01:24 - 01:26] 不会靠政治口号发生改变 [01:26 - 01:31] 美国不会为了 9500 英里之外的冲突承担战争代价 [01:31 - 01:32] 紧随其后 [01:32 - 01:36] 一笔 141 亿美元的对台军售计划被暂停 [01:36 - 01:38] 在今年香格里拉对话会上 [01:38 - 01:42] 美国国防部长整场发言都没有提及台湾议题 [01:42 - 01:44] 这绝非政策态度的微调 [01:44 - 01:46] 而是对华战略巨大转向 [01:46 - 01:49] 越来越多台湾民众看清现实 [01:49 - 01:53] 自身的前途命运不能交由外部势力安排 [01:53 - 01:54] 我为什么会这么说? [01:54 - 01:57] 因为民调数据已经发生明显变化 [01:57 - 02:00] 近期《联合报》民调显示 [02:00 - 02:02] 支持 “台独” 的比例 [02:02 - 02:04] 创下近年新低 [02:04 - 02:07] 民主文教基金会的民调同样佐证 [02:07 - 02:09] 超过六成岛内民众认为 [02:09 - 02:13] 台湾应当主动与大陆展开谈判协商 [02:13 - 02:14] 台湾民众不是不想沟通 [02:14 - 02:17] 是过去被刻意蒙蔽、不敢想 [02:17 - 02:19] 如今大家愿意主动思考两岸出路 [02:19 - 02:22] 这份转变,源于看清了真相 [02:22 - 02:23] 看清外部势力如何对待台湾 [02:23 - 02:27] 也看清谁才是真正站在台湾民众身边的一方 [02:27 - 02:30] 长期以来,有人不断鼓吹 [02:30 - 02:31] 所谓台湾主流民意 [02:31 - 02:33] 是 “天然独” [02:33 - 02:35] 我想反问一个问题: [02:35 - 02:37] 如果 “台独” 真是民众天生的想法 [02:37 - 02:40] 为何要靠教科书洗脑灌输? [02:40 - 02:42] 如果 “台独” 是天然民意 [02:42 - 02:45] 为何要靠舆论媒体持续宣传洗脑? [02:45 - 02:49] 为何还要人为阻断两岸正常交流往来? [02:49 - 02:50] 发自内心的天然认同 [02:50 - 02:51] 不需要刻意管控、灌输 [02:51 - 02:53] 不需要舆论打压、封锁 [02:53 - 02:54] 不需要人为设限、阻隔 [02:55 - 02:57] 前不久发生一件事 [02:57 - 03:00] 把这套逻辑的荒谬展现得淋漓尽致 [03:00 - 03:01] 五月底 [03:01 - 03:04] 日本与菲律宾宣布启动 [03:04 - 03:06] 专属经济区划界谈判 [03:06 - 03:08] 划界争议海域的位置 [03:08 - 03:10] 就在台湾东部海域 [03:10 - 03:12] 这片是台湾渔民世代 [03:12 - 03:14] 赖以生存的传统作业渔场 [03:14 - 03:16] 两个和台湾没有主权关联的国家 [03:16 - 03:19] 私下划分这片属于两岸渔民的海域 [03:19 - 03:21] 这件事本身就十分荒唐 [03:21 - 03:22] 更荒唐的是 [03:22 - 03:24] 台湾地区当局的第一反应 [03:24 - 03:25] 在事件刚爆发时 [03:25 - 03:28] 居然表态认同日菲划界方案 [03:28 - 03:30] 当他国要用一纸协议瓜分 [03:30 - 03:31] 两岸渔民世代用生命 [03:31 - 03:33] 守护的渔区海域时 [03:33 - 03:36] 台当局居然表示认可 [03:36 - 03:39] 消息曝光后引发岛内舆论哗然 [03:39 - 03:41] 网络上不同立场的台湾网友 [03:41 - 03:42] 全部强烈表达愤怒不满 [03:42 - 03:45] 在全民强烈抗议下,台当局才被迫改口 [03:45 - 03:48] 可日方随后直接表态 [03:48 - 03:50] 任何第三方无权介入谈判 [03:50 - 03:53] 直接将台湾排除出海域协商谈判桌 [03:53 - 03:56] 你主动帮他国说话站队 [03:56 - 03:58] 对方转头就告诉你 [03:58 - 04:00] 你根本没有参与资格 [04:00 - 04:02] 反观中国大陆 [04:02 - 04:03] 在短短几天之内 [04:03 - 04:05] 同步完成法理声明与海上行动双重反制 [04:05 - 04:08] 派出多支海上执法编队 [04:08 - 04:10] 前往台湾东部东海 [04:10 - 04:12] 相关海域开展常态化海上执法巡查 [04:12 - 04:14] 在我发起一场 [04:14 - 04:16] 超万人参与的网络民调当中 [04:16 - 04:19] 百分之八十五的台湾网友 [04:19 - 04:21] 明确表态支持大陆维护海域权益的行动 [04:21 - 04:24] 同一片海洋、同一片渔场 [04:24 - 04:25] 台当局认同日菲损害渔民权益的行动 [04:25 - 04:28] 反倒谴责大陆正常海上巡查 [04:28 - 04:30] 但台湾老百姓的眼睛是雪亮的 [04:30 - 04:34] 当自身切身利益受到损害时 [04:34 - 04:36] 民心不会跟着政治口号摇摆 [04:36 - 04:38] 民心会追随什么? [04:38 - 04:40] 民心只会追随安稳的日子 [04:40 - 04:42] 台湾民众早已厌倦政治挂帅的对立生活 [04:42 - 04:45] 大家只想安安稳稳过好日子 [04:45 - 04:48] 我们不希望每天打开新闻 [04:48 - 04:51] 满眼都是两岸对抗、区域危机 [04:51 - 04:53] 都是各方放出来的强硬表态 [04:53 - 04:56] 农民想要稳定农产品销路 [04:56 - 04:58] 渔民想要安稳出海捕鱼、守住海权 [04:58 - 05:00] 青年想要广阔的发展机遇 [05:00 - 05:02] 为人父母者期盼的是 [05:02 - 05:04] 我们的孩子都能在安稳 [05:04 - 05:07] 和平的环境里长大成人 [05:07 - 05:09] 这些,才是当下每一位台湾民众心中 [05:09 - 05:13] 真正最在乎的切身诉求 [05:13 - 05:15] 而两岸的融合交流 [05:15 - 05:17] 从来都不是从政治议题起步 [05:17 - 05:20] 而是源于普通人的日常生活 [05:20 - 05:22] 现在台湾有五百六十五万抖音用户 [05:22 - 05:26] 将近四分之一的台湾总人口 [05:26 - 05:29] 小红书在台湾拥有三百万使用者 [05:29 - 05:32] 平均每八个台湾人就有一人在用 [05:32 - 05:35] 两岸物流互通使用率六年从百分之十八点七 [05:35 - 05:39] 上涨至四十七点五 [05:39 - 05:41] 台湾地区当局刻意封禁小红书平台 [05:41 - 05:44] 结果反而催生上百万人次FQ访问 [05:44 - 05:45] 越是封锁,民间交流越火热 [05:45 - 05:48] 在这些网络平台之上 [05:48 - 05:50] 如果不查看 IP 属地 [05:50 - 05:53] 你已经很难分辨 [05:53 - 05:55] 屏幕对面是大陆网友 [05:55 - 05:57] 还是台湾网友 [05:57 - 05:58] 因为我们共用一套网络流行语言 [05:58 - 06:01] 追同款影视剧、玩同款游戏 [06:01 - 06:03] 聊同款热门话题 [06:03 - 06:04] 说到影视剧热播 [06:04 - 06:06] 近期大陆男演员成毅在台湾爆红 [06:06 - 06:09] 成毅、罗云熙成为很多台湾女性心中的理想型 [06:09 - 06:13] 有台湾年轻人来到大陆后,在网络上感慨 [06:13 - 06:17] “两岸的大人为什么要把两岸关系搞得这么复杂?” [06:17 - 06:21] “只要让成毅、罗云熙多去台湾交流就好了。” [06:21 - 06:24] 话音落下,全场哄堂大笑 [06:24 - 06:25] 但笑过之后我们仔细思考 [06:25 - 06:28] 这句话背后蕴含的底层逻辑 [06:28 - 06:30] 其实比许多专业政治分析 [06:30 - 06:32] 都更加深刻直白 [06:32 - 06:33] 民心的自然流向 [06:33 - 06:35] 从来不是任何行政政策能够强行扭转 [06:35 - 06:38] 再看两岸往返航班数据: [06:38 - 06:40] 去年台湾同胞赴大陆人次 [06:40 - 06:41] 接近五百万 [06:41 - 06:43] 两岸航线平均上座率超过百分之八十 [06:43 - 06:47] 这还是在两岸航班、航点尚未完全恢复的前提下 [06:47 - 06:48] 几乎每一班从台湾飞往大陆的客机 [06:48 - 06:52] 都是满座状态 [06:52 - 06:56] 今年首次赴大陆的台湾青年、普通民众 [06:56 - 06:57] 出行人数增长三成以上 [06:57 - 06:59] 越来越多从未踏足大陆的台湾民众 [06:59 - 07:02] 勇敢迈出交流的第一步 [07:02 - 07:04] 透过民间交流不断深化、生根 [07:04 - 07:07] 海峡论坛已经连续举办十八届 [07:07 - 07:10] 民进党上台执政之后 [07:10 - 07:13] 针对海峡论坛设置的条条框框、限制越来越多 [07:13 - 07:15] 但无论如何设限阻隔 [07:15 - 07:17] 依旧有大量台湾民众主动前来参与 [07:17 - 07:19] 农民来寻找农产品外销销路 [07:19 - 07:20] 渔民前来洽谈渔业合作 [07:20 - 07:22] 青年前来寻找就业、创业机遇 [07:22 - 07:24] 大家奔赴这里,不为空洞政治口号 [07:24 - 07:25] 只为实实在在的民生与未来 [07:25 - 07:27] 就拿今年来说,台当局 [07:27 - 07:29] 明令禁止各县市政府公务人员参与论坛 [07:29 - 07:31] 台东县长为当地农民 [07:31 - 07:34] 争取外销渠道的参会申请都遭到驳回 [07:34 - 07:35] 一份超过三万三千人 [07:35 - 07:37] 参与的岛内网络民调显示 [07:37 - 07:39] 超八成二民众 [07:39 - 07:41] 反对当局限制海峡论坛交流的政策 [07:41 - 07:44] 越是设限打压,民众交流的意愿越强烈 [07:44 - 07:46] 两岸民众想要走近彼此的心愿 [07:46 - 07:48] 不需要任何行政机关批准许可 [07:48 - 07:50] 这不是刻意编造的故事 [07:50 - 07:53] 这是根植人心的本能期盼 [07:53 - 07:54] 政治可以人为设置隔阂阻碍 [07:54 - 07:56] 但普通人安稳过日子的生活诉求不会等人 [07:56 - 07:58] 我认为我们这一代人都十分幸运 [07:58 - 08:01] 当下这个时代 [08:01 - 08:03] 赋予了每一个普通人独立思考、自主选择的权利 [08:03 - 08:05] 我们不再需要 [08:05 - 08:07] 被单一话术灌输思想 [08:07 - 08:09] 被舆论裹挟立场 [08:09 - 08:10] 两岸交往的核心是人 [08:10 - 08:12] 民间融合才是大势所趋 [08:12 - 08:13] 即便靠教科书扭曲认知、靠舆论媒体刻意操控、靠行政手段阻断往来,人为制造对立隔绝, [08:13 - 08:18] 依旧挡不住两岸民众透过网络相互沟通期盼, [08:18 - 08:22] 挡不住两岸经贸、科技产业携手合作的脚步, [08:22 - 08:23] 更挡不住全体中华儿女 [08:23 - 08:26] 对两岸和平发展、繁荣安定的共同向往。 [08:26 - 08:27] 追求安稳好日子, [08:27 - 08:30] 本就是两岸民众与生俱来的天然心愿, [08:30 - 08:31] 两岸所有人都一样: [08:31 - 08:34] 期盼和平、期盼发展、期盼繁荣安定。 [08:34 - 08:35] 这份发自内心的共同期盼, [08:35 - 08:36] 从来没有任何人能够阻隔、阻挡。 [08:36 - 08:38] 谢谢大家。 [08:53 - 08:55] 感谢苏恒女士的发言 [08:57 - 08:59] 谢谢苏恒女士
以原视频或原稿为准。只是用技术处理的测试的。
# encoding: utf-8
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:pip install moviepy SpeechRecognition pip install openai-whisper
# 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}")
输出:

哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。