导航:首页 > 操作系统 > android正弦波

android正弦波

发布时间:2022-12-16 08:23:02

A. 安卓版eq音乐播放器2.4.9均衡器怎么调

专业音乐播放器均衡器设置均衡器还可以用来根据用家听音口味做适当优化,比如:适当提升7khz和10khz可以突出细节并且让人声变甜。
而对14khz和20khz的提升则可能造成声音变得具有华丽感和金属味,但也容易变噪变得数码味较浓,建议20khz的滑块不要给增益,而14khz的滑块可以轻微增益。
5khz的适当增益能提升人声清晰度。将1.8khz和2.5khz适当压低能起到一定柔化和净化的作用,适当提升则能起到锐化的作用,但是这两个滑块不要大起大落,2个dB 的幅度已经算是很大胆了。220hz和311hz这两个滑块轻微提升能显得较为温暖。
具体的调节,需要用家自己根据实际环境和器材情况进行调节,这同样是很有意义的。

乐器的调节范围:
●弦乐器:明亮度调节6KHz和12KHz,丰满度170Hz和310Hz,拨弦声1KHz和1KHz
●钢琴:低音60Hz和170Hz,临场感3K和6K,衰减12KHz 14KHz 16KHz声音单薄反之实在。
●低音鼓:敲击声3K,低音60Hz。
●小鼓/高音鼓/手鼓:饱满度170Hz和310Hz清脆度/临场感6K
●钹:尖锐感6K和12K。
●手风琴/风琴:饱满度310Hz、临场感6K
●BASS:拨弦声1K ,低音效果60Hz,拨弦噪声(擦弦声)3K
●电吉它:丰满度170Hz和310Hz,明亮度3K
●木吉它:琴身声310Hz,清晰度/宏亮度3K和6K,衰减12KHz 14KHz 16KHz声音单薄反之实在。
●小号:丰满度170Hz和310Hz,清脆感6K

一些音乐的调节方法:
1、在放管弦乐或交响乐时,可把60Hz、170Hz提升一半,310Hz、600Hz提升四分之一1K可不提升或少许衰减 ,3K和6K适当提升,12K、14K、16K可把16K提升到最大,它们三个可成一个30来度的坡。
2、在放独唱或合唱时可把170Hz和1KHz稍提升,3K和6K稍衰减。

频率 说明
<80Hz 80Hz以下主要是重放音乐中以低频为主的打击乐器,例如大鼓、定音鼓,还有钢琴、大提琴、大号等少数存在极低频率的乐器,这一部分如果有则好,没有对音乐欣赏的影响也不是很大。这一部分要重放好是不容易的,对器材的要求也较高。许多高级的器材,为了表现好80(或80左右)Hz以上的频段的音乐,宁愿将80(或80左右)Hz以下的频率干脆切除掉,以免重放不好,反而影响主要频段的效果。
极低频20Hz为人耳听觉下限,可测试您的器材低频重放下限,低频中的25Hz、31.5Hz、Hz、40Hz、50Hz和63Hz是许多音箱的重放下限,如果您的音箱在这些频率中某处声音急剧下降,则表明这个频率就是您的音箱低频重放下限。
80-160Hz 在80-160Hz频段的声音主要表现音乐的厚实感,音响在这部分重放效果好的话,会感到音乐厚实、有底气。这部分表现得好的话,在80Hz以下缺乏时,甚至不会感到缺乏低音。如果表现不好,音乐会有沉闷感,甚至是有气无力。是许多低音炮音箱的重放上限,具此可判断您的低音炮音箱频率上限。
300-500Hz 在300-500Hz频段的声音主要是表现人声的(唱歌、朗诵),这个频段上可以表现人声的厚度和力度,好则人声明亮、清晰,否则单薄、混浊。
800Hz 800Hz这段一般设备都容易播好,但是要注意不要过多。这段要是过多的话会感到音响的频响变窄,高音缺乏层次,低频丰满度不够。
1000Hz 1kHz是音响器材测试的标准参考频率,通常在音响器材中给出的参数是在1kHz下测试。
1200Hz 1.2kHz可以适当多一点,但是不宜超过3dB,可以提高声音的明亮度,但是,过多会是声音发硬。
2000-4000Hz 2~4kHz对声音的亮度影响很大,这段声音一般不宜衰减。这段对音乐的层次影响较大,有适当的提升可以提高声音的明亮度和清晰度,但是在4kHz时不能有过多的突出,否则女声的齿音会过重。
8000-12000Hz 8~12kHz是音乐的高音区,对音响的高频表现感觉最为敏感。适当突出(5dB以下)对音响的的层次和色彩有较大帮助,也会让人感到高音丰富。但是,太多的话会增加背景噪声,例如:系统(声卡、音源)的噪声会被明显地表现出来,同时也会让人感到声音发尖、发毛。如果这段缺乏的话,声音将缺乏感染力和活力。
14000Hz 14kHz以上为音乐的泛音区,如果缺乏,声音将缺乏感染力和高贵感,例如小提琴将没有“松香味”。这一部分也不宜过多,基本平直或稍有衰减(不超过-3dB)即可。 20000Hz 20kHz为人耳听觉上限,可测试您的器材高频重放上限。
16kHz-20kHz可能在一些器材中消失,此时有可能是您的器材无法重放此段频率,如果您是年纪较大者,也有可能是您的听觉衰减所至。
正弦波扫频信号
20Hz-20kHz正弦波扫频信号是从20Hz到20kHz频率自动平滑改变播放,通过播放此段测试信息可快速判断何处频率存在问题

均衡器的调节可分为以下主要几段进行:
20Hz--60Hz部分 这段低频往往给人很响的感觉,如雷声,是音乐中强劲有力的感觉。 如果提升过高,则又会混浊不清,造成清晰度不佳。
60Hz--250Hz部分 这段频率包括基音、节奏音的主音,它和高中音的比例构成了音色结构的平衡特性; 强之则音色丰满,弱之则音色单薄,过强则产生隆隆声。
250Hz--2KHz部分 它包括大多数乐器的低频泛音和低次谐波。
2KHz--4kHz部分 这段频率属中频,如果提升得过高会掩盖说话的识别音,尤其是3kHz提升过高,会引起听觉疲劳。
4kHz--5KHz部分 这是具有临场感的频段,它影响语言和乐器等声音的清晰度。提升这一频段,使人感觉声源与听者的距离显得稍近了一些;衰减5kHz,就会使声音的距离感变远;如果在5kHz左右提出升6dB,则会使整个混合声音的声功率提升3dB。
6kHz--16kHz部分 这一频段控制着音色的明亮度,宏亮度和清晰度。

各个频段的音色与音感
音色,是一种描述乐器发音品质的术语,由于每种乐器都有自己的频谱分布特征,因而同一种乐器的发音在不同的音区内,起音感虽然不一定一致,但其音色大体一致。 表述音色特征的术语一般都与乐器的关系密切。
音色术语一般要比音感丰富一些,其间的关联有以下几种情形:
沉闷:闷这种音感是同20赫兹左右的频率赋予的,而高于80赫兹时,音感就会偏厚,因此具有沉闷感的音响一般基频很低,而且很少有丰富的泛音成分,具有此音感特征的乐器音源一般都是低音乐器的低音区。
沉重:单纯从音感方面来看,沉重感是80赫兹频点处所特有的音感效果,而从音型特征上来看,短促的低音打击音型乐器具有更强烈的重感效果。
低沉:低沉常用于形容比沉闷稍丰厚的音响,他的基频可能与沉闷的音响一样,但其高次谐波大多都比沉闷的音响丰富一些。
深沉:这是一种带有感情味的形容词,常用于表述具有色彩性的“松荡”的低频响应,其基频比低沉的音响稍高一些。一般具有深沉感的乐器,最典型的就是大提琴和箫的低音区。
浑厚:这种音感是频谱较宽的音源所具有的特征,所以浑厚的音感一般都是形容基频较低,频谱较宽的音源。
淳厚:淳厚是指具有较高融合性的低频音响,具有淳厚感的典型音源,是钢片琴的低音区。
丰满:这是频率在100~250赫兹之间的音源所具有的音感特征,一般发音在此频段内的音源,都必然会有丰富的音感效果。
宽厚:丰满的音源如果频谱更宽一些,就会产生宽厚的音感效果。
饱满:这是一种叫强劲度的低频音响,,一般加置有“涡轮失真”效果的电贝司,此音感特征非常明显。
明亮:一般当乐音的基频高于500赫兹以上时,就会变的明快起来,甚至高到7500赫兹处时,我们也不能说它不明亮,所以音源的明亮感是一种比较通泛的形容词。明亮感在2800赫兹频点处最为明显。
响亮:常用于形容带颈度的高明度音响,并且当频谱高出4000赫兹以上时,音源就不具有此音感特征了。
宏亮:直待有一定融合性的高明亮音响。
圆润:指比较柔和的高明亮度音响。
柔和:与圆润相比,柔和感更偏于暗闷,是一种相对低明亮度的音响。
清脆:频谱集中在4000~8000赫兹之间的音响一般都具有一定的清脆感效果。
高亢:指高穿透力的清脆音响,有此音感特征的典型乐器就是唢呐。
尖锐:频谱集中在6800赫兹左右的音响一般都尖锐刺耳的。
尖厉:尖锐的音响如果还带有类似失真的嘈杂感,即可产生尖厉的音感效果。
纤细:频谱在8000赫兹以上的音乐,一般都具有纤细的音感效果。
融合:一般不易突出的柔和音响,都具有一定的融合感。当然,所有的音源都可以用融合或或不融合的程度衡量。在乐器中,一般认为中提琴、大提琴的融合感最好。
干涩:这是融合感的反义词,一般和谐泛音缺乏、不和谐泛音突出的高频段音响,都具有某种程度的干涩,在乐器 当中,他主要是由于极高音区缺乏共鸣所造成的。
坚实:600赫兹左右的窄频带音响,以及发音短促的音型,都具有某种检视的音感效果。
空洞:指带有“染色”效果的暗闷音响,此音感特征常常常常被人们用于形容大木鱼的音色。
温暖:这是一种形容乐音色彩性的词,他一般与音响的“染色度”成正比,如:排钟,就具有次种音感。
粗犷:低频音响如果带有类似过载失真的效果,即可形成粗犷的音感。
粗糙:粗糙感是一种略带沙音的粗犷音响,一般小号、圆号在吹奏低音区时,都有此音感特征。
沙哑:特制带有明显“气流沙音”的虚浮声响效果。
苍劲:这是一种带有感情味的形容词,一般是指较低频段内的沙哑音响,如大管的低音区等。
紧张:这是乐音内含有某些特别的不和谐泛音成分的结果。
力度感:力度感在低频段特指200~500盒子频段内的音响,如:大鼓、大胡的低音区,力度感就较好。在中、高频段,力度感是指高穿透力、高突出性的不柔和音响,一般高音铜管乐器的中、高音区,都具有良好的力度感效果。
穿透力:指高突出性、高明亮度的音响,穿透力在4500赫兹附近较为明显。
光彩性:指有一定突出感的高圆润度音响。
悲凉:悲凉与温暖互为反义,它也是一种带感情味的次。具有此音感特征的典型乐器音源,就是中音双簧管的中音区。
阴森:高紧张度的低频段音响,即可形成阴森的音感效果。
发扁:这是2500赫兹处所特有的音响效果。在此频点附近的音乐,一般都明显有“发扁”的感觉。如:板胡、二胡等,次种音感特征十分明显。
发暗:如果乐音中缺乏6000赫兹以上的频谱成分,一般都可以使起发音变“暗”。
发虚:这是乐器在发较高音阶时,杂音增多所引起的,这种杂音通常类似于气流沙声。
极高频: 16K-20K 色彩 提升有神秘感; 12K-16K 高频泛音,光彩; 10K-12K 高频泛音,光泽;
高频和高频低段: 8K-10K S音; 6K-8K 明亮度、透明度, 提升齿音重、降落 声音黯淡; 5K-6K 语言的清晰度,提升声音锋利、易疲劳;
中频上段: 4K-5K 乐器表面响度,提升乐器距离近、降落乐器距离远; 4K 穿透力,提升 咳音; 2K-3K 对明亮度最敏感,提升声音硬,不自然
中频: 1K-2K 通透感、顺畅感,提升有跳跃感、降落 松散; 800 力度,提升喉音重; 500-1K 人声基音、声音轮廓,提升语音前凸、降落语音收缩感; 300-500 语音主要音区,提升语音单调、降落语音空洞;
中频低段: 150-300 声音力度、男声力度,提升声音硬、无特色,降落:软、飘;
低频: 100-150 丰满度,提升浑浊、降落单薄; 60-100 浑厚感,提升轰鸣(轰)、降落无力; 20-60 空间感,提升低频共振(嗡)、降落空虚; 低频上段80-160;中低频40-80;低频下段20-40;超低频32-~。

各频段声音的作用
人耳对声音频率的感觉是从最低的20Hz到最高的20KHz,而人的语音频率范围则集中在80Hz~12kHz之间,不同频段的声音对人的感受是不同的。
1. 20Hz--60Hz部分 这一段提升能给音乐强有力的感觉,给人很响的感觉,如雷声。如果提升过高,则又会混浊不清,造成清晰度不佳,特别是低频响应差和低频过重的音响设备。
2. 60Hz--250Hz部分 这段是音乐的低频结构,它们包含了节奏部分的基础音,包括基音、节奏音的主音。它和高中音的比例构成了音色结构的平衡特性。提升这一段可使声音丰满,过度提升会发出隆隆声,衰减此频段和高中音段会使声音单薄。
3. 250Hz--4KHz部分 这段包含了大多数乐器的低频谐波,同时影响人声和乐器等声音的清晰度,调整时要配合前面低音的设置,否则音质会变的很沉闷。如果提升过多会使声音像电话里的声音;如把600Hz和1kHz过度提升会使声音像喇叭的声音;如把3KHz提升过多会掩蔽说话的识别音,即口齿不清,并使唇音“m、b、v”难以分辨;如把1kHz和3kHz过分提升会使声音具有金属感。由于人耳对这一频段比较敏感,通常不调节这一段,过分提升这一段会使听觉疲劳。
4. 4kHz--5KHz部分 这是影响临场感(距离感)的频段。提升这一频段,使人感觉声源与听 者的距离显得稍近了一些;衰减则就会使声音的距离感变远;如果在5KHz左右提升6dB,则会使整个混合声音的声功率提升3dB。
5. 6kHz--16kHz部分 这一频段控制着音色的明亮度,宏亮度和清晰度。一般来说提升这部分使声音宏亮,但不清晰,还可能会引起齿音过重;衰减这部分使声音变得清晰,可音质又略显单薄。该频段适合还原人声。

下边列出几种常见EQ组合的特点。
●POP:流行乐,它要求兼顾人声和器乐,组合比较平均,所以EQ曲线的波动不是很大。
●ROCK:摇滚乐,它的高低两端提升很大,低音让音乐强劲有力,节奏感很强,高音部分清晰甚至刺耳。
●JAZZ:爵士乐,和POP相比,它提升了3-5KHz部分,增强临场感。
●Classical:古典乐,它提升的也是高低两部分,主要突出乐器的表现。
●Vocal:人声,人的嗓子发出的声音的频率范围比较窄,主要集中在中频部分。

此外需要说明的是:每个人对不同频率的声音感觉是不一样的,音响回放设备的频率响应也不同,人的听门曲线也只是根据统计数据画出,所以别人听起来很自然的声音自己可能会觉得不舒服,均衡器的调节需要根据自己的听感特点和所使用的播放设备进行个性化的调整。

B. android音频底层调试-基于tinyalsa

因为Android中默认并没有使用标准alsa,而是使用的是tinyalsa。所以就算基于命令行的测试也要使用libtinyalsa。Android系统在上层Audio千变万化的时候,能够能这些个工具实时查看到,比方音频通道的切换等等。

编译完后会产生tinyplay、tinymix、tinycap等工具。

tinymix用法:

相应解释:

Playback Path:

例:将输出切换到扬声器

关于tinymix小结:

通过观察发现,Android系统的声音音量的调节并没有直接使用tinyalsa,而基于上层软件实现。由于不管上层音量怎么改变,这里看到的都是24(以我使用的设备为例)。

通道的切换是真正使用了tinyalsa,当通过不同通道播放音乐的时候能够实时观察到通道的切换。在某个站点上看到Android在没有声音播放的3秒后会关闭alsa,这里也得到了证实,我曾经觉得Android系统会永久占用音频设备。

当通过蓝牙播放音乐的时候,已经不经过alsa了,tinymix查看到都处理关闭状态。由于Android4.2的蓝牙协议所有在用户层实现了,直接走uart通道。

一般播放1khz 0db正弦波,然后在codec输出端示波器简单测量是否失真,杂音,然后再使用音频分析仪测试指标。

tinyalsa源码
原文: https://www.cnblogs.com/yxwkf/p/5344068.html

C. 从真实的示波器中输出一个正弦信号,怎么在android模拟的信号示波器上显示

示波器是接收设备,怎么会输出正弦信号?
是 示波器检测到的信号吧,可以先存成数据格式,再导到电脑或手机上。

D. 正弦波的g.729话音包是否有规律

没有。
g729编码,每次只能编码160个字节,编码后为10个字节大小,16:1的压缩比,如果要编码320字节的数据,需要分两次进行,并且G729A不支持多路同时解码,否则声音会有问题,G729b也不行,ITU上的代码都不支持多路解码, 但是g729b里面增加了静音检测,即在不说话的时候,可以自动发一些噪音流。

如果作为终端来说,单路基本够用,这个我在ios和android、windows下都测试通过,源码都可以编译,但是作为服务器来说,可能多路就是必须的了,因为会用到一些会议等操作。

g723.1带宽5.3k或6.3kbit/s,g729是8kbit/s,比g729略低,但是噪音要比g729大一些,并且算法延迟是g729的2倍多 g711带宽64kbit,但是算法延迟为0。因为G711来说比较简单,在有线环境下使用也没什么大问题, 但是在小带宽下G729是不错的选择。

E. 移动端短语音消息音频格式选择

1. 移动端原生音频支持

1.1 android Supported media formats

https://developer.android.com/guide/topics/media/media-formats

Format / File Type(s) / Container Formats

AAC LC••Support for mono/stereo/5.0/5.1 content with standard sampling rates from 8 to 48 kHz.• 3GPP (.3gp)

• MPEG-4 (.mp4, .m4a)

• ADTS raw AAC (.aac, decode in Android 3.1+, encode in Android 4.0+, ADIF not supported)

• MPEG-TS (.ts, not seekable, Android 3.0+)

HE-AACv1 (AAC+)•

(Android 4.1+)



HE-AACv2 (enhanced AAC+)•Support for stereo/5.0/5.1 content with standard sampling rates from 8 to 48 kHz.

AAC ELD (enhanced low delay AAC)•

(Android 4.1+)



(Android 4.1+)

Support for mono/stereo content with standard sampling rates from 16 to 48 kHz

AMR-NB••4.75 to 12.2 kbps sampled @ 8kHz3GPP (.3gp)

AMR-WB••9 rates from 6.60 kbit/s to 23.85 kbit/s sampled @ 16kHz3GPP (.3gp)

FLAC•

(Android 4.1+)



(Android 3.1+)

Mono/Stereo (no multichannel). Sample rates up to 48 kHz (but up to 44.1 kHz is recommended on devices with 44.1 kHz output, as the 48 to 44.1 kHz downsampler does not include a low-pass filter). 16-bit recommended; no dither applied for 24-bit.FLAC (.flac) only

MIDI•MIDI Type 0 and 1. DLS Version 1 and 2. XMF and Mobile XMF. Support for ringtone formats RTTTL/RTX, OTA, and iMelody• Type 0 and 1 (.mid, .xmf, .mxmf)

• RTTTL/RTX (.rtttl, .rtx)

• OTA (.ota)

• iMelody (.imy)

MP3•Mono/Stereo 8-320Kbps constant (CBR) or variable bit-rate (VBR)MP3 (.mp3)

Opus•

(Android 5.0+)

Matroska (.mkv)

PCM/WAVE•

(Android 4.1+)

•8- and 16-bit linear PCM (rates up to limit of hardware). Sampling rates for raw PCM recordings at 8000, 16000 and 44100 Hz.WAVE (.wav)

Vorbis•• Ogg (.ogg)

• Matroska (.mkv, Android 4.0+)

1.2 Supported Audio File and Data Formats in OS X

https://developer.apple.com/library/content/documentation/MusicAudio/Conceptual/CoreAudioOverview/SupportedAudioFormatsMacOSX/SupportedAudioFormatsMacOSX.html

Allowable data formats for each file format.

File FormatData Formats

AAC (.aac, .adts)'aac '

AC3 (.ac3)'ac-3'

AIFC (.aif, .aiff,.aifc)BEI8, BEI16, BEI24, BEI32, BEF32, BEF64, 'ulaw', 'alaw', 'MAC3', 'MAC6', 'ima4' , 'QDMC', 'QDM2', 'Qclp', 'agsm'

AIFF (.aiff)BEI8, BEI16, BEI24, BEI32

Apple Core Audio Format (.caf)'.mp3', 'MAC3', 'MAC6', 'QDM2', 'QDMC', 'Qclp', 'Qclq', 'aac ', 'agsm', 'alac', 'alaw', 'drms', 'dvi ', 'ima4', 'lpc ', BEI8, BEI16, BEI24,BEI32, BEF32, BEF64, LEI16, LEI24, LEI32, LEF32, LEF64, 'ms\x00\x02', 'ms\x00\x11', 'ms\x001', 'ms\x00U', 'ms \x00', 'samr', 'ulaw'

MPEG Layer 3 (.mp3)'.mp3'

MPEG 4 Audio (.mp4)'aac '

MPEG 4 Audio (.m4a)'aac ', alac'

NeXT/Sun Audio (.snd, .au)BEI8, BEI16, BEI24, BEI32, BEF32, BEF64, 'ulaw'

Sound Designer II (.sd2)BEI8, BEI16, BEI24, BEI32

WAVE (.wav)LEUI8, LEI16, LEI24, LEI32, LEF32, LEF64, 'ulaw', 'alaw'

Core Audio includes a number of audio codecs that translate audio data to and from Linear PCM. Codecs for the following audio data type are available in OS X v10.4. Audio applications may install additional encoders and decoders.

Audio data typeEncode from linear PCM?Decode to linear PCM?

MPEG Layer 3 ('.mp3')NoYes

MACE 3:1 ('MAC3')YesYes

MACE 6:1 ('MAC6')YesYes

QDesign Music 2 ('QDM2')YesYes

QDesign ('QDMC')NoYes

Qualcomm PureVoice ('Qclp')YesYes

Qualcomm QCELP ('qclq')NoYes

AAC ('aac ')YesYes

Apple Lossless ('alac')YesYes

Apple GSM 10:1 ('agsm')NoYes

ALaw 2:1 'alaw')YesYes

Apple DRM Audio Decoder ('drms')NoYes

AC-3NoNo

DVI 4:1 ('dvi ')NoYes

Apple IMA 4:1 ('ima4')YesYes

LPC 23:1 ('lpc ')NoYes

Microsoft ADPCMNoYes

DVI ADPCMYesYes

GSM610NoYes

AMR Narrowband ('samr')YesYes

µLaw 2:1 ('ulaw')YesYes

1.3 总结:

android/ios都可以对mp3解码,但不能编码,编码依赖lame;

android/ios支持对aac进行编解码;

mp3,aac均是音乐编码器,android支持对amr窄带与宽带编解码,ios文档显示对窄带支持编解码,但有人说ios4.3.x版本之后不再支持AMR,剔除了AMR的硬解,如需使用依赖libopencore库;

结论:

h5 audio标签对mp3支持最好(audio标签除了firefox与opera都支持mp3,ogg,wav;flash播放器可以支持到mp3,aac,speex,nellymoser),考虑对纯web的兼容性,使用mp3;

android,ios硬件对aac支持最好,考虑硬编码的性能与效率,使用aac;

amr是语音编码器,考虑使用场景,推荐amr.

对比微信,微信短语音,6.0之前用的amr,6.0之后用的silk_v3.

2.音频基础概念

2.1声音三要素

声音的特性可由三个要素来描述,即响度、音调和音色。

响度:人耳对声音强弱的主观感觉称为响度。响度和声波振动的幅度有关。一般说来,声波振动幅度越大则响度也越大。当我们用较大的力量敲鼓时,鼓膜振动的幅度大,发出的声音响;轻轻敲鼓时,鼓膜振动的幅度小,发出的声音弱。音叉振动时发出的声波为单音,即只有一个频率成分。若设法将音叉的振动规律记录下来,可发现其振动波形为一正弦波。当用不同力量敲击某个音叉时,音叉发出的声波幅度不同,这意味着声音的响度不同。给出了两个声音波形,其幅度一大一小,幅度大的波形其声音响度大,幅度小的波形其声音响度小。另外,人们对响度的感觉还和声波的频率有关,同样强度的声波,如果其频率不同,人耳感觉到的响度也不同。

音调:人耳对声音高低的感觉称为音调。音调主要与声波的频率有关。声波的频率高,则音调也高。当我们分别敲击一个小鼓和一个大鼓时,会感觉它们所发出的声音不同。小鼓被敲击后振动频率快,发出的声音比较清脆,即音调较高;而大鼓被敲击后振动频率较慢,发出的声音比较低沉,即音调较低。如果分别敲击一个小音叉和一个大音叉时,同样会感觉到小音叉所发声音的音调较高,大音叉所发声音音调较低。如果设法把大、小音叉所发出的声波记录下来,可发现小音叉在单位时间内振动的次数多,即频率高,大音叉在单位时间内振动的次数少,即频率低。给出了两个频率不同的声音波形,从声音可听出,频率高的声音波形听起来音调较高,而频率低的声音波形听起来则音调较低。

音色:音色是人们区别具有同样响度、同样音调的两个声音之所以不同的特性,或者说是人耳对各种频率、各种强度的声波的综合反应。音色与声波的振动波形有关,或者说与声音的频谱结构有关。前面说过,音叉可产生一个单一频率的声波,其波形为正弦波。但实际上人们在自然界中听到的绝大部分声音都具有非常复杂的波形,这些波形由基波和多种谐波构成。谐波的多少和强弱构成了不同的音色。各种发声物体在发出同一音调声音时,其基波成分相同。但由于谐波的多少不同,并且各次谐波的幅度各异,因而产生了不同的音色。例如当我们听胡琴和扬琴等乐器同奏一个曲子时,虽然它们的音调相同,但我们却能把不同乐器的声音区别开来。这是因为,各种乐器的发音材料和结构不同,它们发出同一个音调的声音时,虽然基波相同,但谐波构成不同,因此产生的波形不同,从而造成音色不同。给出了小提琴和钢琴的波形和声音,这两个声音的响度和音调都是相同的,但听起来却不一样,这就是因为这两个声音的音色不同(波形不同)。

2.2采样率和采样大小

声音其实是一种能量波,因此也有频率和振幅的特征,频率对应于时间轴线,振幅对应于电平轴线。波是无限光滑的,弦线可以看成由无数点组成,由于存储空间是相对有限的,数字编码过程中,必须对弦线的点进行采样。采样的过程就是抽取某点的频率值,很显然,在一秒中内抽取的点越多,获取得频率信息更丰富,**为了复原波形,一次振动中,必须有2个点的采样**,人耳能够感觉到的最高频率为20kHz,因此要满足人耳的听觉要求,则需要至少每秒进行40k次采样,用40kHz表达,这个40kHz就是采样率。我们常见的CD,采样率为44.1kHz。光有频率信息是不够的,我们还必须获得该频率的能量值并量化,用于表示信号强度。量化电平数为2的整数次幂,我们常见的CD位16bit的采样大小,即2的16次方。采样大小相对采样率更难理解,因为要显得抽象点,举个简单例子:假设对一个波进行8次采样,采样点分别对应的能量值分别为A1-A8,但我们只使用2bit的采样大小,结果我们只能保留A1-A8中4个点的值而舍弃另外4个。如果我们进行3bit的采样大小,则刚好记录下8个点的所有信息。采样率和采样大小的值越大,记录的波形更接近原始信号。

2.3有损和无损

根据采样率和采样大小可以得知,相对自然界的信号,音频编码最多只能做到无限接近,至少目前的技术只能这样了,相对自然界的信号,任何数字音频编码方案都是有损的,因为无法完全还原。在计算机应用中,能够达到最高保真水平的就是PCM编码,被广泛用于素材保存及音乐欣赏,CD、DVD以及我们常见的WAV文件中均有应用。因此,PCM约定俗成了无损编码,因为PCM代表了数字音频中最佳的保真水准,并不意味着PCM就能够确保信号绝对保真,PCM也只能做到最大程度的无限接近。我们而习惯性的把MP3列入有损音频编码范畴,是相对PCM编码的。强调编码的相对性的有损和无损,是为了告诉大家,要做到真正的无损是困难的,就像用数字去表达圆周率,不管精度多高,也只是无限接近,而不是真正等于圆周率的值。

2.4频率与采样率的关系

采样率表示了每秒对原始信号采样的次数,我们常见到的音频文件采样率多为44.1KHz,这意味着什么呢?假设我们有2段正弦波信号,分别为20Hz和20KHz,长度均为一秒钟,以对应我们能听到的最低频和最高频,分别对这两段信号进行40KHz的采样,我们可以得到一个什么样的结果呢?结果是:20Hz的信号每次振动被采样了40K/20=2000次,而20K的信号每次振动只有2次采样。显然,在相同的采样率下,记录低频的信息远比高频的详细。这也是为什么有些音响发烧友指责CD有数码声不够真实的原因,CD的44.1KHz采样也无法保证高频信号被较好记录。要较好的记录高频信号,看来需要更高的采样率,于是有些朋友在捕捉CD音轨的时候使用48KHz的采样率,这是不可取的!这其实对音质没有任何好处,对抓轨软件来说,保持和CD提供的44.1KHz一样的采样率才是最佳音质的保证之一,而不是去提高它。较高的采样率只有相对模拟信号的时候才有用,如果被采样的信号是数字的,请不要去尝试提高采样率。

亨利·奈奎斯特(Harry Nyquist)采样定理:当对连续变化的信号波形进行采样时,若采样率fs高于该信号所含最高频率的两倍,那么可以由采样值通过插补技术正确的回复原信号中的波形,否则将会引起频谱混叠(Aliasing),产生混叠噪音(Aliasing Noise),而重叠的部分是不能恢复的.(同样适用于模拟视频信号的采样)

根据人声语音的特点,人类的听力感知范围是从20Hz到20kHz。这个频宽范围被划分成四个频宽类别:窄带、宽带、超宽带和全带。

窄带(narrowband)普通电话所覆盖的频宽,从300Hz到3.4kHz,对应采样率6.8kHz。普通电话的采样率是8kHz,对应频宽4kHz,对于人声语音是足够的。

宽带(wideband)从50Hz到7kH的频宽,对应采样率14khz,可以很好地捕捉和还原人声,然而对于音乐声还是不够的。这是在人声语音通话场景下的所谓高清语音。

超宽带(super-wideband)从50Hz到14kHz,对应采样率28kHz,基本可以覆盖人声和音乐声,对于非专业音乐人的用户来说,不管是人声通话还是音乐直播,这样的频宽都是足够的。

全带(fullband)从20Hz到20kHz,对应40kHz采样率,全面覆盖人类的听觉范围,能够满足音乐发烧友或者专业音乐人的需求。超过40Hz都可以称作全带语音。CD的采样率就是44.1kHz。

因此,窄带(narrowband)的音质是能满足人声录制回放的。

从四个角度衡量音频编码:

成本:开发成本,服务器流量成本

音质:

系统影响:对系统资源的暂用,软编解码器比硬编解码器占用更多cpu

兼容性:对移动端以及web端的兼容

适合产品场景的编码器具备以下四个特点

码率相对低,满足成本可控的要求,一般不要超过16kbps。一个sample用1bit就能编好,那么8kHz采样率(narrowband)对应8kbps的码率,16kHz采样率(wideband)对应16kbps的码率。码率的本质就是成本。

算法复杂度要比较低,对系统CPU、内存和电量消耗少,对系统影响要尽量低。

音质可以适当作出牺牲,以保障上面三个因素,8kHz采样率对人声场景是够用的,16kHz采样率可以提供高清语音。

兼顾兼容性

3.主流音频编码器

音频编码格式的比较: https://zh.wikipedia.org/wiki/%E9%9F%B3%E9%A2%91%E7%BC%96%E7%A0%81%E6%A0%BC%E5%BC%8F%E7%9A%84%E6%AF%94%E8%BE%83

下图列举一组主流的音频编解码器,展示了随着码率变化,音质相应变化的情况。这是基于编解码器听音测试的结果绘画出来的,对选取音频编解码器有参考意义。根据上面的分析并且参照下图,发现码率低于16kbps的低码率人声编解码器(speech codecs)包含:Opus(SILK),Speex,AMR-NB,AMR-WB,和iLBC。

下图是另外一组主流的音频编解码器,展示了随着码率的变化,算法延迟时间相应变化的情况。根据上面的分析并且参照下图,发现算法延迟时间低于60毫秒,码率低于16kbps的人声编解码器(speech codecs)包含:Opus(SILK)、Speex(NB,WB)、G.729、和G.729.1。

从图中我们可以获得如下几方面信息:

对于固定码率的编码标准:如G.711或者G.722,图中采用单点表示,说明这两个编码标准是固定码率编码标准。其他如Opus、Speex,它们的曲线是连续的,说明这类编码标准是可变码率的编码标准。

从频带方面看:G.711、G.722、AMR和iLBC等标准适用于narrowband(8khz采样率)和wideband(16khz采样率)范围,针对普通的语音通话场景。AAC和MP3适用于fullband(48khz采样率)范围,针对特殊的音乐场景。而Opus适用于整个频带,可以进行最大范围的动态调节,适用范围最广。

从标准的收费情况看:适用于互联网传输的iLBC、Speex和Opus都是免费且开源的;适用于音乐场景的MP3和AAC,需要license授权,而且不开源。

综合上面的两个图,我们可以大致总结,比较适合人声短语音的音频编解码器包含Opus(SILK)、Speex(NB,WB)、AMR-NB、AMR-WB、iLBC、G.729、和G.729.1。

码率采样率算法延迟

OPUS(SILK)6-12,7-25,

8-30,12-40kbps

8,12,

16,24kHz

25ms

Speex2.15–24.6 kbps (NB)

4–44.2 kbps (WB)

8, 16,

32, 48kHz

30 ms(NB)

34 ms (WB)

AMR-NB4.75, 5.15, 5.90,

6.70, 7.40, 7.95,

10.20, 12.20 kbps

8kHz25ms (20ms per frame

plus 5ms look-ahead,

20ms for 12.2 kbps)

AMR-WB6.60, 8.85, 12.65,14.25, 15.85, 18.25, 19.85, 23.05, 23.85 kbps16kHz25ms (20ms per frame

plus 5ms look-ahead)

iLBC13.33 kbps

15.20 kbps

8kHz25 ms

40 ms

G.7298kbps8kHz15 ms

G.729.18 kbps,

12–32 kbps

8kHz

16kHz

48.94ms

Codec20.7, 1.2, 1.3, 1.4,

1.6, 2.4, 3.2 kbps

8kHz20–40 ms

(额外增加的,超低码率)

短语音不同于实时语音,可以忽略延迟

上面都是为人声场景设计的低码率音频编解码器,具有码率低(16kbps以下),算法延迟低(大部分在40ms以下),和采样率在8kHz和16kHz之间的特点,都可供短语音编码方案选择。其中,有几个语音编解码器值得在这里稍作介绍:

Opus(SILK)

https://en.wikipedia.org/wiki/Opus_(audio_format)

完全开源而且免费,包含了SILK、CELT、以及两者的混合模式,是目前最为兼容并包的音频编解码器。在处理窄带和宽带人声语音(speech)的时候,采用SILK; 在处理超宽带和全带音乐声音(music)的时候,采用CELT。在人声和音乐声混合的场景中,甚至可以智能切换两个编解码器。WebRTC就采用了Opus作为语音编解码器。而SILK是Skype网络电话所用的语音编解码器。Opus真可谓是久经考验的名门精品。根据即构科技的测试结果,Opus虽然在音乐场景中表现并非首选,但是在人声场景中表现十分出色。

iLBC

完全开源而且免费的,由GIPS开发并被IETF标准化,曾经被QQ和Skype使用过,现在被WebRTC使用,是被世界顶级产品证明过的窄带实时语音编解码器。iLBC能够通过平滑降低语音质量的方式来处理IP网络丢包。由于iLBC的语音帧块之间是相互独立的,在丢帧出现的时候也不会导致错误蔓延,因此具有较强的抗丢包能力。在窄带应用环境中,iLBC具有延迟低,无断续或杂音的特点,通话效果可以和移动电话媲美。

Speex

免费的人声音频编解码器。因为Speex是为VoIP专门设计的,所以Speex对IP网络有很强的抗丢包能力。为了达到这个目的,Speex采用了CELP算法。市场上狼人杀产品的游戏实时语音技术,厂商自研的方案采用了Speex。

Codec2

开源并且专利免费,码率超低的人声语音编解码器。码率在0.7 kbps至3.2 kbps。Codec2填补了开源编码器在5 kbps码率以下的空白。

评估音频编码指标,除码率、采样率、和算法延迟以外,还要参考MOS、VBR/CBR、和基础算法等。其中,MOS (Mean Opinion Score)是语音编解码器的主观评估指标。MOS是一个广为接受的有统计意义的主观听音指标。上面音视频编解码器的列表没有把它包含进去,是因为同一个编解码器,在不同码率下,表现出来的MOS值是会变化的。对一个音频编解码器给出一个固定的MOS值,反而会起误导的作用。另外,虽然MOS值已经是主观的听觉测试评估结果,但是音频工程师在选用音频编解码器的时候,还要以自己亲身的听感作为最终的依据。

下图是Nokia在2011年的时候对Opus、AMR、和G.722.1C等音频编解码器在无噪音和有噪音的环境里做的MOS语音测试的结果。我们可以从语音测试的结果看出:

1)MOS值会随着码率变化。固定的MOS值并没有绝对的参考意义。

2)在低码率情况下,AMR-NB和AMR-WB都表现相对出色。

参考:

1.Getting Started with Audio & Video: https://developer.apple.com/library/content/referencelibrary/GettingStarted/GS_MusicAudio/_index.html

2.Opus ios: https://github.com/chrisballinger/Opus-iOS

3.android opus: https://gitlab.com/axet/android-opus

4.opus_android: https://github.com/louisyonge/opus_android

5.opuscodec: https://github.com/martoreto/opuscodec

6.与大家讨论如何用opencore amr在iOS上decode: https://blog.csdn.net/devday/article/details/6804553

7. ios支持 https://developer.apple.com/library/archive/documentation/MusicAudio/Conceptual/CoreAudioOverview/CoreAudioEssentials/CoreAudioEssentials.html#//apple_ref/doc/uid/TP40003577-CH10-SW13

F. tiktok如何更新版本

1、导航到AppStore或GooglePlay商店。
2、使用关键字“TikTok”进行搜索。
3、点击应用程序。该应用程序的角落有一个音符和一个正弦波。开发者应该是BytemodPteLtd。(字节跳动的子公司)。
4、点击“更新”或“获取”。将应用程序下载到您的iOS或Android设备以继续使用该应用程序。
5、点击“打开”。打开应用程序后,您必须使用现有的TikTok帐户登录才能继续。如果您未登录,您将被带到登录屏幕。

G. 关于Audiorecord采样,怎么能缩小read读取数据的时间

如果是二进制文件,可以考虑用直接读取方式。即 Open 时指定 access = 'direct'

如果是文本文件,且每一行的长度都是一样的。也可以使用上述方式。
如果是文本文件,但每一行的长度不同。那么 read 空语句也不会造成太大的时间开销。
对于较大的数据,我建议使用二进制进行存储。快速,高效,且误差小。

H. 安卓开发音频mic口怎么接收20khz的波形

安卓开发音频mic口接收20khz的波形的方法?
一、手机音频通信的特点
1、 通用性强:在智能手机普及的今天,手机的对外通信接口多种多样,而其中以3.5mm的音频接口通用新最强,基本所有的手机、平板电脑都会有这个接口,所以在一些要求通用性的设备上,音频接口登上了舞台。
2、 速率低:由于手机音频部分的采样频率一般为44.1KHZ(部分国产山寨为8KHZ),这极大的限制了音频通讯的速率。我们都知道44.1KHZ的采样频率,那么最高的信号频率只能为20KHZ左右,而信号周期也不可能只有2个采样点,通常要到10个以上,这样层层下来通讯速率可想而知。
3、 小信号:音频通信的信号都是毫伏级的,各个手机厂商略有不同,但通常最大不超过200mv,通常我们通信使用的信号强度也就100mv左右,这导致信号比较容易受干扰,且在开发阶段对工具有着种种限制。
二、 手机音频通信分类
1、 无线方式:
a) 无线方式大家可能不太熟悉,容我慢慢道来。我们都知道人耳能听到的声音频率为20HZ~20KHZ,而手机通信的信号频率最高也就20KHZ,所以无线通信方式是可行的。因为虽然人耳的极限听力能到20KHZ,但普通人一般在19KHZ以上时基本就听不到了,所以如果信号的强度比较弱,且控制在19KHZ到20KHZ之间,那么我们就可以将之当做是“超声波”来看待了。
b) 其实在此提到手机音频通信的无线方式,算是给大家一种产品开发思路吧。它的通讯半径在10M左右,前景还是很广阔的,大家有兴趣的可以试试。(其实已经有这方面的产品了)
2、 有线方式:
a) 有线方式分为单向(设备→手机)和双向两种,单向的限制少,开发难度也小一些,但实际应用时会受限制。而双向通信限制多,开发难度也大一些,但实际应用时更方便些。
b) 设备→手机:曼彻斯特编码;FSK;DTMF;自定义正弦波
c) 手机→设备:由于手机输出的音频信号很小,无法直接使用,要么用运放发大到合适的范围,要么用电压比较器转换成TTL方波。
三、手机音频通信硬件通信方式分类:手机音频通信的硬件通信方式大体可分为方波和正弦波两种。
1、 方波:方波通常使用的是曼彻斯特编码方式(什么是曼彻斯特编码自己去查),它的好处是可以用单片机直接输出方波,经过衰减后即可使用,方便简单。缺点是兼容性不好,因为手机音频部分有这样一个特性,它只识别变化的电平信号,当麦克输入的信号长时间保持在某一非零电平时,手机会将其视为零,而强行拉回零电位。这就是采用方波通讯方式的兼容性不好的最大原因了,并且方波也容易受干扰。
2、 正弦波:正弦波不会出现上面所说的方波的问题,故正弦波的兼容性和稳定性更好一些。通常采用方案有FSK、DTMF、信号发生器、或方波转正弦波等。(后面会对以上方案逐一分析)
3、 通信信道分析
a) 我们知道音频接口有4根线,MIC、地、左、右声道。设备→手机用MIC,手机→设备用地、左、右声道中的任意一个。这里说一下,实际产品中,有一些厂家会更换地线,即将原本左、有声道中的一根改为地线来用,其实道理是一样的。因为音频通信的信号时交流信号,而地其实也是悬浮地,即便地线换了,最终的波形还是一样的,因为最终手机解析信号时需要的是频率和幅值。这样还剩下一个声道,通常被用来帮助设备进行上电识别,因为音频通信的设备通常都是电池供电的。
b) 另外还要在MIC和地之间并联一个4.99K的电阻,因为手机是通过检测MIC和地之间的阻抗是否为4.99K(也有其他阻值的)来判断是否有设备(耳机)插入,这一点要谨记。
四、各个通信方案对比分析
1、 设备→手机:
a) 曼彻斯特编码:在诸多通信方式中,曼彻斯特编码是最灵活简便的一种方法,编码信号可由单片机直接产生,经衰减电路衰减后便可直接使用。注意事项:曼彻斯特编码信号的生成有两种方式,一种是用PWM生成,一种是用定时器中断翻转IO,我个人比较倾向于定时器中断方式。因为我们知道曼彻斯特编码中有宽沿河窄沿之分,且宽沿和窄沿可能会灵活变化,而用PWM方式不容易精确控制宽沿、窄沿输出的变化,而定时器中断方式则非常灵活且容易控制。(后面会送上我自己写的曼彻斯特编码、解码函数)
b) FSK、DTMF方式:FSK和DTMF两种方式大同小异,使用时通常都是用集成的芯片来生成的,而这些芯片通常都是遵守固定的通信协议的的要求(FSK为Bell202或V.23协议,DTMF记不清名字了)。这两种通信方式的优点是采用正弦波通信、稳定性好且使用简便。但由于固定通信协议的限制导致通信速率、比特率也受到限制而缺乏灵活性。在这里跟他家推荐一款英国的通信芯片CMX系列,这个系列的芯片融合的FSK、DTMF的编码、解码,还是很不错的,大家有兴趣可以试试。(相关手册在附件里)
c) 信号发生器、锁相环方式:这种方式用信号发生器或者锁相环来产生方波或正玄波,由单片机来控制波形的输出,也可以实现音频通信,且十分灵活。但缺点是电路较复杂,且不同频率信号之间衔接不好掌握,用不好反而是麻烦。(相关手册在附件里)
d) 在这里送上一种我个人认为比较好的方案:就是曼彻斯特编码加低通滤波器,由单片机输出曼彻斯特编码,再经由低通滤波器将方波滤成正弦波后输出。既解决了FSK、DTMF灵活性的问题,又解决了曼彻斯特编码方波稳定性、通用性的问题。在低通滤波器方面我个人采用的是“集成低通开关电容滤波器”,它成本虽然高一些,但好处也是明显的,电路简单,使用方便,且占用的空间亦很小。(相关手册在附件里)
2、 手机→设备:
a) 放大电路方式:将手机输出信号经放大电路放大到合适的幅值,然后有锁相环或者结成FSK、DTMF芯片进行解析。该中方式难度最大,需要非常强的模拟电路功底,我个人水平有限,故采用的另一种方式。
b) 电压比较器方式:将手机输出的交流信号经电路强行拉到Vcc/2级别,然后加到电压比较器一端,另一段接比较电压Vcc/2,这样交流信号即被转化为TTL方波信号,此时再进行解析就变得很简单了。
五、研发注意事项(通讯方案分析部分由于过长,放到最后来讲)
1、 一个好手机录音软件是必须的,最好能在手机上直接看到波形的。
2、 建议用笔记本电脑进行开发,而非台式机。因为音频信号很小,容易受干扰,而台式机干扰较大,笔记本还有一个好处是必要时可将外接电源拔掉,用电池供电。
3、 一个好录音笔必不可少,有时需要得到纯净的音频信号,方便更加准确的分析。
4、 做一个转接板,一边接音频母座,一边接音频公头,将MIC、地、左、右声道4跟线用排阵引出,方便录音。
5、 做一个信号衰减电路,可将设备电路产生的信号衰减至音频接口能承受的范围内。前期调试时,我们可以用该电路将信号录进电脑进行信号分析。(推荐一个电脑音频信号分析软件:Goldwave)
6、 录音用的音频线切记不要太长,不然会给你带来不少麻烦。最好自己做,用音频裸头、杜邦线、排阵即可制作,方便好用。

