㈠ android開發 識別外界音樂變化
語音識別,這要用到RecognizerIntent類,這個是安卓提供的語音識別類,我明白你的意思,其實系統對語言分析做出響應,是聲音採集然後再對比,符合則做出對應的處理,其實音樂和語言是一樣的,通過RecognizerIntent類你可以設置你的語言庫,然後當服務開啟時,系統不斷對比來做出響應,思路是這樣的,我也沒用過這個類,我做游戲開發,,,至於具體的你可以去自己網路這個類,可能我說的也有不對的地方,僅供參考。
㈡ android,如何用代碼獲取當前播放的聲音文件ID號~~聲音文件是隨機random播放的
通過Content Provider獲得。
㈢ android開發中如何實現播放聲音時根據聲音大小做一個動態能量條
音量變化是比較頻繁的,通常是低於50毫秒。
所以你取得的音量大小是一條密集的點組成的曲線,要動態的展示這些密集的點,有兩種不同的實現方式,效果也不一致。
把這些點分成不同的區間。比如5個區間,每個區間對應一張圖片(也可以是動態的圖片AnimationDrawable),取得音量後判斷是哪個區間,設置對應的圖片。打個比方,如果是用格數來表示,就有五張圖片表示1-5格,音量最大值可以通過mediaRecorder.getMaxAmplitude()獲得。分成五個區間,每個區間顯示對應格數的圖片。當然,這個圖片也可以是類似水波在盪漾的動態圖片,用AnimationDrawable來播放。
平滑的處理這些點。把上一次的位置與這一次的位置做一個動畫,如果採集頻率為50毫秒,動畫的ration就是50ms。比如是做一個圓圈,隨著音量大小變化,那麼可以參照如下的屬性動畫:
PropertyValuesHolder pvhX = PropertyValuesHolder.ofFloat("scaleX", lastScale, scale);
PropertyValuesHolder pvhY = PropertyValuesHolder.ofFloat("scaleY", lastScale, scale);
valumeAnimator = ObjectAnimator.ofPropertyValuesHolder(speakVolumeImageV, pvhX, pvhY);
valumeAnimator.setDuration(MIN_TIME).start();
通過放大和縮小speakVolumeImageV來展示當前音量。其中scale是此次的縮放比,lastScale是上次的縮放比。縮放比初始為1.0f,如果最大隻能放大到speakVolumeImageV的兩倍大,那麼可以這樣計算
Float scale = 1.0f;
if (volume == 0) {
scale = 1.0f;
} else {
scale = 1.0f + (volume / MAX_VOLUME * 1.0f);
}
㈣ 安卓手機插上耳機還能用手裡的mic採集聲音么
如果耳機沒有mic,會打開手機mic,否則是耳機mic,接聽時對著手機mic就行,戴耳機還貼著豈不sb,其實這樣的問題是經驗,沒必要問,不是所有的事都適合找人解答
㈤ android怎樣錄制系統內部聲音
通過API 19新加的MediaRecorder.AudioSource.REMOTE_SUBMIX參數可以讓系統App錄制系統內置的聲音,也就是揚聲器的聲音。下面是一個巨簡單的例子來示例如何通過AudioRecord配合REMOTE_SUBMIX參數進行錄制。
1. 編譯apk
MainActivity.java:
packagecom.example.audiotest;
importjava.io.FileOutputStream;
importjava.io.IOException;
importandroid.app.Activity;
importandroid.media.AudioFormat;
importandroid.media.AudioRecord;
importandroid.media.MediaRecorder;
importandroid.os.Bundle;
importandroid.util.Log;
importandroid.view.View;
importandroid.widget.Button;
{
privatestaticStringTAG="JZJ";
AudioRecordmRecord=null;
booleanmReqStop=false;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
(newThread(){
@Override
publicvoidrun(){
recordAndPlay();
}
}).start();
}
privatefinalintkSampleRate=44100;
privatefinalintkChannelMode=AudioFormat.CHANNEL_IN_STEREO;
privatefinalintkEncodeFormat=AudioFormat.ENCODING_PCM_16BIT;
privatevoidinit(){
intminBufferSize=AudioRecord.getMinBufferSize(kSampleRate,kChannelMode,
kEncodeFormat);
mRecord=newAudioRecord(MediaRecorder.AudioSource.REMOTE_SUBMIX,
kSampleRate,kChannelMode,kEncodeFormat,minBufferSize*2);
}
privatefinalintkFrameSize=2048;
privateStringfilePath="/sdcard/voice.pcm";
privatevoidrecordAndPlay(){
FileOutputStreamos=null;
mRecord.startRecording();
try{
os=newFileOutputStream(filePath);
byte[]buffer=newbyte[kFrameSize];
intnum=0;
while(!mReqStop){
num=mRecord.read(buffer,0,kFrameSize);
Log.d(TAG,"buffer="+buffer.toString()+",num="+num);
os.write(buffer,0,num);
}
Log.d(TAG,"exitloop");
os.close();
}catch(IOExceptione){
e.printStackTrace();
Log.e(TAG,"DumpPCMtofilefailed");
}
mRecord.stop();
mRecord.release();
mRecord=null;
Log.d(TAG,"cleanup");
}
publicvoidstop(Viewview){
mReqStop=true;
ButtonstopBtn=(Button)findViewById(R.id.stopBtn);
stopBtn.setText("Stopped");
stopBtn.setEnabled(false);
}
}
㈥ android sdk 無法獲取聲音
你用的模擬器么,模擬器是無法錄音的,你電腦上有麥克風也沒有用,因為模擬器是不行的,你得用手機測試錄音軟體
㈦ webrtc ios 噪音怎麼處理
webrtc ios 噪音處理推薦使用ZEGO即構科技。ZEGO即構科技毫秒級音視頻互動,千萬級高並發,70%丟包下仍能保障穩定流暢的觀看體驗。 【點擊免費試用,0成本啟動】
方法/步驟
1 ,右擊桌面右下角的「喇叭」圖標,點擊「錄音設備」。
2 ,這是出現一個「麥克風」設備,右擊「麥克風」,點擊「屬性」。
3 ,「麥克風屬性」在「偵聽」中,找到「偵聽此設備」,若打鉤,把鉤去掉
4 ,再點擊「級別」,把「麥克風加強」調為0.0dB。
可以適度調節麥克風音量。
5 ,在「增強」中,選擇「禁用所有聲音效果」。
6 ,最後再在「高級」中,找到「獨占模式」,在它下邊有兩個選項,全部打鉤。
分別是「允許應用程序獨占控制該設備」「給與獨占模式應用程序優先」。還可以調下「默認格式」。
想要了解更多關於webrtc的相關信息,推薦咨詢ZEGO即構科技。公司自成立伊始,就專注自研音視頻引擎,在音頻前處理、網路自適應和跨平台兼容性等方面,達到國際一流水平,同時充分利用基礎雲服務商的能力,構建了MSDN海量有序自學習數據網路,服務覆蓋全球,涵蓋上百個音視頻互動業務場景。
㈧ android 聲音頻率檢測
android 錄音有基頻提取的,使用AudioRecord加傅里葉的一個變換可以提取
㈨ android怎麼調用系統聲音
Android中手機聲音調節步驟:
a、通過系統服務獲得聲音管理器:
AudioManager audioManager = (AudioManager)getSystemService(Service.AUDIO_SERVICE);
b、根據實際需要調用適當的方法:(常用方法)
audioManager.adjustStreamVolume(int streamType, int direction, int flags);
streamType:聲音類型,可取的為STREAM_VOICE_CALL(打電話時的聲音), STREAM_SYSTEM(Android系統聲音), STREAM_RING(電話鈴響), STREAM_MUSIC(音樂聲音)or STREAM_ALARM(警告聲音)。
direction:調整音量的方向,可取為ADJUST_LOWER(調低音量), ADJUST_RAISE(調高音量), or ADJUST_SAME(保持先前音量)。
flags:可選標志位(如要顯示出音量調節UI,使用如下flag:AudioManager.FLAG_SHOW_UI)。
audioManager.setStreamMute(int streamType, boolean state);設置指定聲音類型(streamType)是否為靜音。如果state為true,則設置為靜音;否則,不設置為靜音。
audioManager.setRingerMode(int ringerMode);
設置鈴音模式,可取值為RINGER_MODE_NORMAL(鈴音正常模式), RINGER_MODE_SILENT(鈴音靜音模式), or RINGER_MODE_VIBRATE(鈴音震動模式,即鈴音為靜音,啟動震動)。
audioManager.setMode(int mode);
設置聲音模式,可取值為MODE_NORMAL(正常模式,即在沒有鈴音與電話的情況), MODE_RINGTONE(鈴響模式), MODE_IN_CALL(接通電話模式)or MODE_IN_COMMUNICATION(通話模式)。
注意:聲音的調節是沒有許可權要求的。
㈩ android直接播放pcm語音為什麼會有噪音
最近在做手機客戶端用G726編碼庫向機台發送語音消息的DEMO,弄了一周左右才解決.
中間碰到的問題賊多,主要是用AudioRecord採集聲音的時候,然後用AudioTrack播放經常會出現噪音,這樣的情況讓人實在是無法接受。
後來查谷歌實在是沒折了,於是再次翻查了下sipdroid的代碼,發現sipdroid在採集聲音後,每次都會調用一個函數,於是我猜測,這個函數應該跟去除噪音有關,於是寫了個DEMO,測試了一下,發現噪音還真消除了.
噪音消除演算法:
void calc1(short[] lin,int off,int len) {
int i,j;
for (i = 0; i < len; i++) {
j = lin[i+off];
lin[i+off] = (short)(j>>2);
}
}
自己錄制PCM,播放PCM的DEMO。