惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

www.infosecurity-magazine.com
www.infosecurity-magazine.com
D
DataBreaches.Net
T
Tailwind CSS Blog
M
MIT News - Artificial intelligence
Stack Overflow Blog
Stack Overflow Blog
F
Full Disclosure
V2EX - 技术
V2EX - 技术
N
News and Events Feed by Topic
Help Net Security
Help Net Security
L
LangChain Blog
Y
Y Combinator Blog
宝玉的分享
宝玉的分享
Google Online Security Blog
Google Online Security Blog
P
Proofpoint News Feed
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
The Blog of Author Tim Ferriss
Google DeepMind News
Google DeepMind News
The Register - Security
The Register - Security
B
Blog RSS Feed
N
Netflix TechBlog - Medium
N
News | PayPal Newsroom
TaoSecurity Blog
TaoSecurity Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
V
Vulnerabilities – Threatpost
B
Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
I
Intezer
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园_首页
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
AI
AI
aimingoo的专栏
aimingoo的专栏
大猫的无限游戏
大猫的无限游戏
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Cyberwarzone
Cyberwarzone
P
Proofpoint News Feed
Google DeepMind News
Google DeepMind News
G
GRAHAM CLULEY
Vercel News
Vercel News
罗磊的独立博客
MyScale Blog
MyScale Blog
Last Week in AI
Last Week in AI
博客园 - 司徒正美
C
CERT Recently Published Vulnerability Notes
GbyAI
GbyAI
Scott Helme
Scott Helme
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
T
Troy Hunt's Blog
A
About on SuperTechFans
P
Privacy International News Feed

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派 万字剖析:千问App深度体验报告(2026) - 少数派 在2026年,如何真正防止别人抄袭你的作品 - 少数派 YeeroAI:让 AI 对话真正成为知识管理的一部分 - 少数派 爬泰山 - 少数派 「旅图显影」 App 更新:这次,我们补上了一点「手感」 - 少数派 假期出门太折磨?我的 23 条经验帮你规划惬意旅行 - 少数派 工作流会变吗 - 少数派 Claude Opus 4.6 怎么用最省钱?我测了 5 种方案 - 少数派 GPT Image 2 让图文并茂不再稀罕 - 少数派 用户侧出发——什么是AI,我要不要学习? - 少数派 找片、转存、整理、播放一条龙!让你的付费网盘值回票价 - 少数派 欢迎试用!日课一问2.0插件 - 少数派 自己做的MDeditor,原本想购买 Typora 试了两次支付不成功,干脆自己做一个 - 少数派 vibe coding了一个 3MB 的小工具,让 ~/Downloads 彻底告别混乱 - 少数派 因为受不了 Mac 的风扇策略,我做了一个风扇控制工具 - 少数派 别只怪模型 - 少数派 Warp 终端的 AI 功能怎么用?我测了一周的体验 - 少数派 AI 写代码老是出 bug?这 5 个配置我后悔没早知道 - 少数派 「新玩意」苹果出相机可能就这样:Sigma BF + 45mm F2.8 DG Contemporary - 少数派 一个面向2030年的AI操作系统是什么样子的:浅谈cola这款有灵魂的Agent - 少数派 别只看写代码 - 少数派 每天解决10个问题,还是一口气攻坚解决400个? - 少数派 AI 交易机器人怎么搭?我用 Claude 跑了一周实盘 - 少数派 Maptoposter Online:把你爱的城市画成艺术海报 - 少数派 Function Calling 怎么用?我测了 3 个模型发现差距真大 - 少数派 Legend Talk:我做了个 AI 圆桌,让 160 位思想家围着你的问题转 - 少数派 如何找到自己的蓝方?在小县城寻找压力测试 - 少数派 语音输入与软件接口|2026年聊AI时,我们都聊些什么(上) - 少数派 混动已经卖爆,纯电又来补刀——钛7闪充版简直“不讲武德” - 少数派 本月玩什么|朋友收藏、识质存在、沙罗周期 - 少数派 为什么要每天坚持输出? - 少数派 Claude API 挂了好几个小时,你的项目有备用方案吗? - 少数派 Function Calling 没你想的复杂——我用它做了个有点用的工具 - 少数派 登录系统立即播放视频或者图片音乐的软件 - 少数派 我为什么创建 FlipHTML5 下载工具 - 少数派 残局没电?多品牌外设电量统一管理软件EasyBluetooth已支持RTSS游戏内显示以及AIDA64 - 少数派 前往通义路的路 - 少数派 太好看了,媲美Sun的个人导航页,NAS部署星云门户 - 少数派 乌黑嘴唇“一键检测”上线了 - 少数派 派早报:Claude AI 接入多个创意软件生态、FILCO 生产方接手品牌等 - 少数派 【更新】BearCLI、Claude 连接器与 MCP 服务器 - 少数派 记了上千条流水,还是看不懂财务?我做了一个让 AI 读懂账本的工作台 - 少数派 MINI R56 升级原厂 Sport 模式 - 少数派 新玩意 | 一棵柠檬树(仿真版) - 少数派 Momenta的“物理AI”野望,需迈过“含摩量”这道关 - 少数派 网页直接投屏控制手机!NAS一键部署PandaScrcpy,流畅丝滑可远程。 - 少数派 众测|邀你一同探索随身 AI 硬件入口 YoooClaw C·ONE - 少数派 2050大会:分享时间是真诚 参会记 - 少数派 iPad 赋能电影创作:国内首部宣纸手绘长片《燃比娃》的幕后故事 - 少数派 AI的审美:我用 8 个大模型给 100 张旅行照片打分 - 少数派 普通人如何破圈?去参加一个本地协会 - 少数派 把极空间的图标全换了,主题DIY全攻略打造你的专属NAS桌面 - 少数派 电子便签墙,帮你实现便签自由 - 少数派 我如何用三个 CLI 工具取代文档创建需求 - 少数派 原来真的有人可以玩一辈子 - 少数派 社区速递 139 | 派友热议三月买了啥、复古单反尼康 Df 体验 - 少数派 06 作品的赏析与评价 - 少数派 TDS REVIEW|索尼 WF-1000XM6 降噪真无线耳机体验 - 少数派 35.98万起售的第二代腾势D9,我看重的不是堆料,而是不凑合 - 少数派 鼠须管 Squirrel 皮肤配置指北 - 少数派 从watch ultra2换到redmi watch6 - 少数派 派早报:阿里巴巴发布视频生成模型 HappyHorse 1.0 等 - 少数派 我们做了「鸭川小记」:让语音先流动起来,再慢慢变成可整理的内容 - 少数派 别迷信1M - 少数派 家人们天塌了!网盘“大封杀”,多个渠道多条路,NAS部署PanHub - 少数派 AI与人勾心斗角!NAS一键部署AI狼人杀,假日休闲必备。 - 少数派 电商必备!Comfyui工作流批量生图插件,一次生成12张!支持Nano banana pro模型 - 少数派 Comfyui工作流配置Gpt-image-2模型教程,0.03/张 - 少数派 OpenClaw第三方APi怎么配置?可使用Gpt-image-2模型 - 少数派 会员社区话题精选 Ep. 103 - 少数派
怎么用 50 块搭个 AI 语音助手?我踩了 3 天坑 - 少数派
2026-05-03 · via 少数派

