From 9fcb3cc06b4e324f0913d2f61b89becc2baeef1b Mon Sep 17 00:00:00 2001
From: hnluo <haoneng.lhn@alibaba-inc.com>
Date: 星期一, 11 九月 2023 17:40:03 +0800
Subject: [PATCH] Merge pull request #932 from alibaba-damo-academy/dev_lhn
---
funasr/runtime/html5/static/main.js | 95 ++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 89 insertions(+), 6 deletions(-)
diff --git a/funasr/runtime/html5/static/main.js b/funasr/runtime/html5/static/main.js
index e828ae1..38811cd 100644
--- a/funasr/runtime/html5/static/main.js
+++ b/funasr/runtime/html5/static/main.js
@@ -45,6 +45,7 @@
var isfilemode=false; // if it is in file mode
var file_ext="";
+var file_sample_rate=16000; //for wav file sample rate
var file_data_array; // array to save file data
var totalsend=0;
@@ -70,6 +71,7 @@
}
}
+
upfile.onclick=function()
{
btnStart.disabled = true;
@@ -77,27 +79,108 @@
btnConnect.disabled=false;
}
+
+// from https://github.com/xiangyuecn/Recorder/tree/master
+var readWavInfo=function(bytes){
+ //璇诲彇wav鏂囦欢澶达紝缁熶竴鎴�44瀛楄妭鐨勫ご
+ if(bytes.byteLength<44){
+ return null;
+ };
+ var wavView=bytes;
+ var eq=function(p,s){
+ for(var i=0;i<s.length;i++){
+ if(wavView[p+i]!=s.charCodeAt(i)){
+ return false;
+ };
+ };
+ return true;
+ };
+
+ if(eq(0,"RIFF")&&eq(8,"WAVEfmt ")){
+
+ var numCh=wavView[22];
+ if(wavView[20]==1 && (numCh==1||numCh==2)){//raw pcm 鍗曟垨鍙屽0閬�
+ var sampleRate=wavView[24]+(wavView[25]<<8)+(wavView[26]<<16)+(wavView[27]<<24);
+ var bitRate=wavView[34]+(wavView[35]<<8);
+ var heads=[wavView.subarray(0,12)],headSize=12;//head鍙繚鐣欏繀瑕佺殑鍧�
+ //鎼滅储data鍧楃殑浣嶇疆
+ var dataPos=0; // 44 鎴栨湁鏇村鍧�
+ for(var i=12,iL=wavView.length-8;i<iL;){
+ if(wavView[i]==100&&wavView[i+1]==97&&wavView[i+2]==116&&wavView[i+3]==97){//eq(i,"data")
+ heads.push(wavView.subarray(i,i+8));
+ headSize+=8;
+ dataPos=i+8;break;
+ }
+ var i0=i;
+ i+=4;
+ i+=4+wavView[i]+(wavView[i+1]<<8)+(wavView[i+2]<<16)+(wavView[i+3]<<24);
+ if(i0==12){//fmt
+ heads.push(wavView.subarray(i0,i));
+ headSize+=i-i0;
+ }
+ }
+ if(dataPos){
+ var wavHead=new Uint8Array(headSize);
+ for(var i=0,n=0;i<heads.length;i++){
+ wavHead.set(heads[i],n);n+=heads[i].length;
+ }
+ return {
+ sampleRate:sampleRate
+ ,bitRate:bitRate
+ ,numChannels:numCh
+ ,wavHead44:wavHead
+ ,dataPos:dataPos
+ };
+ };
+ };
+ };
+ return null;
+};
+
upfile.onchange = function () {
銆�銆�銆�銆�銆�銆�var len = this.files.length;
for(let i = 0; i < len; i++) {
+
let fileAudio = new FileReader();
fileAudio.readAsArrayBuffer(this.files[i]);
+
file_ext=this.files[i].name.split('.').pop().toLowerCase();
- if(file_ext==="wav"){
- file_ext="pcm";
- }
+ var audioblob;
fileAudio.onload = function() {
- var audioblob= fileAudio.result;
+ audioblob = fileAudio.result;
+
+
file_data_array=audioblob;
- console.log(audioblob);
+
info_div.innerHTML='璇风偣鍑昏繛鎺ヨ繘琛岃瘑鍒�';
-
+
}
+
銆�銆�銆�銆�銆�銆�銆�銆�銆�銆�fileAudio.onerror = function(e) {
銆�銆�銆�銆�銆�銆�銆�銆�銆�銆�銆�銆�console.log('error' + e);
銆�銆�銆�銆�銆�銆�銆�銆�銆�銆�}
}
+ // for wav file, we get the sample rate
+ if(file_ext=="wav")
+ for(let i = 0; i < len; i++) {
+
+ let fileAudio = new FileReader();
+ fileAudio.readAsArrayBuffer(this.files[i]);
+ fileAudio.onload = function() {
+ audioblob = new Uint8Array(fileAudio.result);
+
+ // for wav file, we can get the sample rate
+ var info=readWavInfo(audioblob);
+ console.log(info);
+ file_sample_rate=info.sampleRate;
+
+
+ }
+
+銆�銆�銆�銆�銆�銆�
+ }
+
}
function play_file()
--
Gitblit v1.9.1