完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
整合TTS和ASR,发现识别模型和TTS字典映射冲突,应该是只有4M的数据空间可以映射导致的,换了16M模组也不行,应该不是flash的问题,测试找到返回错误0x101的位置是 按页映射的函数里start==end;,如果不加识别模型,TTS能正常和唤醒模型工作,这个问题怎么解决,希望乐鑫给个方案。字典和模型的大小应该都在3M左右吧,具体语音识别模型怎么加载进来的?也是映射吗?
end1 = region_begin + region_size - page_count + 1; for (start1 = region_begin; start1 < end1; ++start1) { int pageno = 0; int pos; DPORT_INTERRUPT_DISABLE(); for (pos = start1; pos < start1 + page_count; ++pos, ++pageno) { int table_val = (int) DPORT_SEQUENCE_REG_READ((uint32_t)&DPORT_PRO_FLASH_MMU_TABLE[pos]); uint8_t refcnt = s_mmap_page_refcnt[pos]; if (refcnt != 0 && table_val != pages[pageno]) { break; } } DPORT_INTERRUPT_RESTORE(); // whole mapping range matched, bail out if (pos - start1 == page_count) { break; } } // checked all the region(s) and haven't found anything? if (start1 == end1) { *out_handle = 0; *out_ptr = NULL; ret = ESP_ERR_NO_MEM; |
|
相关推荐
1个回答
|
|
1. 优化内存使用:首先,检查您的代码以确保没有内存泄漏或不必要的内存分配。优化代码以减少内存使用,例如使用更小的数据结构或减少全局变量。
2. 分离模型和字典:尝试将识别模型和TTS字典分开存储,而不是将它们放在同一个内存区域。这可以减少映射冲突的可能性。 3. 使用外部存储:如果内部存储空间不足,可以考虑使用外部存储设备(如SD卡)来存储较大的模型和字典文件。然后,您可以在运行时将这些文件映射到内存中。 4. 动态加载模型:根据需要动态加载模型,而不是一次性加载所有模型。例如,当需要使用特定模型时,才将其加载到内存中。这样可以减少同时加载多个模型时的内存压力。 5. 调整页映射函数:检查您的页映射函数,确保它正确处理不同的内存区域和大小。您提到的错误0x101可能是由于映射函数中的逻辑错误导致的。检查start和end变量的值,确保它们在正确的范围内。 6. 语音识别模型加载:语音识别模型通常是通过映射的方式加载到内存中的。您可以使用类似的方法来加载TTS字典。确保在加载模型时,为它们分配足够的内存空间。 |
|
|
|
只有小组成员才能发言,加入小组>>
545浏览 6评论
457浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
437浏览 5评论
441浏览 4评论
411浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-21 20:58 , Processed in 0.801962 second(s), Total 81, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号