上周我妈抱怨手机字太小看不清,我灵机一动:要不做个语音助手?说话就能查天气、设提醒。结果这一折腾就是 3 天,踩了无数坑,最后把成本压到 50 块/月,延迟控制在 1.2 秒内。

直接说结论:用 Whisper API 做语音识别 + GPT-4o-mini 做对话 + Edge TTS 做语音合成,Python 100 行代码搞定,成本约 0.15 元/次对话。

技术方案对比

我测了 3 套方案,这是实测数据:

方案 识别延迟 对话延迟 合成延迟 月成本(300次) 踩坑指数
Whisper + GPT-4o-mini + Edge TTS 0.4s 0.6s 0.2s ¥45 ⭐⭐
本地 Whisper + Ollama + Piper 1.2s 3.5s 0.8s ¥0 ⭐⭐⭐⭐⭐
Azure 语音服务全家桶 0.3s 0.5s 0.15s ¥180

本地方案我直接放弃了,Ollama 跑 Llama 3.1 8B 慢得让人抓狂,老人等 3 秒就不耐烦了。Azure 倒是快,但一个月要 180 块,我自己都舍不得。

环境准备

pip install openai pyaudio edge-tts

PyAudio 在 Mac 上装起来巨坑,报一堆 portaudio 错误。最后发现要先装 portaudio:

brew install portaudio
pip install pyaudio

Windows 用户直接 pip install pyaudio 就行,Linux 要装 python3-pyaudio

方案一:最省钱的云端方案

录音模块

import pyaudio
import wave

def record_audio(filename="input.wav", duration=5):
    CHUNK = 1024
    FORMAT = pyaudio.paInt16
    CHANNELS = 1
    RATE = 16000

    p = pyaudio.PyAudio()
    stream = p.open(format=FORMAT, channels=CHANNELS,
                    rate=RATE, input=True,
                    frames_per_buffer=CHUNK)

    print("开始录音...")
    frames = []

    for _ in range(0, int(RATE / CHUNK * duration)):
        data = stream.read(CHUNK)
        frames.append(data)

    print("录音结束")
    stream.stop_stream()
    stream.close()
    p.terminate()

    wf = wave.open(filename, 'wb')
    wf.setnchannels(CHANNELS)
    wf.setsampwidth(p.get_sample_size(FORMAT))
    wf.setframerate(RATE)
    wf.writeframes(b''.join(frames))
    wf.close()

这里有个坑:采样率别用 44100,Whisper 对 16000 Hz 的识别准确率更高,而且文件小一半。

语音识别

import openai

client = openai.OpenAI(
    base_url="https://api.ofox.ai/v1",
    api_key="sk-xxx"  # 你的 API Key
)

def transcribe_audio(filename):
    with open(filename, "rb") as audio_file:
        transcript = client.audio.transcriptions.create(
            model="whisper-1",
            file=audio_file,
            language="zh"  # 指定中文,识别更准
        )
    return transcript.text

踩坑记录 1:一开始我没加 language="zh",结果我妈说"今天天气怎么样",识别成"How's the weather today"。加上语言参数后准确率从 70% 飙到 95%。

对话生成

def chat_with_ai(user_input):
    response = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[
            {"role": "system", "content": "你是一个友好的语音助手,回答要简短,控制在 50 字以内。"},
            {"role": "user", "content": user_input}
        ],
        max_tokens=100,
        temperature=0.7
    )
    return response.choices[0].message.content

踩坑记录 2:System prompt 里的"简短"很关键。一开始没加,AI 回答"今天天气"能说 200 字,语音播报听得人想睡觉。加上字数限制后,回答变成"今天多云,15 到 22 度,适合出门",刚刚好。

语音合成

import edge_tts
import asyncio

async def text_to_speech(text, output_file="output.mp3"):
    communicate = edge_tts.Communicate(text, "zh-CN-XiaoxiaoNeural")
    await communicate.save(output_file)

def speak(text):
    asyncio.run(text_to_speech(text))
    # 播放音频(需要 pygame 或 playsound)
    import pygame
    pygame.mixer.init()
    pygame.mixer.music.load("output.mp3")
    pygame.mixer.music.play()
    while pygame.mixer.music.get_busy():
        pygame.time.Clock().tick(10)

Edge TTS 是微软开源的,完全免费,音质吊打那些收费的 TTS API。zh-CN-XiaoxiaoNeural 是晓晓的声音,还有云希(男声)、晓伊(儿童音)可选。

主循环

def main():
    print("语音助手启动,按 Ctrl+C 退出")
    while True:
        try:
            input("按回车开始说话...")
            record_audio(duration=5)

            print("识别中...")
            user_text = transcribe_audio("input.wav")
            print(f"你说:{user_text}")

            if "退出" in user_text or "再见" in user_text:
                speak("再见")
                break

            print("思考中...")
            ai_response = chat_with_ai(user_text)
            print(f"AI:{ai_response}")

            speak(ai_response)

        except KeyboardInterrupt:
            print("\n程序退出")
            break
        except Exception as e:
            print(f"出错了:{e}")

if __name__ == "__main__":
    main()

方案二:加个唤醒词

老人用起来总忘记按回车,我又加了个语音唤醒功能。用 PocketSphinx 做本地关键词检测,听到"小助手"就自动开始录音:

from pocketsphinx import LiveSpeech