曼彻斯特编码的编码解码函数如下:
/**********************************************************************

注释:编码函数都是采用定时器中断的形式,以曼彻斯特编码的窄沿作为定时器周期。

发送的数据包括1个起始位、8个数据位、1个奇偶校验位、3个停止位。

***********************************************************************/

static void VIC_VECT_Fucton_00(void)//发送编码数据中断函数

{

TIMER0IS =0x0;

if((send_time%2==0) && (send_start==1))

{

switch(FSK_txState)

{

case STARTBIT:

if((GPIODATA&0x00000002)==0x00000000)//如果检测到数据发送管脚为零

send_time++;

else

{

currentSym=0;

FSK_txState = BYTE;

}

break;

case BYTE:

if(txBit < 8)

{

currentSym = (send_byte >> txBit) & 0x01;

txBit++;

txParity += currentSym; //奇偶校验位

}

else if (txBit == 8)

{

currentSym = txParity & 0x01; //发送奇偶校验位

txBit++;

}

else if(txBit>8 && txBit<12)

{

// next bit is the stop bit

currentSym = 1; //发送停止位

txBit++;

}

else if(txBit == 12)

FSK_txState = STOPBIT;

break;

case STOPBIT :

txBit=0;

FSK_txState=IDLE;

send_start=0;

txParity=0;

send_byte=0;

break;

}

if(lastSym!=currentSym)

{

timer1_num++;

lastSym=currentSym;

}

}

if(timer1_num%2==0)

GPIODATA&=0xFFFFFFFD;//输出管脚复位

else

GPIODATA|=0x00000002;//输出管脚置位

timer1_num++;//用来控制IO口的电平翻转

send_time++;//用来控制发送的字节的每一位

Delay++;//Delay就是延时函数

}

/**********************************************************************

注释:解码函数采用外部IO中断形式(上升沿或下降沿中断,即电平电平跳变中断),

用一个定时器作为时钟,每次产生中断时便从定时器见时间值取出,并和上一次的

记录做差求出时间间隔,以此来判断当前为宽沿还是窄沿。

***********************************************************************/

static void VIC_VECT_Fucton_04(void)//接受解码数据中断函数

{

GPIOIC|=0x00000001;//清楚上一次中断内容

RX_time=TIMER1VALUE;

if(RX_lasttime>=RX_time)

RX_diff=RX_lasttime-RX_time; //lasttime初始值为0

else

RX_diff=65535-RX_time+RX_lasttime;

RX_lasttime=RX_time;

switch(RX_state) //启动代码时state已经被配置为STARTBIT

{

case STARTBIT_FALL:

if ((SHORTINTERVAL<RX_diff) && (RX_diff<LONGINTERVAL))

{

if(RX_ones<5) //ones初始值为0

{

RX_ones = 0;

}

else

{

RX_state = DECODE; //将状态配置为解码

}

}

else if(RX_diff < SHORTINTERVAL)

RX_ones++;

else

RX_ones=0;

break;

case DECODE:

/**************通过间隔长短来判定数据**************/

if ((SHORTINTERVAL<RX_diff) && (RX_diff<LONGINTERVAL))// 若间距在范围内则当前数据位值和前一个相反

{

currentbit=(currentbit+1)&0x01;

RX_times+=2;

}

else if( RX_diff < SHORTINTERVAL)

{

currentbit=currentbit;

RX_times++;

}

else

RX_state = DATAINIT;

/****************接受数据位,从低位接起****************/

if(RX_times%2==0)

{

if(RX_bitcounter<8)

{

if (currentbit==1)

{

uartByteRx = (uartByteRx >> 1) + (1<<7);

rxParity++; //奇偶校验位

RX_bitcounter++; //接受数据位数

}

else

{

uartByteRx = (uartByteRx >> 1);

RX_bitcounter++;

}

}

else

{

rxParity&=0x01; //进行奇偶校验

if(rxParity==currentbit)

{

RX_bitcounter++;

RX_finish=1;

RX_state=DATAINIT;

}

else

RX_state=DATAINIT; //若奇偶校验错误则,重新检测

}

}

break;

case DATAINIT : //初始化参数状态

RX_bitcounter=0;

RX_ones=0;

rxParity=0;

currentbit=0;

RX_state=STARTBIT_FALL;

RX_times=0;

break;

default:

break;

}

}

I. 有没有大神 用Android实现仿照Siri声波曲线

代码实现

波浪其实是由4条贝塞尔曲线组成的,可以在自定义View的onDraw函数中,用Path.quadTo函数画出4条曲线。

Path.quadTo(float x1, float y1, float x2, float y2)

其中,x1,y1为控制点的坐标值,x2,y2为终点的坐标值;当控制点的x1位于起点与终点之间时,将画出正弦曲线,此时y1控制正弦曲线的高度,即效果图中波浪的高度由y1控制。
实现了曲线绘制和高度控制之后,如何让曲线像波浪一样动起来呢?
我的解决方法是在屏幕左边,即x<0的位置,同样绘制4条正弦曲线,并且启动线程让8条曲线都向右移动,当左边4条曲线全部移动到屏幕内后,让这8条曲线复位。如此周期进行。
解析

使用方法

在xml中,

<com.tao.view.SiriView
android:id="@+id/siriView"
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_centerInParent="true"/>

在Activity.Java中,

SiriView siriView = (SiriView) findViewById(R.id.siriView);
// 停止波浪曲线
siriView.stop();
// 设置曲线高度,height的取值是0f~1f
siriView.setWaveHeight(0.5f);
// 设置曲线的粗细,width的取值大于0f
siriView.setWaveWidth(5f);
// 设置曲线颜色
siriView.setWaveColor(Color.rgb(39, 188, 136));
// 设置曲线在X轴上的偏移量,默认值为0f
siriView.setWaveOffsetX(0f);
// 设置曲线的数量,默认是4
siriView.setWaveAmount(4);
// 设置曲线的速度,默认是0.1f
siriView.setWaveSpeed(0.1f);

阅读全文

与android正弦波相关的资料

热点内容
win7美化命令行终端 浏览:797
免加密狗图片 浏览:485
一只透明的鸟是什么app 浏览:817
空气压缩机油批发商 浏览:69
linuxifexist 浏览:4
加密tf卡拷入文件 浏览:399
山西php工资 浏览:673
福州看病预约用什么小程序app 浏览:238
php保留两位小数不四舍五入 浏览:292
黑马程序员路径大全 浏览:1000
saas平台PHP 浏览:333
云服务器科学计算配置怎么选 浏览:649
jar解压命令 浏览:609
php正则问号 浏览:299
无线已加密不可上网是怎么了 浏览:464
什么app可以免费做手机 浏览:376
异性下载什么app 浏览:680
51单片机程序单步视频 浏览:241
家庭宽带如何连接服务器 浏览:122
汽车高压泵解压 浏览:772