打印

你错啦,qq是一种典型的互联**钱模式。

[复制链接]
楼主: 创意之都
手机看帖
扫描二维码
随时随地手机跟帖
141
wangkj| | 2008-12-31 09:27 | 只看该作者 回帖奖励 |倒序浏览

咱的群有记录功能,群成员都能看到所有的对话记录

使用特权

评论回复
142
xwj| | 2008-12-31 09:57 | 只看该作者

关于 语音压缩方案:

我的想法就是直接用STM32实时压缩、解压!
而且利用芯片集成的ADC、PWM直接输入音频,输出给功放、喇叭


ADPCM 的运算量其实是非常小的,基本上随便找个单片机都可以达到实时
而为了降低数传的数据量,我的想法是先做频域转换,然后用哈夫曼编码打包成帧,压缩率绝对比ADPCM 高的多。
只要频域变换的时间别太长,这点运算STM32 应该是能满足的,如果满足不了在考虑用简单的算法,比如ADPCM


对讲机本身就体积有限,不能做的太大,所以能少个芯片就尽量少一个,能怎样省电就尽量省电,这才是我最初建议用STM32的初衷

使用特权

评论回复
143
xwj| | 2008-12-31 10:13 | 只看该作者

DIY活动的推广价值非凡,我们用STM32,香水城应该可以提供芯片

DIY活动的意义在于鼓励大家参与,推广价值是不可限量的,
想想:
只要活动成功,那可以吸引来多少人气?多少眼光? 带来多少潜在的用户啊???

21ic对于DIY活动是相当支持的,可以提供部分经费,大家打PCB什么的就不用钱了;
如果STM32再提供主芯片的赞助,就只要解决射频IC、电池等其他问题了

对于初学者根本就不用花多少钱,就可以享受到DIY的乐趣,跟着高手学到相当实用的知识,想想谁不动心?

对于真正的芯片厂家,只要大家都用他的IC,特别是发展出新的应用方向、领域,并发展、培养出一大批使用中,免费赞助点芯片又何乐而不为呢???


使用特权

评论回复
144
xwj| | 2008-12-31 10:22 | 只看该作者

而对于真正想吸收人才的

通过DIY活动,
来发现技术高、能力强的高手
来发现人品好、组织能力强的管理者
来发现学习能力好、动手能力强,善于思考、学习的初学者(有潜力啊),
又何乐而不为??


对于我们搞技术的,
通过DIY活动,有技术的Show技术,有能力的Show能力,有激情的乐在参与,好学的学到知识,好玩的玩的痛快,好灌水的放开评论...

这么开心好玩的事,又何乐而不为呢???

使用特权

评论回复
145
PowerAnts| | 2008-12-31 10:25 | 只看该作者

这个办法做推广好

给俺们老板建议一下,俺来主持一个游戏方案DIY,让未来的电工们都玩玩俺们的游戏IC,以后或许会带来一大堆用户...

使用特权

评论回复
146
zhiganglet| | 2008-12-31 10:37 | 只看该作者

to 老创

    我把这些贴上来是想告诉大家我们这个DIY小组的组员都是很真诚的参与这个项目的,大家互助共享,围着共同的兴趣走到一起,在这里不仅仅能练习技术,还可以学到很多很多技术外的东西,希望更多的爱好者加入到我们小组来,噢耶!

使用特权

评论回复
147
香水城| | 2008-12-31 11:19 | 只看该作者

谢谢xwj这个非常好的提议,俺时刻在关注着大家的讨论

期待项目成功。

使用特权

评论回复
148
wenyin| | 2008-12-31 11:33 | 只看该作者

不懂,顶一下

使用特权

评论回复
149
isbit| | 2008-12-31 11:42 | 只看该作者

支持软件压缩

支持adpcm 软件压缩,能软件实现的尽量
不用硬件实现!

使用特权

评论回复
150
创意之都|  楼主 | 2008-12-31 11:51 | 只看该作者

关于 单片机选型问题再讨论--ST ARM

TO 
  香水城
  xwj 
  负分

  首先感谢各位的关注和参入!

  我也很高兴我们的活动获得了越来越多的正面评价,加油啊,数字对讲机项目成员全体!实现我们的目标,享受我们的快乐!

  单片机的选型,我们是开放的,综合了各种因素:
 1.适合广大的爱好者,入门者
 2.这是一个数字对讲机+单片机开发板的载体,适合,并可以发挥就可以了。
 3.开发学习成本的考虑,我们的目标是只要有一台电脑,就可以开发,整个开发环境+开发板,最多不超过100元。但也不会降低开发的难度和乐趣。
 4.这是我们的第一个diy项目,不能承载太多的东西。如果有机会再开发,我们可能会选择难度更高的ARM+DSP体系结构玩一些更高深的东西,希望到时候大家不要退却哦。
 5.深入搞过嵌入式的都明白,51,avr,arm,mips,ppc,x86没有本质的不同,只是处理的对象,达到的目的不一样。要是做深入了你也可以做个私人操作系统在51上跑跑。

 另外我们欢迎各处理器的代理商和我们合作,不止是提供样品,最好是能够以学生价提供给爱好者,解决广大爱好者的口袋问题。





