cortex-m3的4.8K bit码率的声码器方案

[复制链接]
2772|6
 楼主| mybao 发表于 2012-6-23 11:51 | 显示全部楼层 |阅读模式
本帖最后由 mybao 于 2012-6-24 10:10 编辑

语音编解码:4.8K bit码率
需要小于50K byte的ROM,5K byte的RAM
消耗40M的cpu时钟(编码)。
平台:cortex-m3

全球首发,有感兴趣的请跟贴,
ilovezeno 发表于 2012-6-23 14:39 | 显示全部楼层
相比官方的语音库有啥优势?
 楼主| mybao 发表于 2012-6-23 15:25 | 显示全部楼层
本帖最后由 mybao 于 2012-6-24 10:11 编辑

1:这个只要5K的RAM
2:只需要40M的时钟平率
3:ST的SPEEX库对运算进行大量简化,你可以看看加法、减法、左移运算,没做一次都需要溢出保护的,也就是饱和运算,你看看官方库有没有,如果没有饱和运算,编解码可靠性没有保证,语音信号很强的时候,会有破音。
 楼主| mybao 发表于 2012-6-23 15:30 | 显示全部楼层
按照这三点对比下,你就清楚了
 楼主| mybao 发表于 2012-6-23 15:35 | 显示全部楼层
本帖最后由 mybao 于 2012-6-24 10:08 编辑

举个加法例子
speex的库,简化版
#define ADD32(a,b) ((a)+(b))

标准版
Word32 ADD32(Word32 L_var1, Word32 L_var2)
{
    Word32 L_var_out;

    L_var_out = L_var1 + L_var2;

    if (((L_var1 ^ L_var2) & 0x80000000) == 0)
    {
        if ((L_var_out ^ L_var1) & 0x80000000)
        {
            L_var_out = (L_var1 < 0) ? 0x80000000 : 0x7fffffff;
        }
    }

    return (L_var_out);
}
ilovezeno 发表于 2012-6-24 19:14 | 显示全部楼层
饱和指令用汇编应该能比你这边C实现快多了。。。。
 楼主| mybao 发表于 2012-6-24 20:51 | 显示全部楼层
我只是举个例子说明这个和官方库的差别,我没做任何简化。
回答2楼的问题。

CORTEX-M3的加减法是没有饱和运算的,饱和移位运算也是有限制的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

85

主题

759

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部