- 微信与QQ语音替换:实现语音自定义
本项目将介绍安卓平台如何实现微信和QQ的语音消息自定义,包括使用微软TTS文字转语音、本地音频直接替换,以及通过ZeroTermux工具结合Python和FFmpeg进行音频格式转换,最终将音频替换为微信的AMR格式或QQ的SLK格式。以下是详细步骤。
- 注意替换语音需要Root,音频转格式不需要
- 设备要求:已Root的Android手机(需要Root权限以替换系统文件)。
- ZeroTermux:一个Android上的Termux变种终端工具,用于运行Linux命令。
- Python:用于脚本编写和音频处理。
- FFmpeg:音频格式转换的核心工具。
- Python库:
pilk:用于处理SLK格式音频。edge-tts:微软TTS文字转语音的Python接口。
- 支持的音频格式:mp3、ogg、flac、wav、m4a、aac、amr、slk。
- 安装ZeroTermux
- 从可靠来源下载并安装ZeroTermux。
- 打开应用,更新包管理器:
pkg update && pkg upgrade
- 安装Python和FFmpeg
- 安装Python:
pkg install python - 安装FFmpeg:
pkg install ffmpeg
- 安装Python:
- 安装Python相关库
- 安装
pilk和edge-tts:pip install pilk edge-tts
- 安装
- 步骤:
edge-tts --text "测试语音" --voice zh-CN-XiaoxiaoNeural --write-media=output.mp3- 或者编写Python脚本,使用
edge-tts将文字转换为语音:import edge_tts import asyncio async def text_to_speech(text, output_file): voice = "zh-CN-XiaoxiaoNeural" # 可选其他微软语音模型 communicate = edge_tts.Communicate(text, voice) await communicate.save(output_file) text = "你好,这是自定义语音测试。" asyncio.run(text_to_speech(text, "output.mp3"))
- 运行脚本生成MP3格式的音频文件。
- 微软TTS发音人列表查询
edge-tts --list- 准备任意格式的本地音频文件(如MP3、WAV等),确保文件可访问。
- 使用FFmpeg将音频转换为AMR格式(微信语音默认格式):
ffmpeg -i input.mp3 -ar 8000 -ac 1 -ab 12.2k -c:a amr_nb output.amr- 使用
pilk将音频转换为SLK格式(QQ语音默认格式)。首先将MP3格式转换为PCM格式,再转换为SLK格式:
- 将MP3转换为PCM:
ffmpeg -i input.mp3 -f wav -ar 16000 -ac 1 output.pcm
- 使用
pilk将PCM文件转换为SLK格式:pilk -i output.pcm -o output.slk
- 找到目标路径
微信语音路径:私有目录/data/data
/data/data/com.tencent.mm/MicroMsg/[用户ID]/voice2/不知什么加密很长一段字符
QQ语音路径:data目录/sdcard/Android
/storage/emulated/0/Android/data/com.tencent.mobileqq/Tencent/MobileQQ/[QQ号]/ptt/使用Root权限访问这些目录举例,根据实际情况修改,也可mt管理器手动查找替换
- 使用以下命令查找QQ的语音文件目录:
find /data/data/com.tencent.mobileqq/files/ -name "*.slk"
- 使用以下命令查找微信的语音文件目录:
find /data/data/com.tencent.mm/MicroMsg/ -name "*.amr"
- 将生成的
output.slk文件复制到QQ语音目录:
su -c 'cp output.slk /storage/emulated/0/Android/data/com.tencent.mobileqq/Tencent/MobileQQ/[QQ号]/ptt/25/328/your_target.slk'- 注意Root复制过来,需要更改权限
- 而这种方法不需要,Shizuku授权zeroTermux也可以实现QQ语音的替换,但是要由Root权限激活,有测试过是可以成功的,之前的脚本没保存,直接在原脚本上改的root,如果无线调试激活,找不到那个目录,可能权限不够,基于安卓15,ColorOS15系统测试,其他手机系统自行测试,也可以试一下Shizuku激活 mt管理器 手动替换试一下,我并没有尝试
- 将生成的
output.amr文件复制到微信语音目录:
su -c 'cp output.amr /data/data/com.tencent.mm/MicroMsg/xxxx.../your_target.amr'
chmod 600 xxx通过上述步骤,你可以实现微信和QQ的语音替换功能,支持通过微软TTS生成语音或使用本地音频文件进行替换。同时,通过ZeroTermux在Root设备上执行Python脚本,结合FFmpeg和pilk库进行音频格式转换,确保音频格式符合微信的AMR或QQ的SLK要求,最终成功替换系统中的语音文件。
- Shell脚本具体调用方法可以看项目的Termux-Shell文件夹里面的脚本内容,尝试执行
- 安卓APK 见 Releases