def wait_for_wakeword():
    speech = LiveSpeech(
        lm=False,
        keyphrase='小助手',
        kws_threshold=1e-20
    )

    for phrase in speech:
        if '小助手' in str(phrase):
            print("检测到唤醒词!")
            return True

踩坑记录 3:PocketSphinx 对中文支持很差,"小助手"经常识别成"小猪猪"。最后我改成英文"Hey Assistant",识别率才正常。中文唤醒词还是得上 Picovoice 或者 Snowboy(已停更)。

成本分析

按每天 10 次对话算(早上问天气、中午设提醒、晚上聊天):

  • Whisper API:$0.006/分钟,5 秒录音 = $0.0005/次
  • GPT-4o-mini:输入 $0.15/1M tokens,输出 $0.6/1M tokens,平均 200 tokens/次 = $0.0002/次
  • Edge TTS:免费

月成本:(0.0005 + 0.0002) × 10 × 30 = $0.21 ≈ ¥1.5

等等,我前面说 50 块/月是怎么算的?因为我后来加了联网搜索(天气、新闻),用了 GPT-4o 而不是 mini,成本涨到了 45 块。如果只是简单对话,1.5 块就够。

关于 ofox.ai 聚合平台

代码里我用的是 ofox.ai,一开始是因为懒得去 OpenAI 官网绑卡(我的 Visa 卡老是被拒)。

ofox.ai 是一个 AI 模型聚合平台,一个 API Key 可以调用 GPT-4o、Claude Opus 4.6、Gemini 3、DeepSeek V3 等 50+ 模型,兼容 OpenAI SDK 协议,低延迟直连无需代理,支持支付宝按量计费。

实测下来有两个意外收获:

  1. 延迟比我预期低:我以为中间多一层会慢,结果 Whisper API 调用延迟只有 420ms,跟直连 OpenAI 差不多(我用 Cloudflare Warp 测的)。
  2. 自动容灾:有次 OpenAI 官方 API 抽风(429 报错),ofox 自动切到了 Azure OpenAI,我的助手完全没感知。后台有多供应商冗余(Azure/Bedrock/VertexAI/阿里云/火山引擎),某一路挂了自动切换。

如果你想换成 Claude 或者 DeepSeek,只需要改一行:

response = client.chat.completions.create(
    model="claude-opus-4-6",  # 或者 deepseek-chat
    messages=[...]
)

API 格式完全一样,不用改其他代码。

延迟优化技巧

做完基础版我发现总延迟 2.5 秒,老人觉得"反应慢"。优化后压到 1.2 秒:

  1. 并行处理:录音结束后,同时调用 Whisper 和预加载 TTS 引擎,省 0.3 秒
  2. 流式输出:GPT-4o-mini 支持 stream=True,第一个字出来就开始合成语音,省 0.5 秒
  3. 本地缓存:常见问题("今天星期几""现在几点")直接本地回答,省 0.8 秒
# 流式输出示例
response = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[...],
    stream=True
)

full_response = ""
for chunk in response:
    if chunk.choices[0].delta.content:
        content = chunk.choices[0].delta.content
        full_response += content
        print(content, end="", flush=True)

实际使用体验

我妈用了一周,反馈:

  • ✅ 查天气、设提醒很方便,不用戴老花镜看手机
  • ✅ 闲聊功能意外好用,问"晚饭吃什么"能给建议
  • ❌ 有时候听不清她的方言(她说"今朝",识别成"今天早上")
  • ❌ 网络不好时会卡顿(我后来加了本地缓存)

后续改进方向

  1. 加个屏幕:树莓派 + 7 寸触摸屏,显示文字方便老人确认
  2. 方言适配:Whisper 对普通话准,方言拉胯。可能要上 FunASR(阿里开源)
  3. 多轮对话:现在是单轮问答,加个 context 记忆能聊得更自然
  4. 本地部署:等 Whisper 和 Llama 的量化版本更成熟,可以完全离线运行

小结

做这个项目最大的感受是:AI 应用的门槛真的降低了。3 年前做语音助手要懂 Kaldi、训练声学模型,现在 100 行 Python 就搞定。

成本也比想象中低,如果只是家用,一个月几块钱就够。当然如果要做商业化,还得考虑并发、容灾、合规这些,那是另一个故事了。

代码我放 GitHub 了(搜 voice-assistant-demo),有问题欢迎留言。