求问单片机语音播报TTS方案

Zmo 2026-09-28 15:04 1

主管给到一个任务,要求使用esp32做开发,里面有一个需求是语音播报

目前我在ESP32 C6上采用离线双语(中英文)语音播报方案:PC端预先用Neural TTS生成中英文语音片段并压缩为Opus/VPK2,设备端根据数据和事件组合播放完整数字、小数+单位及少量整句热词,并用4ms Crossfade减少拼接感,但目前仍存在语调衔接不自然、人机感较强的问题

有没有相关方向大佬能够给指点指点,还有没有其他好一些的解决方案吗

最新回复 (19)
  • Kulin8848 09-28 15:05
    1楼

    佬,做你这个是不是得会c语言呀?c语言学到指针够用吗?

  • Zmo 楼主 09-28 15:07
    2楼

    如果做做小玩具,那可以实现了。但是如果用到工作实际中,是远远不够的。

    现在很少手搓代码了,基本都是codex或者Claude

  • Wkstr 09-28 15:08
    3楼

    Crossfade 拉长

    好方案就是上云端的 TTS,可以看下 xiaozhi 怎么做的

  • Apollo 09-28 15:09
    4楼

    不考虑在线是出于成本原因吗

  • Zmo 楼主 09-28 15:10
    5楼

    对,就只给了块32和一些模组,没有上网条件

  • KKMP 09-28 15:15
    6楼

    esp自己也有tts模型,只是不知道C6可不可以用

  • Zmo 楼主 09-28 15:16
    7楼

    也是可以离线调用的吗

  • Zmo 楼主 09-28 15:18
    8楼

    佬,Crossfade 拉长的话会不会有明显的停顿感

  • KKMP 09-28 15:18
    9楼

    是的,不过之前只在esp32s3用过

  • Zmo 楼主 09-28 15:19
    10楼

    佬有官方链接吗,可以发一下不

    之前用的时候,有没有很明显的"人机感"

  • fjcqv 09-28 15:23
    12楼

    我10年前的方案是用语音芯片,TTS生成单字的WAV。放倒语音芯片按顺序播放。

  • Zmo 楼主 09-28 15:25
    13楼

    我现在也是差不多的方案,但是这样每个字之间的割裂感有些严重,有很明显的停顿,被主管评价为"人机感太重"

  • Apollo 09-28 15:30
    14楼

    能不能把颗粒度做大一点,例如整数全部生成,小数精度之内也全部生成

  • jacky_lin98 09-28 15:31
    15楼

    现在有了AI之后,你学到数组都够用了

  • Zmo 楼主 09-28 15:34
    16楼

    我其实也有这么做,但是碍于存储限制,实际可能也存放不了太多数字。而且就算这样,在播报整数+小数的时候也有些突兀,比如播报 1234.5 ,那么.5就会很突兀。佬有什么好的解决思路吗

  • 木流牛马 09-28 15:36
    17楼

    小智是后台直接调用TTS生成然后直接发给ESP32播放,实际上直接调用微软的在线TTS生成效果挺好的,可以尝试一下。

  • Zmo 楼主 09-28 15:37
    18楼

    就是说还是需要上网在线的方式是么 ^-^

  • 木流牛马 09-28 15:40
    19楼

    ESP32不是默认就有联网能力吗,我不是专门搞硬件的哦,之前折腾过两次,感觉它的算力要跑一个本地的TTS还是挺勉强呀,用线上的肯定效果要更好。或者你看看有没有专门的语音生成芯片接一个,可能也会效果好点。

  • Zmo 楼主 09-28 15:44
    20楼

    因为实际应用场景下没有网络提供,而且碍于成本,也没有考虑网络方向 ^-^

* 帖子来源Linux.do
返回