儘管如此新手Java開發人員,我需要建立一個Android應用程序,從所提供的URL從一個MP3流中提取體積和或頻率數據Android應用
1流的單個MP3和然後
2提取體積和或從MP3流聲音頻率數據
3驅動光顯示從數據中#2
我有一個可能的解決方案#1和很努力#2,
任何人都可以在SDK中看到特定的類,我應該看看嗎?
github上或其他地方是否有任何現有的Android項目從流式傳輸mp3文件中提取頻率和/或音量數據我可能會從中學習?
儘管如此新手Java開發人員,我需要建立一個Android應用程序,從所提供的URL從一個MP3流中提取體積和或頻率數據Android應用
1流的單個MP3和然後
2提取體積和或從MP3流聲音頻率數據
3驅動光顯示從數據中#2
我有一個可能的解決方案#1和很努力#2,
任何人都可以在SDK中看到特定的類,我應該看看嗎?
github上或其他地方是否有任何現有的Android項目從流式傳輸mp3文件中提取頻率和/或音量數據我可能會從中學習?
Echo Nest(http://developer.echonest.com/)是一款用於分析MP3音量,頻率,節拍和其他數據的強大工具。
有一個java庫可以與Android一起使用。
這裏是爲您的項目另一個很好的資源:http://therandomlab.blogspot.nl/2013/05/fft-audio-frequency-analysis-with.html
好運
謝謝,但是在尋找Android特定的(java)代碼 –
你將要暴露緩衝根本讀這樣你就可以得到的音量水平得到...這可能意味着使用一些其他的API比'MediaPlayer'可能不會暴露音量的RMS級別。
每次開啓MP3做了緩衝讀寫時間,您可以生成x軸,從卷y軸數據有以下:
while (mIsPlaying) {
double sum = 0;
int readSize = mRecorder.read(mBuffer, 0, mBuffer.length);
for (int i = 0; i < readSize; i++) {
output.writeShort(mBuffer[i]);
sum += mBuffer[i] * mBuffer[i];
}
// PrBar needs RMS as int
//log base2 for the rms expression on the Volume from the mic
if (readSize > 0) {
mProgressBar.setProgress((int)Math.sqrt(sum/readSize));
handleRMS((Math.log(Math.sqrt(sum/readSize))/Math.log(2)));
}
}
...
private void handleRMS(double rms){
rmscnt++;
rmssum += rms;
if(rms > rmsmax)rmsmax=rms;
if(rms< rmsmin)rmsmin=rms;
double myamt=(rmsmax - rmsmin)/10 +rmsmin;
if (rms < myamt) decile++;
if(rmscnt % 5 ==0){
if (rmssum/5 < myamt) {
if(Long.valueOf(System.currentTimeMillis())
- tslist.get(tslist.size()-1) - segmenttime > 0){
tslist.add(Long.valueOf(System.currentTimeMillis()));
};
};
rmssum = 0;
}
}
* feature - select the TS corresponding to a 'pause' in the speech stream * arriving from microphone * ''pause' in algorythm and
正弦波模式下的正常RMS音量*根據正弦波*觀察 RMS的最後讀數*分鐘波峯上的y軸'vals *'myamt'字段是一個閾值上限, 目前是delta(max - min)*的10%*實際上,一個 暫停必須有一系列相鄰的RMS價值與AVG LESS 比*某些配置值。 *一旦接受暫停的TS爲 ,則在查找語音中的另一個暫停之前,應該通過 還有另一個最小時間值。 *有幫助的提示 - 5 到10%的RMS值應增加「十分位」。 *否則, 在雷達上沒有足夠的LO音量事件發生 演講中的ID暫停。
爲了暴露緩衝區,而不是'MediaPlayer'API,您可能需要使用類似'AudioTrack'來處理您的MP3。對於樣品,我覺得你可以去這個項目上git
RMS和處理解釋here
對於MP3的頻率,你可以看到這個蘇答案:http://stackoverflow.com/a/5189581/ 1739882 –
該問題需要澄清其「頻率」含義。 OP是否意味着編碼比特率或聲音頻率? – Stan
我認爲第三個要求是音頻波形頻率,但我敢打賭,他們真正想要的是FFT分析。 –