Python 语音转文本(wav2vec2)
作者:追风剑情 发布于:2026-6-9 17:17 分类:AI
一、下载 FFmpeg
将 ffmpeg 的 bin 目录配置到环境变量中。
示例:
import os
os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"
import argparse
import torch
from transformers import Wav2Vec2ForCTC, Wav2Vec2Processor
from pydub import AudioSegment
import soundfile as sf
from tqdm import tqdm
def convert_and_split_audio(input_file, output_dir, chunk_length_ms=60*1000, target_sample_rate=16000):
"""
将音频文件转换为目标采样率,并按指定时长分割成多个小块。
返回分割后的临时文件路径列表。
"""
# 加载音频(支持 mp3, wav 等)
audio = AudioSegment.from_file(input_file)
# 转换采样率
audio = audio.set_frame_rate(target_sample_rate)
# 按块切割
chunks = [audio[i:i+chunk_length_ms] for i in range(0, len(audio), chunk_length_ms)]
output_files = []
base_name = os.path.splitext(os.path.basename(input_file))[0]
os.makedirs(output_dir, exist_ok=True)
for idx, chunk in enumerate(chunks):
chunk_name = os.path.join(output_dir, f"{base_name}_chunk{idx}.wav")
chunk.export(chunk_name, format="wav")
output_files.append(chunk_name)
return output_files
def main():
parser = argparse.ArgumentParser(description="使用 Wav2Vec2 进行长音频转录")
parser.add_argument("--input_file", type=str, default="888.mp3", help="输入音频文件路径")
parser.add_argument("--model_name", type=str, default="jonatasgrosman/wav2vec2-large-xlsr-53-chinese-zh-cn", help="预训练模型名称")
parser.add_argument("--chunk_minutes", type=int, default=1, help="每块时长(分钟)")
parser.add_argument("--temp_dir", type=str, default="./temp_chunks", help="临时分块存储目录")
args = parser.parse_args()
# 1. 分割音频
print("正在分割音频...")
chunk_files = convert_and_split_audio(
args.input_file,
args.temp_dir,
chunk_length_ms=args.chunk_minutes * 60 * 1000,
target_sample_rate=16000
)
print(f"共分割为 {len(chunk_files)} 个片段")
# 2. 加载模型和处理器(使用 GPU 如果可用)
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
print(f"使用设备: {device}")
processor = Wav2Vec2Processor.from_pretrained(args.model_name)
model = Wav2Vec2ForCTC.from_pretrained(args.model_name).to(device)
model.eval()
# 3. 逐块转录
transcriptions = []
for chunk_file in tqdm(chunk_files, desc="转录进度"):
try:
# 读取音频块
audio_input, sample_rate = sf.read(chunk_file)
# 确保是单声道(如果立体声则取均值)
if len(audio_input.shape) > 1:
audio_input = audio_input.mean(axis=1)
# 处理输入
inputs = processor(audio_input, sampling_rate=16000, return_tensors="pt", padding=True)
input_values = inputs.input_values.to(device)
# 推理
with torch.no_grad():
logits = model(input_values).logits
# 解码
predicted_ids = torch.argmax(logits, dim=-1)
transcription = processor.batch_decode(predicted_ids)[0]
transcriptions.append(transcription)
except Exception as e:
print(f"处理文件 {chunk_file} 时出错: {e}")
transcriptions.append("")
# 4. 保存结果
output_txt = "transcriptions.txt"
with open(output_txt, "w", encoding="utf-8") as f:
for idx, text in enumerate(transcriptions):
f.write(f"块 {idx}:\n{text}\n\n")
print(f"转录结果已保存到 {output_txt}")
# 可选:删除临时分块文件
# import shutil
# shutil.rmtree(args.temp_dir)
if __name__ == "__main__":
main()
标签: AI
日历
最新文章
随机文章
热门文章
分类
存档
- 2026年6月(4)
- 2026年5月(29)
- 2026年4月(7)
- 2026年3月(15)
- 2026年2月(3)
- 2026年1月(6)
- 2025年12月(1)
- 2025年11月(1)
- 2025年9月(3)
- 2025年7月(4)
- 2025年6月(5)
- 2025年5月(1)
- 2025年4月(5)
- 2025年3月(4)
- 2025年2月(3)
- 2025年1月(1)
- 2024年12月(5)
- 2024年11月(5)
- 2024年10月(5)
- 2024年9月(3)
- 2024年8月(3)
- 2024年7月(11)
- 2024年6月(3)
- 2024年5月(9)
- 2024年4月(10)
- 2024年3月(11)
- 2024年2月(24)
- 2024年1月(12)
- 2023年12月(3)
- 2023年11月(9)
- 2023年10月(7)
- 2023年9月(2)
- 2023年8月(7)
- 2023年7月(9)
- 2023年6月(6)
- 2023年5月(7)
- 2023年4月(11)
- 2023年3月(6)
- 2023年2月(11)
- 2023年1月(8)
- 2022年12月(2)
- 2022年11月(4)
- 2022年10月(10)
- 2022年9月(2)
- 2022年8月(13)
- 2022年7月(7)
- 2022年6月(11)
- 2022年5月(18)
- 2022年4月(29)
- 2022年3月(5)
- 2022年2月(6)
- 2022年1月(8)
- 2021年12月(5)
- 2021年11月(3)
- 2021年10月(4)
- 2021年9月(9)
- 2021年8月(14)
- 2021年7月(8)
- 2021年6月(5)
- 2021年5月(2)
- 2021年4月(3)
- 2021年3月(7)
- 2021年2月(2)
- 2021年1月(8)
- 2020年12月(7)
- 2020年11月(2)
- 2020年10月(6)
- 2020年9月(9)
- 2020年8月(10)
- 2020年7月(9)
- 2020年6月(18)
- 2020年5月(4)
- 2020年4月(25)
- 2020年3月(38)
- 2020年1月(21)
- 2019年12月(13)
- 2019年11月(29)
- 2019年10月(44)
- 2019年9月(17)
- 2019年8月(18)
- 2019年7月(25)
- 2019年6月(25)
- 2019年5月(17)
- 2019年4月(10)
- 2019年3月(36)
- 2019年2月(35)
- 2019年1月(28)
- 2018年12月(30)
- 2018年11月(22)
- 2018年10月(4)
- 2018年9月(7)
- 2018年8月(13)
- 2018年7月(13)
- 2018年6月(6)
- 2018年5月(5)
- 2018年4月(13)
- 2018年3月(5)
- 2018年2月(3)
- 2018年1月(8)
- 2017年12月(35)
- 2017年11月(17)
- 2017年10月(16)
- 2017年9月(17)
- 2017年8月(20)
- 2017年7月(34)
- 2017年6月(17)
- 2017年5月(15)
- 2017年4月(32)
- 2017年3月(8)
- 2017年2月(2)
- 2017年1月(5)
- 2016年12月(14)
- 2016年11月(26)
- 2016年10月(12)
- 2016年9月(25)
- 2016年8月(32)
- 2016年7月(14)
- 2016年6月(21)
- 2016年5月(17)
- 2016年4月(13)
- 2016年3月(8)
- 2016年2月(8)
- 2016年1月(18)
- 2015年12月(13)
- 2015年11月(15)
- 2015年10月(12)
- 2015年9月(18)
- 2015年8月(21)
- 2015年7月(35)
- 2015年6月(13)
- 2015年5月(9)
- 2015年4月(4)
- 2015年3月(5)
- 2015年2月(4)
- 2015年1月(13)
- 2014年12月(7)
- 2014年11月(5)
- 2014年10月(4)
- 2014年9月(8)
- 2014年8月(16)
- 2014年7月(26)
- 2014年6月(22)
- 2014年5月(28)
- 2014年4月(15)
友情链接
- Unity官网
- Unity圣典
- Unity在线手册
- Unity中文手册(圣典)
- Unity官方中文论坛
- Unity游戏蛮牛用户文档
- Unity下载存档
- Unity引擎源码下载
- Unity服务
- Unity Ads
- wiki.unity3d
- Visual Studio Code官网
- SenseAR开发文档
- MSDN
- C# 参考
- C# 编程指南
- .NET Framework类库
- .NET 文档
- .NET 开发
- WPF官方文档
- uLua
- xLua
- SharpZipLib
- Protobuf-net
- Protobuf.js
- OpenSSL
- OPEN CASCADE
- JSON
- MessagePack
- C在线工具
- 游戏蛮牛
- GreenVPN
- 聚合数据
- 热云
- 融云
- 腾讯云
- 腾讯开放平台
- 腾讯游戏服务
- 腾讯游戏开发者平台
- 腾讯课堂
- 微信开放平台
- 腾讯实时音视频
- 腾讯即时通信IM
- 微信公众平台技术文档
- 白鹭引擎官网
- 白鹭引擎开放平台
- 白鹭引擎开发文档
- FairyGUI编辑器
- PureMVC-TypeScript
- 讯飞开放平台
- 亲加通讯云
- Cygwin
- Mono开发者联盟
- Scut游戏服务器引擎
- KBEngine游戏服务器引擎
- Photon游戏服务器引擎
- 码云
- SharpSvn
- 腾讯bugly
- 4399原创平台
- 开源中国
- Firebase
- Firebase-Admob-Unity
- google-services-unity
- Firebase SDK for Unity
- Google-Firebase-SDK
- AppsFlyer SDK
- android-repository
- CQASO
- Facebook开发者平台
- gradle下载
- GradleBuildTool下载
- Android Developers
- Google中国开发者
- AndroidDevTools
- Android社区
- Android开发工具
- Google Play Games Services
- Google商店
- Google APIs for Android
- 金钱豹VPN
- TouchSense SDK
- MakeHuman
- Online RSA Key Converter
- Windows UWP应用
- Visual Studio For Unity
- Open CASCADE Technology
- 慕课网
- 阿里云服务器ECS
- 在线免费文字转语音系统
- AI Studio
- 网云穿
- 百度网盘开放平台
- 迅捷画图
- 菜鸟工具
- [CSDN] 程序员研修院
- 华为人脸识别
- 百度AR导航导览SDK
- 海康威视官网
- 海康开放平台
- 海康SDK下载
- git download
- Open CASCADE
- CascadeStudio
- OpenClaw中文社区
- three.js manual
- SVG官方文档
交流QQ群
-
Flash游戏设计: 86184192
Unity游戏设计: 171855449
游戏设计订阅号







