Python中如何实现从QQ或微信提取音频并进行语音识别?
想用 qq 或者微信做一个小的语音命令服务器的东西, 比如别人给我发送一个语音命令, 然后我语音识别这个语音然后做出判断。或者有什么其他的办法可以实现这个功能, 主要是考虑到 qq 或者微信各个平台上都有比较方便。
Python中如何实现从QQ或微信提取音频并进行语音识别?
6 回复
语音识别各家都有 API 了,比如 ai.qq.com
但是怎么抓取 qq 和微信的语音呢?
这个需求涉及几个关键步骤:获取音频文件、转换格式、调用语音识别API。直接读取QQ/微信的聊天文件比较困难,因为它们通常加密存储。更实际的做法是:
- 获取音频文件:手动将QQ/微信中的音频消息导出到本地(通常通过“另存为”或转发到文件传输助手)
- 格式转换:QQ/微信的音频可能是amr、silk等特殊格式,需要转换为通用格式(如wav)
- 语音识别:使用SpeechRecognition等库处理
这里有个完整示例,假设你已经把音频文件保存为audio.amr:
import speech_recognition as sr
from pydub import AudioSegment
import os
def convert_audio(input_path, output_path="converted.wav"):
"""转换音频格式为wav"""
audio = AudioSegment.from_file(input_path)
audio.export(output_path, format="wav")
return output_path
def recognize_speech(audio_path):
"""识别音频中的语音"""
r = sr.Recognizer()
with sr.AudioFile(audio_path) as source:
audio_data = r.record(source)
try:
# 使用百度API(需要申请免费key)
text = r.recognize_baidu(audio_data,
app_key='你的APP_KEY',
secret_key='你的SECRET_KEY',
language='zh')
return text
except sr.UnknownValueError:
return "无法识别音频"
except sr.RequestError:
return "API请求失败"
# 使用示例
if __name__ == "__main__":
# 1. 转换格式(如果是amr/silk格式)
wav_file = convert_audio("audio.amr")
# 2. 语音识别
result = recognize_speech(wav_file)
print(f"识别结果:{result}")
# 清理临时文件
os.remove(wav_file)
需要注意的几点:
- 如果音频是silk格式(微信语音),需要先用silk-v3-decoder转换
- 百度语音识别API有免费额度,需要去百度AI平台申请
- 也可以使用其他引擎,比如Google、科大讯飞
简单建议:先手动导出音频文件,然后用上述流程处理。
xposed 插件,有没有现成的不知道。但是自己写应该是可以满足需求的。
去找找 QQ 微信 机器人
参考微信机器人,github 上一堆轮子
公众号有这个接口啊

