现在已经有很多非常不错的语音转文本的AI应用了,比如通义听悟、飞书妙记等。不过,对于大批量、多个文件夹的语音转文本,手工操作就比较麻烦了,还是有个程序自动化运行更方面。
Whisper 是一个由 OpenAI 开发的开源语音识别库,旨在将音频内容转换为文本。它使用深度学习模型来识别和转录语音,支持多种语言和多种音频格式。借助这个开源免费的Whisper库,可以很方便的实现批量语音转文本。
在kimichat对话框中输入提示词:
你是一个Python编程专家,要完成一个Python脚本的编写任务,具体步骤如下:
打开文件夹:D:\CHATGPT For TikTok TikTok Mastery with CHATGPT
文件夹里面有多个子文件夹,子文件夹中有mp3格式的音频,读取子文件夹中的所有音频文件;
用openai-whisper库将mp3格式音频识别为和音频同名的文本文档,然后保存在和mp3音频的同一个文件夹中;
注意:Whisper语音模型使用medium模型,要识别的音频为英文内容
下面是openai-whisper库的使用示例:
import whisper
model = whisper.load_model("medium")
result = model.transcribe("audio.mp3")
print(result["text"])
这是kimichat给出的Python源代码:
import os
import whisper
# 定义 Whisper 模型路径
MODEL_PATH = "medium" # 这里我们直接使用 "medium" 字符串,因为根据你的描述,不需要指定具体的模型文件路径
# 定义音频文件夹路径
AUDIO_FOLDER = 'D:\\CHATGPT For TikTok TikTok Mastery with CHATGPT'
# 初始化 Whisper 模型
model = whisper.load_model(MODEL_PATH)
# 遍历文件夹中的所有子文件夹和文件
for root, dirs, files in os.walk(AUDIO_FOLDER):
for file in files:
# 检查文件是否为 mp3 格式
if file.endswith('.mp3'):
# 构建 mp3 文件的完整路径
mp3_path = os.path.join(root, file)
# 构建文本文件的完整路径
text_path = os.path.splitext(mp3_path)[0] + '.txt'
# 使用 Whisper 模型识别音频并生成文本
try:
result = model.transcribe(mp3_path)
# 保存文本到文件
with open(text_path, 'w', encoding='utf-8') as f:
f.write(result["text"])
print(f'Transcription saved: {text_path}')
except Exception as e:
print(f'Error transcribing audio from {mp3_path}: {e}')
print('Transcription process completed.')
由于whisper库依赖pyTorch,所以还要安装其他几个库。而这几个库由于版本兼容问题,可能会发生冲突,所以最好使用conda生成虚拟的Python环境,然后安装在这个虚拟环境中。
用conda创建一个3.9版本的Python环境:conda create n myenv pythnotallow=3.9
在这个虚拟环境中安装whisper库:pip install openai-whisper -i https://pypi.tuna.tsinghua.edu.cn/simple
安装pytorch库:conda install pytorch torchvision torchaudio cpuonly -c pytorch
whisper 在处理音频文件时会用到 ffmpeg,也需要安装,下载地址:https://github.com/BtbN/FFmpeg-builds/releases,安装完成后,然后将ffmpeg.exe所在文件夹路径在系统环境变量设置中添加到变量Path中。
接下来,在vscode里面设置好使用这个虚拟的Python3.9版本环境:
View——command palette——select interpreter——Python3.9.19
这些都设置好之后,就可以在虚拟环境中运行Python程序了:
运行时出现一个警告:d:\anaconda\envs\myenv\lib\site-packages\whisper\transcribe.py:115: UserWarning: FP16 is not supported on CPU; using FP32 instead
warnings.warn("FP16 is not supported on CPU; using FP32 instead")
这个警告信息 UserWarning: FP16 is not supported on CPU; using FP32 instead 是由于尝试在 CPU 上使用半精度(FP16)浮点数进行计算,但 CPU 不支持 FP16 运算,因此回退到使用单精度(FP32)浮点数。
在深度学习中,FP16 可以提供更快的计算速度和减少内存使用,但需要特定的硬件支持,比如支持 FP16 运算的 GPU。如果你在 CPU 上运行代码或者 GPU 不支持 FP16,那么库会自动回退到使用 FP32,这是一个完全兼容但计算速度较慢的选项。
这个警告通常不会影响程序的运行,只是表明性能可能不是最优的。如果你希望消除这个警告,可以采取以下措施之一:
使用支持 FP16 的 GPU:如果你有支持 FP16 的 GPU,确保你的环境已经正确安装并配置了相应的驱动和库(如 CUDA 和 cuDNN)。这样,当你在 GPU 上运行代码时,就可以利用 FP16 提升性能。
忽略警告:如果你不打算使用 FP16 支持的硬件,可以选择忽略这个警告。在 Python 中,你可以使用 warnings 库来忽略特定类型的警告:
import warnings
warnings.filterignore("UserWarning", message="FP16 is not supported on CPU; using FP32 instead")
将上述代码添加到你的脚本中,可以在运行时忽略这个特定的警告信息
直接忽略这个警告就好,程序运行结果良好: