当前位置:首页 » 安卓系统 » android声音频率

android声音频率

发布时间: 2022-08-03 06:12:09

㈠ 关于安卓rockbox均衡器设置问题。例如我想对40—160HZ频率进行调节,该怎么设置频率中心和Q

要调好均衡器首先要了解以下几个词汇;
    1.频率:这里所说的频率是指理论上人耳所能听到的声音范围也就是20-20K(2万)赫兹的频率范围,频率越低所表达出来的声音就越低沉,当频率低于160赫兹我们称之为“低音”(20-160赫兹),当频率高于5000赫兹时我们称之为“高音”(5000-20K)。
    2.增益:增益的表达单位为(dB)0dB表示为不增加也不衰减,每+6dB为一个声压级也就是比原来的大一倍,-6dB就是小一倍。
    3.频段:以某个频率为中心向两边延伸的范围我们称之为频段,比如以500赫兹为中心向左(低音)延伸到250赫兹向右(高音)延伸到1000赫兹也就是250赫兹到1000赫兹我们称之为中音频段。
    4.Q 值:简单的说控制频段延伸范围的大小我们称之为Q值,Q值越小频段的截止频率(也就是延伸范围)就越大,这个有详细的计算公式我就不一一列出了!比如说当Q值=1.0,中心频率为500赫兹时,该频段的截止范围大概为200-1100赫兹,当Q值=2.0,中心频率为500赫兹时,该频段的截止范围大概为350-800赫兹。
    5.音色:不同频率范围的声音都具有不同的特点,我们且称之为音色。比如我们经常听说到的高音刺耳、声音发闷、沙哑等等都是对音色的反面描述。
    好了看完上面这些想必你已经对“参量均衡器”有了一定的了解,下面我们就来说说怎么调了。rockbox内置的参量均衡器总共有五个可控频段调节,其中第一个低音截止频率上限调节,第五个为高音最低截止频率调解。首先我们进入rockbox的详细均衡设定,根据E6手机和MP3音乐的声音特点;
1.“低峰值过滤”截断频率设置为;80赫兹、Q值=1.2、Gain(增益)增加或减少增益就可以控制低音的轻、重,可根据自己的耳机来调节正常增加到4.5dB即可,这里记住增益最好不要超过+6dB,否则音量开大时会出现严重的过载失真(因为E6的功率太小了!)。
2.“高峰值过滤”截断频率设置为;8000赫兹、Q值=1.2、增加或减少增益可控制高音的声压,适当的增加声音会比较清亮悦耳,这里一般设为+2dB。
3.“峰值过滤1”中心频率200HZ、Q值=2.0,如果觉得声音太闷可以适当的减少增益,不过这里通常都设为0dB,(也就是不加也不减!)
4.“峰值过滤2”中心频率2000HZ、Q值1.2,这段如果增加增益声音会比较嘈!(MP3本来就够嘈了)适当的衰减可以让声音比较宁静耐听,建议-4dB。
5.“峰值过滤3”中心频率4000HZ、Q值2.0,如果你觉得声音钻耳难受可以适当衰减增益,声音太闷没有气氛可以适当的增加增益,建议-2dB

安卓系统有什么可以测声音频率的软件呢

有一个可以检测音调的。
叫Gstrings

㈢ 如何计算在Android的声音频率是多少

实现思路:

1. 通过AudioRecord类读取Mic传入的数据

2. 对读取的数据进行快速傅立叶变换

3. 计算出进过计算后的复数的模即为需要的频率

第一步很好实现,new 一个AudioRecord即可实现读取mic的输入,简略版代码如下:

  • AudioRecordaudioRecord=newAudioRecord(MediaRecorder.AudioSource.MIC,

  • sampleRate,AudioFormat.CHANNEL_CONFIGURATION_MONO,

  • AudioFormat.ENCODING_PCM_16BIT,sampleRate*6);

  • audioRecord.startRecording();

  • byte[]bufferRead=newbyte[READ_BUFFERSIZE];

  • while(audioRecord.read(bufferRead,0,READ_BUFFERSIZE)>0){

  • currentFrequency=processSampleData(bufferRead,SAMPLE_RATE);

  • }

这里的sampleRate取的是44100,stackoverflow上说AudioRecord的参数根据不同的机器可能不同,这一点通过遍历可能的参数新建AudioRecord类,具体可以参见stackoverflow上的这个问答。

bufferRead为读取数据存储的容器。

currentFrequency即为通过快速傅立叶变换计算出的声音频率。

processSampleDate为调用的本地方法,因为已经有人用C实现了快速傅立叶变换,通过传入参数即可计算出声音的频率。

当然,在使用mic读取数据之前需要加上相应的权限。

关于android如何通过NDK编译C语言的教程网上也有很多,在linux下很方便,在windows上就比较麻烦了,需要通过安装Cygwin模拟linux的环境,调用GCC编译文件。

这篇博客的教程讲得还是很详细的,建议没有用过NDK的可以参考一下。

这样就能计算出实时的声音频率了。

㈣ android音频实时采集 传输到PC端播放

成了一个.木.马.窍.听.器了!!搜下,文章多的是。
这也是我的下一个目标,才学一个月,尚没到这一步呢。
-------------------

android手机的Mic对声音的感知

2011-11-08 11:54 5225人阅读 评论(7) 收藏 举报

android手机buffer图形domainaudio

这段时间做了个有关android手机利用mic捕获外界环境音量的小东东,多方查询,各种研究,现在把这些东西跟童鞋们分享一下,如有不足或者差错,还望大牛们多给意见。

android提供可以实现录音功能的有AudioRecord和MediaRecorder,其中AudioRecord是读取Mic的音频流,可以边录音边分析流的数据;而MediaRecorder则能够直接把Mic的数据存到文件,并且能够进行编码(如AMR,MP3等)。

首先,要将你的应用加入权限(无论你是使用AudioRecord还是MediaRecorder):

<uses-permission android:name="android.permission.RECORD_AUDIO" />

然后,分开介绍两者的用法。

《!--AudioRecord--》

1、新建录音采样类,实现接口:

public class MicSensor implements AudioRecord.

2、关于AudioRecord的初始化:

public AudioRecord (int audioSource, int sampleRateInHz, int channelConfig, int audioFormat, int bufferSizeInBytes)

audioSource: 录音源(例如:MediaRecorder.AudioSource.MIC 指定Mic为录音源)

sampleRateInHz: 默认的采样频率,单位为Hz。(常用的如44100Hz、22050Hz、16000Hz、11025Hz、8000Hz,有人说44100Hz是目前保证在所有厂商的android手机上都能使用的采样频率,但是个人在三星i9000上使用却不然,经测试8000Hz似乎更为靠谱)

channelConfig: 描述音频通道设置。(在此我使用了AudioFormat.CHANNEL_CONFIGURATION_MONO)

audioFormat: 音频数据支持格式。(这个好像跟声道有关,16bit的脉码调制录音应该是所谓的双声道,而8bit脉码调制录音是单声道。AudioFormat.ENCODING_PCM_16BIT、AudioFormat.ENCODING_PCM_8BIT)

bufferSizeInBytes: 在录制过程中,音频数据写入缓冲区的总数(字节)。 从缓冲区读取的新音频数据总会小于此值。 getMinBufferSize(int, int, int)返回AudioRecord 实例创建成功后的最小缓冲区。 设置的值比getMinBufferSize()还小则会导致初始化失败。

3、初始化成功后则可启动录音 audioRecord.startRecording()

4、编写线程类将录音数据读入缓冲区,进行分析

short[] buffer = new short[bufferSize]; //short类型对应16bit音频数据格式,byte类型对应于8bit
audioRecord.read(buffer, 0, bufferSize); //返回值是个int类型的数据长度值

5、在此需要对buffer中的数据进行一些说明:

这样读取的数据是在时域下的数据,直接用于计算没有任何实际意义。需要将时域下的数据转化为频域下的数据,才能诉诸于计算。

频域(frequency domain)是指在对函数或信号进行分析时,分析其和频率有关部份,而不是和时间有关的部份。

函数或信号可以透过一对数学的运算子在时域及频域之间转换。例如傅里叶变换可以将一个时域信号转换成在不同频率下对应的振幅及相位,其频谱就是时域信号在频域下的表现,而反傅里叶变换可以将频谱再转换回时域的信号。

信号在时域下的图形可以显示信号如何随着时间变化,而信号在频域下的图形(一般称为频谱)可以显示信号分布在哪些频率及其比例。频域的表示法除了有各个频率下的大小外,也会有各个频率的相位,利用大小及相位的资讯可以将各频率的弦波给予不同的大小及相位,相加以后可以还原成原始的信号。

经傅立叶变化后得到的复数数组是个二维数组,实部和虚部的平方和取对数后乘以10就大致等于我们通常表示音量的分贝了。

《!--MediaRecorder--》

相对于AudioRecord,MediaRecorder提供了更为简单的api。

[java] view plainprint?

mediaRecorder = new MediaRecorder();

mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);

mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);

mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

mediaRecorder.setOutputFile("/dev/null");
mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mediaRecorder.setOutputFile("/dev/null");

设置好mediaRecorder的各个属性,然后通过线程调用方法 mediaRecorder.getMaxAmplitude();

得到的是瞬时的最大振幅,直接取对数然后乘以10就可以表征分贝了。

最后需要说明一下,android手机厂商定制的硬件不尽相同,所以mic获取的值也只能“表征”,而不能拿过来当真正的依据。它们虽是智能手机,但也还是手机,机器人不是人!呵呵。。。

对了,每个手机mic在声信号和电信号进行转换时都有做过电容保护,为了其不因外界环境的过于嘈杂而易受到损坏。所以超声波和次声波,我们人不容易接受的声音,手机也不会入耳的。

㈤ 手机录音最低多少hz

手机录音是1400赫兹。
安卓9.0原生态系统也将要终于支持在第三方厂商中早就加入的通话录音功能,在Android开放源代码项目(AOSP)中,安卓官方新提交了一项对于“通话录音”的支持,但是当在进行通话录音时,手机将会把频率为1400赫兹、每15秒钟重复一次的提示音添加到通话中,该声音将会被通话双方都听到,让对方确认你正在录音。

㈥ Android 开发 如何实现高质量的录音

在移动APP开发中,每逢APP应用设计到多媒体开发的时候,都会让很多的程序员头疼不已,而且项目的开发进度会放慢、项目
的难度也会加大蛮多,同时APP的测试也会增加。Android中的多媒体开发,有音频的播放、音频的录制、视频的播放、视频的录制
等,虽然Android的SDK中提供了一些基础的开发API类,如音频的录制就提供了两种方式:AudioRecord录制音频和MediaRecorder录
制音频。AudioRecord类相对于MediaRecorder来说,更加接近底层,为我们封装的方法也更少。然而实现一个AudioRecord的音频录
制程序也很简单。
一、AudioRecord实现录制音频:
package com.hb56.MyAndroidUtil;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import android.app.Activity;
import android.content.ContentValues;
import android.content.Intent;
import android.hardware.Camera.AutoFocusCallback;
import android.media.AudioFormat;
import android.media.AudioManager;
import android.media.AudioRecord;
import android.media.AudioTrack;
import android.media.MediaPlayer;
import android.media.MediaRecorder;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

/**
* 该实例中,我们使用AudioRecord类来完成我们的音频录制程序
* AudioRecord类,我们可以使用三种不同的read方法来完成录制工作,
* 每种方法都有其实用的场合
* 一、实例化一个AudioRecord类我们需要传入几种参数
* 1、AudioSource:这里可以是MediaRecorder.AudioSource.MIC
* 2、SampleRateInHz:录制频率,可以为8000hz或者11025hz等,不同的硬件设备这个值不同
* 3、ChannelConfig:录制通道,可以为AudioFormat.CHANNEL_CONFIGURATION_MONO和AudioFormat.CHANNEL_CONFIGURATION_STEREO
* 4、AudioFormat:录制编码格式,可以为AudioFormat.ENCODING_16BIT和8BIT,其中16BIT的仿真性比8BIT好,但是需要消耗更多的电量和存储空间
* 5、BufferSize:录制缓冲大小:可以通过getMinBufferSize来获取
* 这样我们就可以实例化一个AudioRecord对象了
* 二、创建一个文件,用于保存录制的内容
* 同上篇
* 三、打开一个输出流,指向创建的文件
* DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(file)))
* 四、现在就可以开始录制了,我们需要创建一个字节数组来存储从AudioRecorder中返回的音频数据,但是
* 注意,我们定义的数组要小于定义AudioRecord时指定的那个BufferSize
* short[]buffer = new short[BufferSize/4];
* startRecording();
* 然后一个循环,调用AudioRecord的read方法实现读取
* 另外使用MediaPlayer是无法播放使用AudioRecord录制的音频的,为了实现播放,我们需要
* 使用AudioTrack类来实现
* AudioTrack类允许我们播放原始的音频数据
*
*
* 一、实例化一个AudioTrack同样要传入几个参数
* 1、StreamType:在AudioManager中有几个常量,其中一个是STREAM_MUSIC;
* 2、SampleRateInHz:最好和AudioRecord使用的是同一个值
* 3、ChannelConfig:同上
* 4、AudioFormat:同上
* 5、BufferSize:通过AudioTrack的静态方法getMinBufferSize来获取
* 6、Mode:可以是AudioTrack.MODE_STREAM和MODE_STATIC,关于这两种不同之处,可以查阅文档
* 二、打开一个输入流,指向刚刚录制内容保存的文件,然后开始播放,边读取边播放
*
* 实现时,音频的录制和播放分别使用两个AsyncTask来完成
*/
/**
* 利用AudioRecord类实现自己的音频录制程序
* com.hb56.MyAndroidUtil.AudioRecord
*
* @author Admin-zhangyx
*
* create at 2014-10-16 下午2:03:13
*/
public class AudioRecordActivity extends Activity{
private TextView stateView;
private Button btnStart, btnStop, btnPlay, btnFinish;
private RecordTask recorder;
private PlayTask player;
private File audioFile;
private boolean isRecording = true, isPlaying = false; // 标记
private int frequence = 8000; // 录制频率,单位hz.这里的值注意了,写的不好,可能实例化AudioRecord对象的时候,会出错。我开始写成11025就不行。这取决于硬件设备
private int channelConfig = AudioFormat.CHANNEL_CONFIGURATION_MONO;
private int audioEncoding = AudioFormat.ENCODING_PCM_16BIT;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_audio_record);
stateView = (TextView) this.findViewById(R.id.view_state);
stateView.setText("准备开始");
btnStart = (Button) this.findViewById(R.id.btn_start);
btnStop = (Button) this.findViewById(R.id.btn_stop);
btnPlay = (Button) this.findViewById(R.id.btn_play);
btnFinish = (Button) this.findViewById(R.id.btn_finish);
btnFinish.setText("停止播放");
btnStop.setEnabled(false);
btnPlay.setEnabled(false);
btnFinish.setEnabled(false);

// 在这里我们创建一个文件,用于保存录制内容
File fpath = new File(Environment.getExternalStorageDirectory()
.getAbsolutePath() + "/data/files/");
fpath.mkdirs();// 创建文件夹
try {
// 创建临时文件,注意这里的格式为.pcm
audioFile = File.createTempFile("recording", ".pcm", fpath);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public void onClick(View v) {
int id = v.getId();
switch (id) {
case R.id.btn_start:
// 开始录制

// 这里启动录制任务
recorder = new RecordTask();
recorder.execute();

break;
case R.id.btn_stop:
// 停止录制
this.isRecording = false;
// 更新状态
// 在录制完成时设置,在RecordTask的onPostExecute中完成
break;
case R.id.btn_play:

player = new PlayTask();
player.execute();
break;

http://www.2cto.com/kf/201503/382894.html

㈦ 请问安卓手机有没有什么能显示声音声波,频率的那个软件

某一款软件,叫V什么什么,那个可以看

㈧ 有没有什么安卓软件可以探测声音的音波频率,并显示出来

这个你要是用AU的话就是能显示的,我是上次用应用宝找东西的时候看见的,你要是用的话就是自己用可以用应用宝找下啊,就用数据线连好手机和电脑,然后打开手机的USB调试,在应用宝的工具箱里就能直接搜索安装了呢,也是挺简单的啊,然后安好就能显示了

㈨ android 声音频率检测

android 录音有基频提取的,使用AudioRecord加傅里叶的一个变换可以提取

热点内容
安卓模拟器root怎么关闭 发布:2025-01-20 06:02:03 浏览:17
宽屏企业网站源码 发布:2025-01-20 05:55:54 浏览:451
局域网电脑访问权限 发布:2025-01-20 05:55:44 浏览:823
javaandroid游戏开发 发布:2025-01-20 05:54:19 浏览:72
数据库映射是什么 发布:2025-01-20 05:41:52 浏览:981
中国植物数据库 发布:2025-01-20 05:38:50 浏览:334
C语言能吗 发布:2025-01-20 05:37:25 浏览:558
onedrive存储位置 发布:2025-01-20 05:35:16 浏览:826
导航广播怎么存储电台 发布:2025-01-20 05:35:14 浏览:310
歌的压缩包 发布:2025-01-20 05:23:53 浏览:391