使用特权

评论回复
151
gyt| | 2008-12-31 12:13 | 只看该作者

支持支持!

使用特权

评论回复
152
yanxh_ic| | 2008-12-31 15:54 | 只看该作者

关于语音压缩方案

大家好,我是南京梧桐微电子,www.indusic.com,从事国产声码器和codec芯片设计的。关于数字对讲机的语音压缩方案,我们认为:
1.实用的产品化的数字对讲机,必须进行低码率的数字语音压缩,进行窄带语音传输。数字对讲机的带宽6.25K,在这个带宽范围内,如果不做声码化,以64Kbps为例,该采用怎样的调制解调方式才能保证一定距离的可靠传输呢?即使有,又能在合法的功率限制内传输多远?
2.单片机自带的AD/DA跟语音Codec是两回事。单片机自带的AD/DA大多是10-12bit的SAR型的,这种AD/DA大多用来做数据采集和波形发生。而语音Codec大多是16bit以上的,采用Δ-Σ算法的信号处理电路,具有噪声抑制和带通滤波的能力。如果直接用单片机的AD/DA,首先噪声就会很大,语音质量也不好。
3.目前专业的数字对讲机,如moto,Icom均有声码化算法包含其中,采用窄带方案。
以上看法供参考,我希望能够加入这个项目,为这个项目提供免费的声码器芯片。我的联系:yanxh_ic@yahoo.com.cn。

使用特权

评论回复
153
rkw123| | 2008-12-31 22:25 | 只看该作者

支持一下

新手看看楼主的规划
希望能像linux的开发过程学习一点

使用特权

评论回复
154
创意之都|  楼主 | 2009-1-1 10:19 | 只看该作者

语音codec辩论:硬件 还是 软件 ADPCM??

to dragon_hn 
to 所以关注 语音压缩编解码的爱好者

  感谢热心的爱好者的参入!你们的质疑和建议会让我们不至于走弯路,和对项目的理解更加深入!

  1.这个辩论话题可能永远没有确定的答案,看看市面上的软的硬的方案就知道。

  2.成本之争:你的建议是哪一款单片机?价格,功能,性能?外设怎么考虑?能接耳机么?你的完整方案的成本有优势么?

  3.风险因素:adpcm 16k,32k,64k到底有多简单抑或多复杂?只有做过的人知道。需要多少硬件资源?能找到多少公开资源?这都是要综合考虑的因素。

  4.行业现状参考:这个应用类似voip的方案,在这个行业里,有哪些常用方案?看看我们选择的ic规格书就知道,我们的方案也是常见方案之一。

  5.期待大家给出具体的参考意见:完整解决方案,成功案例。
    这样我们才能越辩越明,欢迎大家讨论,给出具体知道,谢谢!
   也好让我们的爱好者明白在器件选型的重要性,和选型原则,技巧和方法!


 

使用特权

评论回复
155
创意之都|  楼主 | 2009-1-1 19:38 | 只看该作者

找个外套给宝贝穿上--寻找对讲机外壳

请大家有这方面资源的帮我们找找对讲机外壳。搞好了,就可以自己用了。在网上找了几张图片,看看

使用特权

评论回复
156
创意之都|  楼主 | 2009-1-1 19:39 | 只看该作者

找个外套给宝贝穿上--寻找对讲机外壳2

使用特权

评论回复
157
zhiganglet| | 2009-1-1 22:31 | 只看该作者

哇酷!over!

使用特权

评论回复
158
dragon_hn| | 2009-1-2 03:09 | 只看该作者

提供ADPCM软压缩解压支持

有疑问可发EMAIL咨询:   dragon_hn@sohu.com

目前复读机大多采用8k采样率,10bits ADC,而DAC则采用8个IO口+电阻的形式,在语音信号频带范围内音质基本可以保证。
--------------------------------------------------------
http://www.szkfw.com/AV/ARTICLE/ADPCM.htm
--------------------------------------------------------



ADPCM压缩算法 
  
  ADPCM(Adaptive Differential Pulse Code Modulation),是一种针对 16bits( 或8bits或者更高) 声音波形数据的一种有损压缩算法,它将声音流中每次采样的 16bit 数据以 4bit 存储,所以压缩比 1:4. 而且压缩/解压缩算法非常简单,所以是一种低空间消耗,高质量高效率声音获得的好途径。保存声音的数据文件后缀名为 .AUD 的大多用ADPCM 压缩。
  ADPCM 主要是针对连续的波形数据的,保存的是波形的变化情况,以达到描述整个波形的目的,由于它的编码和解码的过程却很简洁,列在后面,相信大家能够看懂。
  8bits采样的声音人耳是可以勉强接受的,而 16bit 采样的声音可以算是高音质了。ADPCM 算法却可以将每次采样得到的 16bit 数据压缩到 4bit 。需要注意的是,如果要压缩/解压缩得是立体声信号,采样时,声音信号是放在一起的,需要将两个声道分别处理。

