V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
tcper
V2EX  ›  分享创造

我开发一个 AI Voice-to-Voice

  •  
  •   tcper · 12 天前 · 1340 次点击

    最近开发了一个 Voice-to-Voice 的功能。

    虽然这个功能 OpenAI 早实现了,但是他们价格巨高。

    原理上并不难:人声->语音转文本->大模型回答->文本转为语音。(stt->LLM->tts)

    但是具体实践中却有很多难点:

    1. microphone 声音如何压缩,如何传输到 server ,如何降低延迟?
    2. 语音流持续输入,如何判断用户的停顿?(因为语音流本质上持续有输入,就算静音也有数据)
    3. AI 返回的语音,如何让用户打断?

    其实还有一个问题,就是如果 stt/LLM/tts 都调用外部服务,最后会价格失控

    为此我们用自己的模型,成本全部拿捏👌。

    欢迎体验: https://studio.metag-ai.com/podcasting/voice

    7 条回复    2024-12-02 00:29:20 +08:00
    anUglyDog
        1
    anUglyDog  
       12 天前
    https://github.com/yimuc/Jarvis5 个月前我也做了个语音助手 demo ,
    anUglyDog
        2
    anUglyDog  
       12 天前
    https://github.com/yimuc/Jarvis 5 个月前我也做了个语音助手 demo ,录音、语音转文字、AI 发送文本获取回复文本、语音播放文本。
    swim2sun
        3
    swim2sun  
       11 天前 via iPhone
    原理根本不是你说的那样,openai 的语音模型是端到端的,直接把语音编码发给大模型,不需要 stt
    tcper
        4
    tcper  
    OP
       11 天前
    @swim2sun 你能看到中文吗?
    tcper
        5
    tcper  
    OP
       11 天前
    @anUglyDog 很神奇,你用 nodejs 进行录音?那这样的话你的服务只能跑在单台电脑上了?
    swim2sun
        6
    swim2sun  
       11 天前
    @tcper ? 你能把话讲明白吗
    xhawk
        7
    xhawk  
       10 天前
    vercel 上有个类似的项目,
    语音流持续输入,如何判断用户的停顿?(因为语音流本质上持续有输入,就算静音也有数据)
    # 如果是连续输入, 然后中间停顿了几秒, 就是代表用户说完了. 不过这个挺难判断的. 因为我发现人的说话, 有时候是有一个思考的时间的.

    AI 返回的语音,如何让用户打断?
    # 录音是实时在录的, 只要有录音的内容, 则停止播放 AI 返回的语音.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   864 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 22:15 · PVG 06:15 · LAX 14:15 · JFK 17:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.