现在很多语音转文字工具不是收费,就是有次数或时间限制。使用起来总不尽兴。于是我和deepseek自己做了一个程序,我是项目经理,他是程序员,做了一个小巧的语音转文字程序。
一、缺点:
1、借助termux App(手机小型Linux模拟器)命令行执行,所以是命令行执行。
2、正因为还是Linux下运行,所以需要安装依赖。
3、也有失败的时候,不过重新运行可解决,可能和第三方的网络和高峰期有关,如果有失败时段较为集中,往往某时段失败后,再试还是失败。换个时段就好了。失败的情况是极少数。
二、特点:
1、因为核心还是Linux的所以pc应该也能执行,只是安装的依赖手机和pc的区别,可能不同。因为自己还开发了pc版的,所以手机版本没有在pc上印证,很可能该版本同时也能在PC上使用。手机版用起来更短小方便,所以以前开发pc版的就没在用了,因此不给大家推荐了pc版le。
2、虽说是语音转文字,实际上视频转文字也支持。程序先下载视频,(视频真正网址可通过其他工具获取,见我上篇文章),然后解析成音频文件,如果直接是音频文件则跳过转换成音频步骤,打包上传至第三方识别文字,识别后返回结果,可通过命令行文字复制功能,将识别结果copy到剪贴板。
3、如果是本地音频或视频,在直接转换上传,跳过下载。
4、要转换的音频或视频不限制长短大小,只要网络支持,可以很大,但也遇到特别大的文件没有正确完成的情况,时间或大小边界还需同志们自行测试,一般我们的需求都能满足。自己亲试过接近一个小时的视频文件都没有问题。
5、没有次数、大小的限制。如果有限制,我已经在程序中让他自行切分成小段进行解析,原则上没有大小限制。
三、具体程序如下:
(文本文件创建即可,不用专门的编辑器)
文件名:main.py 版本:V2.0
此版本修正:
1、抖音不允许程序下载了,单还允许手工下载,我们模拟手工下载
2、API_KEY = "***",把该部分替换成自己的api key
程序内容如下:
"""
音视频语音转文字 · 稳定版
- 使用 ffmpeg 处理音频,稳定可靠
- 支持本地文件和远程URL(使用 yt-dlp 下载,支持抖音/B站/YouTube等)
- 本地文件不会删除
- 远程文件下载后自动清理
"""
import os
import uuid
import requests
import time
import sys
import subprocess
import tempfile
# ==================== 配置区 ====================
API_KEY = "***"
# 使用抗干扰能力更强的模型
MODEL_ID = "FunAudioLLM/SenseVoiceSmall"
# =============================================
# 临时下载目录
DOWNLOAD_DIR = os.path.join(os.getcwd(), "temp_downloads")
os.makedirs(DOWNLOAD_DIR, exist_ok=True)
def is_url(path):
"""判断是否为网络链接"""
return path.startswith(('http://', 'https://'))
def download_file(url):
"""使用 yt-dlp 下载远程文件(支持抖音/B站/YouTube等),并显示进度"""
print(f"📥 正在下载: ")
# 检查 yt-dlp 是否安装
try:
subprocess.run(['yt-dlp', '--version'], capture_output=True, check=True)
except (subprocess.CalledProcessError, FileNotFoundError):
print("❌ yt-dlp 未安装,请在 Termux 中执行: pkg install yt-dlp")
raise Exception("yt-dlp 未安装")
# 生成临时文件名(yt-dlp 会自动添加扩展名)
base_name = f"remote_{uuid.uuid4().hex[:8]}"
temp_path = os.path.join(DOWNLOAD_DIR, base_name)
# 构建下载命令(不加 --quiet,让 yt-dlp 显示自己的进度条)
cmd = [
'yt-dlp',
'-o', temp_path, # 输出路径(无扩展名)
'--no-playlist', # 只下载单个视频
'--no-mtime', # 不修改文件时间
'--no-warnings', # 不显示警告(保留进度)
url