当前位置:首页>python>手机命令行语音转文字Python程序,无限制免费版,普通人也能完成哦

手机命令行语音转文字Python程序,无限制免费版,普通人也能完成哦

  • 2026-10-11 07:47:58
手机命令行语音转文字Python程序,无限制免费版,普通人也能完成哦

现在很多语音转文字工具不是收费,就是有次数或时间限制。使用起来总不尽兴。于是我和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

程序内容如下:

""" 音视频语音转文字 · 稳定版 - 使用 ffmpeg 处理音频,稳定可靠 - 支持本地文件和远程URL - 本地文件不会删除 - 远程文件下载后自动清理 """

import os import uuid import requests import time import sys import subprocess import tempfile

# ==================== 配置区 ==================== API_KEY = "sk-txeytxntkjafqulwhgkyagaruomfekwdqdzppdvrkpmaltas" # 使用抗干扰能力更强的模型 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):     """下载远程文件"""     filename = f"remote_{uuid.uuid4().hex[:8]}.mp4"     filepath = os.path.join(DOWNLOAD_DIR, filename)     print(f"📥 正在下载: {filename}")     headers = {'User-Agent': 'Mozilla/5.0'}     resp = requests.get(url, headers=headers, stream=True, timeout=60)     resp.raise_for_status()     total = int(resp.headers.get('content-length', 0))     downloaded = 0     with open(filepath, 'wb') as f:         for chunk in resp.iter_content(chunk_size=1024*1024):             if chunk:                 f.write(chunk)                 downloaded += len(chunk)                 if total > 0:                     percent = int(downloaded / total * 100)                     print(f"\r下载进度: {percent}%", end='')                     sys.stdout.flush()     print(f"\n✅ 下载完成 ({downloaded/1024/1024:.1f}MB)")     return filepath

 def convert_to_wav(file_path):     """使用 ffmpeg 将文件转换为 WAV 格式"""     print("🎵 正在转换音频...")     # 创建一个临时 WAV 文件     with tempfile.NamedTemporaryFile(suffix=".wav", delete=False) as tmpfile:         wav_path = tmpfile.name     # 构建 ffmpeg 命令: 提取音频,转为单声道16k WAV     cmd = [         'ffmpeg', '-i', file_path,         '-ac', '1',           # 单声道         '-ar', '16000',       # 16kHz 采样率         '-y',                 # 覆盖输出文件         wav_path     ]     try:         # 执行转换,隐藏输出信息         subprocess.run(cmd, capture_output=True, check=True)         print("✅ 转换完成")         return wav_path     except subprocess.CalledProcessError as e:         # 清理临时文件         if os.path.exists(wav_path):             os.unlink(wav_path)         raise Exception(f"音频转换失败: {e.stderr.decode()}")

 def transcribe(wav_path):     """调用 API 识别"""     print("🎤 正在识别...")     with open(wav_path, 'rb') as f:         files = {'file': ('audio.wav', f, 'audio/wav')}         data = {             'model': MODEL_ID,             'language': 'zh',             'response_format': 'text'         }         headers = {"Authorization": f"Bearer {API_KEY}"}         try:             response = requests.post(                 'https://api.siliconflow.cn/v1/audio/transcriptions',                 headers=headers,                 files=files,                 data=data,                 timeout=300             )             if response.status_code == 200:                 result = response.json()                 text = result.get("text", "")                 return text.strip()             else:                 return f"识别失败 (HTTP {response.status_code})"         except Exception as e:             return f"API调用失败: {e}"

 def play_ding():     """提示音(三声蜂鸣)"""     for _ in range(3):         print('\a', end='', flush=True)         time.sleep(0.2)

 def main():     print("=" * 50)     print("🎬 音视频语音转文字 · 稳定版")     print("=" * 50)     print("📢 说明:支持本地文件和网络链接")     print("       本地文件不会被删除")     print("       远程文件下载后自动清理\n")     while True:         print("\n" + "=" * 50)         path = input("📁 请输入路径或链接(直接回车退出): ").strip()         if not path:             print("👋 退出程序")             break         is_remote = is_url(path)         file_path = None         wav_path = None         try:             # 1. 获取文件(下载或直接使用)             if is_remote:                 print("🌐 检测到网络链接,开始下载...")                 file_path = download_file(path)             else:                 if not os.path.exists(path):                     print(f"❌ 文件不存在: {path}")                     continue                 file_path = path                 print(f"📁 使用本地文件: {file_path}")             # 2. 转换为 WAV             wav_path = convert_to_wav(file_path)             # 3. 识别             text = transcribe(wav_path)             # 4. 显示结果             print("\n" + "=" * 50)             print("📝 识别结果:")             print("=" * 50)             print(text)             print("=" * 50)             # 5. 播放提示音             play_ding()         except Exception as e:             print(f"\n❌ 错误: {e}")             play_ding()         finally:             # 清理文件             if wav_path and os.path.exists(wav_path):                 os.unlink(wav_path)                 print("🧹 临时音频文件已清理")             if is_remote and file_path and os.path.exists(file_path):                 os.unlink(file_path)                 print("🧹 下载的临时文件已清理")             elif file_path and os.path.exists(file_path):                 print(f"📁 本地文件已保留: {file_path}")     print("\n感谢使用,再见!")

 if __name__ == "__main__":     main()

四、执行

1、将以上main.py复制到手机指定目录,如手机根目录下的 \myai\

2、安装termux App

termux下载地址

下载地址github国内有时访问不了,可自行想办法,或找其他网址下载。

我在自己网盘也备份一份(不敢保证长期有效)

下载地址:通过网盘分享的文件:termux 链接: https://pan.baidu.com/s/1g7NeCOk5uZ9PKE3jdNsLIQ 提取码: 7344 

3、运行termux

4、在termux中安装依赖 #先确保存储权限已授权

termux-setup-storage

# 更新包管理器

pkg update && pkg upgrade

# 安装 Python 3.11 pkg install python

# 确保 pip 是最新版 pip install --upgrade pip

# 安装我们程序需要的库 pip install requests

 #安装 ffmpeg(你的程序需要它来转换音频)

pkg install ffmpeg # 验证安装 ffmpeg -version

#  进入程序目录并运行我们的程序 cd ~/storage/shared/myai python main.py

注意:如果中间出错可将错误结果给deepseek,他会告诉你如何用命令纠错继续完成

五、为方便以后执行,做批处理

# 添加到 bash 配置文件 echo "alias myai='cd ~/storage/shared/myai && python main.py'" >> ~/.bashrc

# 重新加载配置 source ~/.bashrc

# 测试运行

myai  回车

六、操作说明(以后都这样运行)

myai  回车

#录入音频或视频的网址,回车。(本地文件也可)

#系统开始下载,下载完毕自动转换成音频文件,然后自动上传第三方转换文字,完成后呈现结果,选中文字复制即可。过程中有提示。

#继续录入其他视频网址回车,可再进行下一个视频文字转换。

#转换后自动清理下载文件。不留垃圾。

#只录入回车则退出。

运行效果展示,红色标记是录入命令或网址区域。此处网址是抖音真实网址。(如何获取抖音视频真实网址的方法看我上篇文章)

七、termux打开声音配置,保证程序完成后能听到三声蜂鸣

# 创建配置目录(如果不存在) mkdir -p ~/.termux

# 编辑配置文件 nano ~/.termux/termux.properties

#此时在命令行打开配置文件需要编辑

#用虚拟箭头移动光标到 #bell-character=beep  这一行,去掉前面的“#”即可,退出(ctrl+x),提问是否保存,选择y回车完成。

#重启termux即可

这是刚进入termux界面,标注区域是虚拟键盘和回车

这是运行nano ~/.termux/termux.properties编辑配置后的界面,如白字字体,已经去掉“#”后按ctrl+x退出,其中蓝色字体是输入法区域,按x后蓝色地方应该显示x,再按蓝色x处生效。不同手机操作略有出入。

退出时先询问是否保存,按y后蓝字显示y再点击后退出。

以上方法,平板同样有效。

我的其他作品也很有价值,和此文章也有些许关系,欢迎阅读。    :)

最新文章

随机文章