完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我打算使用lyrat-mini做一个使用唤醒词唤醒然后后续通过google-sr和google-tts进行交流的聊天机器人,但是当我合并了adf的例子中的wwe和google-translate之后,在使用唤醒词唤醒后,我想让他使用google-tts说一句话,但是出现以下错误Code: Select all
I (16188) wwe_example: rec_engine_cb - REC_EVENT_WAKEUP_STARTW (16188) AUDIO_ELEMENT: OUT-[i2s] AEL_IO_ABORTW (16188) AUDIO_ELEMENT: OUT-[i2s] AEL_IO_ABORTW (16198) AUDIO_ELEMENT: OUT-[i2s] AEL_IO_ABORTW (16198) AUDIO_ELEMENT: OUT-[i2s] AEL_IO_ABORti (16208) GOOGLE_TTS: TTS text = hola, soy demoI (16228) AUDIO_ELEMENT: [tts_http-0x3f8302c0] Element task createdI (16228) AUDIO_ELEMENT: [tts_mp3-0x3f831528] Element task createdI (16228) AUDIO_ELEMENT: [tts_i2s-0x3f830178] Element task createdI (16238) AUDIO_PIPELINE: Func:audio_pipeline_run, Line:359, MEM Total:3982275 Bytes, Inter:47643 Bytes, Dram:18907 BytesI (16248) AUDIO_ELEMENT: [tts_http] AEL_MSG_CMD_RESUME,state:1I (16258) GOOGLE_TTS: [ + ] HTTP client HTTP_STREAM_PRE_REQUEST, lenght=0I (16268) AUDIO_ELEMENT: [tts_mp3] AEL_MSG_CMD_RESUME,state:1I (16268) MP3_DECODER: MP3 openedI (16268) AUDIO_ELEMENT: [tts_i2s] AEL_MSG_CMD_RESUME,state:1I (16278) AUDIO_PIPELINE: Pipeline startedI (16278) I2S_STREAM: AUDIO_STREAM_WRITERW (16378) AUDIO_ELEMENT: IN-[raw] AEL_IO_ABORTW (16378) AUDIO_ELEMENT: IN-[raw] AEL_IO_ABORTW (16378) AUDIO_ELEMENT: IN-[raw] AEL_IO_ABORTW (16378) AUDIO_EVT: There is no space in external queueW (16388) AUDIO_ELEMENT: IN-[raw] AEL_IO_ABORTW (16398) AUDIO_EVT: There is no space in external queueW (16398) AUDIO_ELEMENT: IN-[raw] AEL_IO_ABORT 错误的地方发生在唤醒词成功唤醒后执行的Code: Select all if (AUDIO_REC_WAKEUP_START == type) { ESP_LOGI(TAG2, "rec_engine_cb - REC_EVENT_WAKEUP_START"); if (voice_reading) { int msg2 = REC_CANCEL; if (xQueueSend(rec_q, &msg2, 0) != pdPASS) { ESP_LOGE(TAG2, "rec cancel send failed"); } } audio_pipeline_stop(pipeline); audio_pipeline_wait_for_stop(pipeline); //ESP_LOGE(TAG2, "free heap size: %d", esp_get_free_heap_size()); //ESP_LOGE(TAG2, "minimum free heap size: %d", esp_get_minimum_free_heap_size()); google_tts_start(tts, "hola, soy demo", GOOGLE_TTS_LANG); vTaskDelay(20); while(google_tts_check_event_finish(tts, &msg)){ ESP_LOGI(TAG2, "%d",google_tts_check_event_finish(tts, &msg)); } } 我一开始以为是pipeline冲突导致的所以将start_recorder中用于唤醒词创建的pipeline关闭然后再启动start_tts,但是还是发送了错误,该怎么修改呢? |
|
相关推荐
1个回答
|
|
以下是一些建议来解决这个问题:
1. 确保您的音频管道设置正确。检查您的代码,确保音频输入和输出元素已正确连接。 2. 在调用 Google TTS 之前,确保唤醒词检测器(WWE)已经完成工作。您可以在唤醒词检测回调函数中添加一个标志,以指示唤醒词检测已完成。 3. 在调用 Google TTS 之前,检查音频输出元素是否已准备好。您可以使用 `audio_element_get_state()` 函数来检查音频元素的状态。 4. 如果问题仍然存在,您可以尝试在调用 Google TTS 之前,手动停止音频输出元素。使用 `audio_element_stop()` 函数停止音频输出,然后再次调用 `audio_element_resume()` 来恢复音频输出。 5. 如果您使用的是 ESP32 LyraT V4.3 开发板,请确保您的固件版本是最新的。有时,旧版本的固件可能存在一些已知问题。 6. 检查您的网络连接是否稳定。Google TTS 需要稳定的网络连接来正常工作。 |
|
|
|
只有小组成员才能发言,加入小组>>
545浏览 6评论
457浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
437浏览 5评论
441浏览 4评论
411浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 02:52 , Processed in 0.781546 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号