Android AudioRecord錄音音量大小
最近在做語音識別功能,在使用者錄音的時間要有個動畫標識錄音的音量
參考了
http://blog.csdn.net/greatpresident/article/details/38402147
發現每臺手機得出的結果不一至,而且得到的音量結果的梯度不明顯。
繼續度娘後找到更好的解決方案
http://ikinglai.blog.51cto.com/6220785/1256781/
錄音的編碼主要有兩種:8位pcm和16位pcm。8位pcm用一個位元組表示語音的一個點,16位pcm用兩個位元組,也就是一個short來表示語音的一個點。需要特別注意的是,如果你用的16位pcm編碼,而取錄音資料用的是byte的話,需要自己將兩個bye轉換成一個short。將兩個byte轉換成一個short,有小端和大端兩種,一般預設情況都是小端,但是有的開源庫,比如lamemp3需要的就是大端,這個要根據不同的情況進行不同的處理。
下面以Android為例,介紹一下用平均值計算音量的方法。
private double calculateVolume(short[] buffer){
double sumVolume = 0.0;
double avgVolume = 0.0;
double volume = 0.0;
for(short b : buffer){
sumVolume += Math.abs(b);
}
avgVolume = sumVolume / buffer.length;
volume = Math.log10(1 + avgVolume) * 10;
return volume;
}
還有一個特別需要注意的問題是:如果你錄音的編碼是16為pcm,而錄音資料資料是byte,需要將兩個byte轉為一個short進行處理,建議用小端的方式。
private doublecalculateVolume(byte[] buffer){
double sumVolume = 0.0;
double avgVolume = 0.0;
double volume = 0.0;
for(int i = 0; i < buffer.length; i+=2){
int
int v2 = buffer[i + 1] & 0xFF;
int temp = v1 + (v2 << 8);// 小端
if (temp >= 0x8000) {
temp = 0xffff - temp;
}
sumVolume += Math.abs(temp);
}
avgVolume = sumVolume / buffer.length / 2;
volume = Math.log10(1 + avgVolume) * 10;
return volume;
}
相關推薦
Android AudioRecord錄音音量大小
最近在做語音識別功能,在使用者錄音的時間要有個動畫標識錄音的音量 參考了 http://blog.csdn.net/greatpresident/article/details/38402147 發現每臺手機得出的結果不一至,而且得到的音量結果的梯度不明顯。 繼續度娘後找到
Android平臺錄音音量計的實現
type 源代碼 cti ddc res javascrip his 顯示 中間 今天博主要給大家分享的是怎樣在Android平臺上實現錄音時的音量指示計。開門見山。先來看一張Demo的效果圖: 如上圖所看到的,兩個button各自是開始錄音和停止
Android語音轉文字一使用AudioRecord錄音
參考:https://www.cnblogs.com/sowhat4999/p/4439837.html 為什麼不直接使用谷歌封裝好的MediaRecorder,而使用AudioRecord錄音呢?因為專案中需要將語音轉成文字,訊飛語音聽寫只支援PCM和WAV格式的音訊
Android路上--AudioRecord 錄音詳解
微信公眾號:IT小頑童 最近公司的一個需求,集合了錄音、暫停、停止、完成、播放、重錄、計時等功能,沒找到合適的資源,大部分都不支援暫停,就自己整理並整合了一個,參考官方文件和一些資料後,擼了個庫,現在做一些說明和解析。 官方文件地址:https://developer.
如何獲取和設定android系統鈴聲和音量大小
通過程式獲取android系統手機的鈴聲和音量。同樣,設定鈴聲和音量的方法也很簡單! 設定音量的方法也很簡單,AudioManager提供了方法: publicvoidsetStreamVolume(intstreamType,intindex,intflags)其中streamType有內建的常量,去文
Android通過音量鍵調節音量大小
通過程式實現對android系統手機音量的調節 1、獲得系統服務 AudioManager(音訊管理器)了,該類位於Android.Media包下,提供了音量控制與鈴聲模式相關操作!使用Context.getSystemService(Context.AUDIO.SER
SeekBar 元件 類似於拖動設定音量大小
文章目錄 ####1、功能介紹 類似於拖動顯示 音量 或 亮度大小 ####2、程式碼架構 ####3、activity_main.xml 檔案 <?xml version="1.0" encoding="utf-8"?>
Android-gui分析-buffer大小交換
上圖為WMS, SurfaceFlinger, app如何同步buffer大小,總結下來有如下6 個步驟 1 Window寬度高度發生變化,如轉屏或者window動畫. 2 WMS更新SurfaceControl大小,這一步要通過事務來完成 3 SurfaceFlinger到下一
Android之獲取螢幕大小
java 程式碼 import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.DisplayMetrics; import andr
Android 通話錄音程式碼流程
通話錄音: 從介面開始找程式碼,最後轉了幾個函式名,並轉到多媒體錄音模組 start_ record voiceRecordClicked --- CallButtonFragment.java |------- com/android/in
Android 修改系統字型大小,導致頁面展示異常解決方案
Android系統預設是允許修改系統本身的字型大小的,導致頁面展示異常。 頁面展示異常是因為系統字型大小影響到了程式中字型的單位sp,所以解決此問題的方案1是,將佈局中字型大小的單位sp換成dp 解決方案2:重寫Activity或Application中的getResou
Android設定SurfaceView任意大小和任意位置
1. 程式碼 public void init() { // FrameLayout ViewGroup.LayoutParams framelayout_params = new ViewGroup.La
Android TabLayout設定字型大小的正確方式
1、在styles.xml中自定義TabLayoutTextStyle <style name="TabLayoutTextStyle"> <item name="android:textSize">@dimen/tab_layout_text
Android禁止app字型大小跟隨系統字型大小調節
Android禁止app字型大小跟隨系統字型大小調節 針對字型不隨系統應用改變而改變,不然會導致原來的一些佈局變化,在Application中重寫getResources() @Override public Resources getResourc
android 動態改變字型大小
/** 動態計算字型大小* * @param WriteSize 預設字型大小50* @param Texts 列印字串List* @param WriteHeight 列印區域高度* @param writeWidth 列印區域寬度* @return*/public
Android設定中音量條拖動異常解決方法
在Android P,設定-->聲音中,通過拖動SeekBar設定音量,尤其是鈴聲音量時存在以下三個問題: 1、滑動條不跟手,存在回彈的現象。 2、偶發性的滑動條所在的位置與實際值不相符。 3、偶發性的,滑動鈴聲音量條時,鬧鐘音量也跟著滑動。 對問題日誌分析沒有
Android-->RatingBar自定義大小,自定義樣式(圖片)
1:首先宣告自定義RatingBar的樣式(values/styles.xml) <style name="RadingStyle" parent="@android:style/Widget.RatingBar"> <!-- 定義星
Android 比較時間的大小,時間差,格式化時間,以及格式化兩個時間大小差值、格式化秒錶
一、比較時間的大小-三種方式: 1、獲取時間戳比較 timestamp1 > timestamp2 2、轉換為Date比較 val date=Date() val date2=時間2 date.after(date2) 3、使用工具類(推薦) val dat
Android 優化OTA包大小和開機啟動時間
問題說明 在Android 升級到 5.0 (Lollipop/L)之後,虛擬機器例項換成了ART,這加快了應用執行時的速度,但是在系統升級中卻引入了一些不便之處: 在生成升級包時,因為ART採用了預編譯優化功能,會把 APK 及JAR等通過dex2ota預編譯成odex
Android如何減少apk大小
因為推廣的需要,公司需要把APK的大小再“減小”一下,4M以內! 當達到4M以內之後,公司建議說,能否再壓壓?2M如何? 瘦身前 因為平時就考慮到大小的限制,所以很多工作已經做過了,如下列舉現在的狀態: 7.3M(Debug版本)和6.5M(Release版本)開啟mini