|
楼主 |
发表于 22-2-2008 07:50 AM
|
显示全部楼层
原帖由 电动舞 于 22-2-2008 04:01 AM 发表
请问LZ一下,
LZ 在PIN 1 和PIN 32 加 C(100n)
是不是给它stable ???
如不加会影响很大吗???
在MCU pin 1 的MCLR,(如有用MCLR) 一定要加0.1uF Cap+4.7K pull up, 不然开机有问题, 或容易受到干扰。
在MCU pin 32 的VCC,最好是加0.1uF, 不然容易受到干扰。 |
|
|
|
|
|
|
|
发表于 6-10-2008 12:32 AM
|
显示全部楼层
突然想要做这个东西,所以就翻了这个帖来看,有些地方不是很清楚。
请问一下PIC版主,请问你是怎样extract wave的data出来?
我是把声音convert成8kHz 8bit的file,然后用ultra edit来开,然后把DATA Chunk后面的data都直接当成是声音的data。这样对不对?
如果我的mcu直接有DAC输出了,我还需要接opamp吗?
R2R DAC的输出没有错的话是0-5v,如果我的data是负值的,他要怎样convert? |
|
|
|
|
|
|
|
楼主 |
发表于 6-10-2008 03:59 PM
|
显示全部楼层
原帖由 GuoHui 于 6-10-2008 12:32 AM 发表
请问你是怎样extract wave的data出来?
我是把声音convert成8kHz 8bit的file,然后用ultra edit来开,然后把DATA Chunk后面的data都直接当成是声音的data。这样对不对?
我用Acountica32, 你也可以用GoldWave之类的, Save As Raw.
如果我的mcu直接有DAC输出了,我还需要接opamp吗?
如果你的DAC 能直接推动Power Amp, 就不需要。
R2R DAC的输出没有错的话是0-5v,如果我的data是负值的,他要怎样convert?
他的output Value 是0~255.
你应该看成是-2.5V(0), 0V(128), +2.5V(255)
所以你的signal是在正+2.5V~ 负-2.5V 之间。
注: TDA2003 是Power Amp, 不是Opamp. |
|
|
|
|
|
|
|
发表于 6-10-2008 05:41 PM
|
显示全部楼层
原帖由 pic 于 6-10-2008 03:59 PM 发表
我用Acountica32, 你也可以用GoldWave之类的, Save As Raw. WAVE file format
RIFF Chunk (12 bytes in length total) Byte Number
| 0 - 3
| "RIFF" (ASCII Characters)
| 4 - 7
| Total Length Of Package To Follow (Binary, little endian)
| 8 - 11
| "WAVE" (ASCII Characters) |
FORMAT Chunk (24 bytes in length total)Byte Number
| 0 - 3
| "fmt_" (ASCII Characters)
| 4 - 7
| Length Of FORMAT Chunk (Binary, always 0x10)
| 8 - 9
| Always 0x01
| 10 - 11
| Channel Numbers (Always 0x01=Mono, 0x02=Stereo)
| 12 - 15
| Sample Rate (Binary, in Hz)
| 16 - 19
| Bytes Per Second
| 20 - 21
| Bytes Per Sample: 1=8 bit Mono, 2=8 bit Stereo or 16 bit Mono, 4=16 bit Stereo
| 22 - 23
| Bits Per Sample
|
DATA Chunk Byte Number
| 0 - 3
| "data" (ASCII Characters)
| 4 - 7
| Length Of Data To Follow
| 8 - end
| Data (Samples) |
就是说,我直接用ultra edit打开convert过后的file,前面的12+24 byte我可以不管,直接拿data chunk第8个byte过后的data?
原帖由 pic 于 6-10-2008 03:59 PM 发表
他的output Value 是0~255.
你应该看成是-2.5V(0), 0V(128), +2.5V(255)
所以你的signal是在正+2.5V~ 负-2.5V 之间。
这个我还不是很明白,因为我在网上看到的都是0-5v。 |
|
|
|
|
|
|
|
楼主 |
发表于 6-10-2008 06:12 PM
|
显示全部楼层
原帖由 GuoHui 于 6-10-2008 05:41 PM 发表
就是说,我直接用ultra edit打开convert过后的file,前面的12+24 byte我可以不管,直接拿data chunk第8个byte过后的data?
你最好用我说的Software, 不要直接从Wav file 拿, wav file 不是RAW data 。
这个我还不是很明白,因为我在网上看到的都是0-5v。
MCU/ DAC Audio -Signal
5V 2.5V
2.5V 0V
0V -2.5V
也就是说, 没有声音时, 是有一直有2.5V的输出的。
但由于是有经过cap, 所以, 真正的Audio signal 可以看成是-2.5, 0V, + 2.5V
也就是positive peak 2.5V, negative peak -2.5V.
你不明白的话, 再问, 我可能要画图你就会明白。 |
|
|
|
|
|
|
|
发表于 6-10-2008 07:49 PM
|
显示全部楼层
原帖由 pic 于 6-10-2008 06:12 PM 发表
你最好用我说的Software, 不要直接从Wav file 拿, wav file 不是RAW data 。
Save as ".raw"?
我的声音大概0.6秒,可是那个.raw file要112KB?
我用ultra edit打开这个.raw file,里面的内容比.wav得更难明白。
wav file里面我还看得出0V的时候data是0x80。
原帖由 pic 于 6-10-2008 06:12 PM 发表
MCU/ DAC Audio -Signal
5V 2.5V
2.5V 0V
0V -2.5V ...
明白了。 |
|
|
|
|
|
|
|
发表于 7-10-2008 08:28 PM
|
显示全部楼层
刚刚弄了一下,能播了。
其实wav的data直接可以用了,不用转成raw。我是转成PCM 8bit, 8k sampling rate, Mono, 然后用ultra edit直接打开,把wav file的header丢掉,然后后面就是声音的data了。
如图:
开头的那些RIFFxxx到“data”之前都是header,在"data"过后到完的都是声音的data,是unsigned integer。
[ 本帖最后由 GuoHui 于 7-10-2008 08:29 PM 编辑 ] |
|
|
|
|
|
|
|
楼主 |
发表于 7-10-2008 11:17 PM
|
显示全部楼层
原帖由 GuoHui 于 7-10-2008 08:28 PM 发表
刚刚弄了一下,能播了。
音质如何? |
|
|
|
|
|
|
|
发表于 7-10-2008 11:23 PM
|
显示全部楼层
原帖由 pic 于 7-10-2008 11:17 PM 发表
音质如何?
呵呵…,音质还过得去,能听得出在讲什么算是很好了。不过现在还没有接power amplifier,所以声音很小。
有个疑问,不知道pic大大去哪里找到这些人声的警告音? |
|
|
|
|
|
|
|
楼主 |
发表于 7-10-2008 11:45 PM
|
显示全部楼层
原帖由 GuoHui 于 7-10-2008 11:23 PM 发表
呵呵…,音质还过得去,能听得出在讲什么算是很好了。不过现在还没有接power amplifier,所以声音很小。
有个疑问,不知道pic大大去哪里找到这些人声的警告音?
我Youtube的那个人声, 是要求我制作的网友提供的。 它本来的音质都不好, 因为是用手机录的, 那个是香港地铁关门的警告音。
其实, 音质可以很好, 完全是看你的sampling rate 来决定。
建议你用Acountica32, 它可以随意的改变wav file的rate, 比如你现在是8Khz, 它可以改成6Khz 或其他你要的采样率。
如果你可以接受更低的音质, 那你可以看看以下的“One Bit Sound”
http://www.romanblack.com/picsound.htm
我就不很满意他的音质, 但是他的ROM用很少就可以了。。。 |
|
|
|
|
|
|
|
发表于 8-10-2008 12:00 AM
|
显示全部楼层
原帖由 pic 于 7-10-2008 11:45 PM 发表
我Youtube的那个人声, 是要求我制作的网友提供的。 它本来的音质都不好, 因为是用手机录的, 那个是香港地铁关门的警告音。
其实, 音质可以很好, 完全是看你的sampling rate 来决定。
建议你用Acountica32 ...
我是用Nero wave editor,也能够设定bit, sampling rate。
我有看到有人用SD卡来存声音,这样的话就没有容量方面的烦恼。不过如果声音的data太多的话,用SPI传输会不会不够快?
1 bit sound,就是说只有0和1?这样的话就算sampling rate很高,音质都不会好到哪里去? |
|
|
|
|
|
|
|
楼主 |
发表于 10-10-2008 10:17 AM
|
显示全部楼层
原帖由 GuoHui 于 8-10-2008 12:00 AM 发表
我是用Nero wave editor,也能够设定bit, sampling rate。
我有看到有人用SD卡来存声音,这样的话就没有容量方面的烦恼。不过如果声音的data太多的话,用SPI传输会不会不够快?
1 bit sound,就是说只有0和 ...
其实, 语音播放还是要用压缩技术为目标。。。
dsPIC32可以做到解码, 但价钱就比较高。
ADPCM 压缩只是适合语音, 我也没有去深入了解, 可能你可以去研究。
网路上看到人用SD,都有配合MP3解码。
如果只是RAW 8Khz, 直接从SD 通过SPI读取(read only)是够快的。
Atmel 好像也有一款8051 配内建MP3解码, 但是好像不通行, 这里有人用过吗? |
|
|
|
|
|
|
|
发表于 10-10-2008 12:08 PM
|
显示全部楼层
原帖由 pic 于 10-10-2008 10:17 AM 发表
其实, 语音播放还是要用压缩技术为目标。。。
dsPIC32可以做到解码, 但价钱就比较高。
ADPCM 压缩只是适合语音, 我也没有去深入了解, 可能你可以去研究。
网路上看到人用SD,都有配合MP3解码。
如果只是 ...
我知道VLSI有出mp3的硬解码IC VS1002和VS1011,可是好贵,上网看要USD19.95一粒不包邮费。
不然就用ARM来软解码,往上看到的多数是用LPC2148,因为它有内置10bit的ADC和10bit的DAC,价钱大概USD10,不过只有QFP package。
最便宜的大概只有wav了。 |
|
|
|
|
|
|
|
楼主 |
发表于 11-10-2008 08:34 PM
|
显示全部楼层
原帖由 GuoHui 于 10-10-2008 12:08 PM 发表
我知道VLSI有出mp3的硬解码IC VS1002和VS1011,可是好贵,上网看要USD19.95一粒不包邮费。
不然就用ARM来软解码,往上看到的多数是用LPC2148,因为它有内置10bit的ADC和10bit的DAC,价钱大概USD10,不过只有Q ...
可以看看这个老外的blog, 他把一些概念带出来。
dsPIC WAV Player
可以问你为什么要做语音吗? 如果准备大量生产的商业产品, 可以考虑用一些中国的廉价OTP 预录语音IC。 |
|
|
|
|
|
|
|
发表于 12-10-2008 02:24 AM
|
显示全部楼层
|
|
|
|
|
|
|
楼主 |
发表于 12-10-2008 08:44 PM
|
显示全部楼层
原帖由 GuoHui 于 12-10-2008 02:24 AM 发表
另外一个原因就是想自己做一个好像pic大大帮顾客做的那个,放在车上,alarm on/off的时候会播声音。
如果你有注意Myvi 车, 他原装来的Alarm, ARM (设防)/DISARM (解防)是没声音, 后来你可能有发现有一些车,他们的ARM (设防)时会发出do rei mi fa so la si to.... , DISARM (解防)是to si la so fa mi rei do 的音效。
这是我原设计的, 被人拿去中国Copy了 :@。。。。
除了 Do rei me 的音效 , 我还有其他三种音效设计如鸟叫等等。。。如果各位有听过的, 就知道我说的是什么。
如果准备大量生产的商业产品, 可以考虑用一些中国的廉价OTP 预录语音IC。
IC有内置rom?
我指的那个是OTP 语音IC, 有ROM, 不是MCU, 类似ISD2560之类的IC。 |
|
|
|
|
|
|
|
发表于 13-10-2008 01:03 AM
|
显示全部楼层
原帖由 pic 于 12-10-2008 08:44 PM 发表
如果你有注意Myvi 车, 他原装来的Alarm, ARM (设防)/DISARM (解防)是没声音, 后来你可能有发现有一些车,他们的ARM (设防)时会发出do rei mi fa so la si to.... , DISARM (解防)是to si la so fa mi ...
Myvi的我知道是用horn来当alarm的。
那种doremi的我有听过,原来是出自pic大大。这个会比播声音容易很多吧?
现在在试着用I2C来把声音program进Serial eeprom AT24C512,然后再读出来。可是弄了2天还是弄不到,开始有点灰心。 |
|
|
|
|
|
|
|
楼主 |
发表于 13-10-2008 11:42 AM
|
显示全部楼层
原帖由 GuoHui 于 13-10-2008 01:03 AM 发表
那种doremi的我有听过,原来是出自pic大大。这个会比播声音容易很多吧?
很简单, 只是Freq tone变吧了。。。 他们要便宜, 没有办法。。。
那个用12F629/ 12F630 来做的, amplifier 是ClassD Push Pull, 但不可以短路, 喇叭一短路就烧, 没有任何保护电路, 要低价的关系。
至于抄袭者怎样做, 就不知道了。。。
现在在试着用I2C来把声音program进Serial eeprom AT24C512,然后再读出来。可是弄了2天还是弄不 ...
I2C 的速度很慢。。。很难拿到你要的sampling rate。 |
|
|
|
|
|
|
|
发表于 13-10-2008 08:11 PM
|
显示全部楼层
原帖由 pic 于 13-10-2008 11:42 AM 发表
很简单, 只是Freq tone变吧了。。。 他们要便宜, 没有办法。。。
那个用12F629/ 12F630 来做的, amplifier 是ClassD Push Pull, 但不可以短路, 喇叭一短路就烧, 没有任何保护电路, 要低价的关系。
至于 ...
这个我有试过,我觉得buzzer都很大声,但是你还接amplifier?
原帖由 pic 于 13-10-2008 11:42 AM 发表
I2C 的速度很慢。。。很难拿到你要的sampling rate。
呵呵…就算很慢,那么当作是一个学习I2C的经验咯。之前没有学过I2C。
如果用SPI EEPROM呢?但是如果都用SPI的话,那么SD卡会不会使更好的选择? |
|
|
|
|
|
|
|
楼主 |
发表于 14-10-2008 08:50 AM
|
显示全部楼层
原帖由 GuoHui 于 13-10-2008 08:11 PM 发表
这个我有试过,我觉得buzzer都很大声,但是你还接amplifier?
它也是有Siren的功能, 要很大声,音效也要很大声, 不然别人那里听得到?(不是给自己听的)
呵呵…就算很慢,那么当作是一个学习I2C的经验咯。之前没有学过I2C。
如果用SPI EEPROM呢?但是如果都用SPI的话,那么SD卡会不会使更好的选 ...
SD卡当然更好, 要小心注意SD卡是3.3V。 |
|
|
|
|
|
|
| |
本周最热论坛帖子
|