ADPCM 压缩过程

  首先我们认为声音信号都是从零开始的,那么需要初始化两个变量 

    int index=0,prev_sample=0;

  下面的循环将依次处理声音数据流,注意其中的 getnextsample() 应该得到一个 16bit 的采样数据,而 outputdata() 可以将计算出来的数据保存起来,程序中用到的 step_table[],index_adjust[] 附在后面:

    int index=0,prev_sample:=0;

    while (还有数据要处理)
    {
      cur_sample=getnextsample();        // 得到当前的采样数据
      delta=cur_sample-prev_sample;       // 计算出和上一个的增量
      if (delta<0) delta=-delta,sb=8;      // 取绝对值
      else sb = 0 ;               // sb 保存的是符号位
      code = 4*delta / step_table[index];    // 根据 steptable[]得到一个 0-7 的值
      if (code>7) code=7;            // 它描述了声音强度的变化量
      index += index_adjust[code] ;       // 根据声音强度调整下次取steptable 的序号
      if (index<0) index=0;           // 便于下次得到更精确的变化量的描述
      else if (index>88) index=88;
      prev_sample=cur_sample;
      outputode(code|sb);            // 加上符号位保存起来
    }

  有关ADPCM压缩过程更详细的信息,参见本站 ADPCM压缩过程演示程序


ADPCM 解压缩过程 

  接压缩实际是压缩的一个逆过程,同样其中的 getnextcode() 应该得到一个编码,,而 outputsample() 可以将解码出来的声音信号保存起来。这段代码同样使用了同一个的 setp_table[] 和 index_adjust() 附在后面:

    int index=0,cur_sample=0;

    while (还有数据要处理) 
    {
        code=getnextcode();                       // 得到下一个数据
        if ((code & 8) != 0) sb=1 else sb=0;
        code&=7;                            // 将 code 分离为数据和符号
        delta = (step_table[index]*code)/4+step_table[index]/8;     // 后面加的一项是为了减少误差
        if (sb==1) delta=-delta;
        cur_sample+=delta;                        // 计算出当前的波形数据
        if (cur_sample>32767) output_sample(32767);
        else if (cur_sample<-32768) output_sample(-32768);
        else output_sample(cur_sample);
        index+=index_adjust[code];
        if (index<0) index=0;
        if (index>88) index=88;
     }

  有关ADPCM解压过程更详细的信息,参见本站 ADPCM解压过程演示程序

附表 

     int index_adjust[8] = {-1,-1,-1,-1,2,4,6,8};

     int step_table[89] = 
     {
       7,8,9,10,11,12,13,14,16,17,19,21,23,25,28,31,34,37,41,45,
       50,55,60,66,73,80,88,97,107,118,130,143,157,173,190,209,230,253,279,307,337,371,
       408,449,494,544,598,658,724,796,876,963,1060,1166,1282,1411,1552,1707,1878,2066,
       2272,2499,2749,3024,3327,3660,4026,4428,4871,5358,5894,6484,7132,7845,8630,9493,
       10442,11487,12635,13899,15289,16818,18500,20350,22385,24623,27086,29794,32767
     }

特殊ADPCM压缩

  根据ADPCM压缩/解压原理,本站提供了 3bits ADPCM 和 4bits ADPCM 压缩程序,另外还提供 ADPCM系数表设计程序 下载。

AUD文件结构

  关于 WestWood 的 .AUD 文件,结构比较简单,这里顺带提一下,有兴趣可以自己写处理AUD文件的程序,其 8bit 的声音压缩算法尚不知晓,但用的最广泛的 16bit 声音正是用 ADPCM 压缩,每个 AUD 文件都有一个文件头,结构如下:

    struct
    {
      unsigned short int samplespersec ;    // 频率
      long int size;              // 除掉文件头的大小
      long int outsize;            // 输出数据大小 (通常是 4 倍)
      unsigned char flags;           // 位 0 描述是否立体声,位 1 描述是否 16 bit
      unsigned char type ;           // 1=WW 压缩,99=IMA ADPCM
    }

  AUD文件的声音信号是按块存放的,每块大约 512 字节,每一块都有一个块头结构:

    struct
    {
      unsigned short int size; // 压缩过的数据大小
      unsigned short int outsize; // 输出数据大小 (通常是 4 倍)
      long int id; // 永远是 0x0000DEAF
    }

 


------------------------------------------------------


有疑问可发EMAIL咨询:   dragon_hn@sohu.com

使用特权

评论回复
159
pheavecn| | 2009-1-2 08:25 | 只看该作者

stm32不是有个speex,celp语音。比adpcm比特率低些。

使用特权

评论回复
160
frank_888| | 2009-1-2 13:53 | 只看该作者

好东西

顶一个,也定一个吧。zhangbx888@126.com
可以做单片机/ARM的硬件或底层软件工作。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则