全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1279
推到 Plurk!
推到 Facebook!

錄音後如何把前後空白刪除只有留有錄音的部份?

尚未結案
jeffreck
高階會員


發表:247
回覆:340
積分:197
註冊:2003-01-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-11-02 22:21:58 IP:61.70.xxx.xxx 未訂閱
請教各位前輩: 我要寫一個錄音程式,必 須把前後的空白刪除只有留有錄音的部份 請教各位前輩我因該如何作?? 我在討論區中有找到錄音的方法如下,但要如何前後的空白刪除只有留有錄音的部份/? ----------- open前要先載入 開始錄 Mediaplayer1.close; Mediaplayer1.filename:='c:\empty.wav'; Mediaplayer1.open; Mediaplayer1.Startrecording; 存檔 Mediaplayer1.filename:='c:\test.wav'; Mediaplayer1.Save; Mediaplayer1.close; Mediaplayer1.filename:='c:\empty.wav'; Mediaplayer1.open; --------------------------- 非常非常的謝謝你,因為有你這世界變的更美好 ☆ ^_^ ☆ °∴°﹒☆°.﹒‧°∴°﹒°.﹒‧°∴°﹒ ﹒‧°∴°﹒☆°.﹒‧°∴°﹒°.﹒‧°∴°﹒﹒‧°∴°﹒☆°.
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-11-02 22:34:04 IP:203.203.xxx.xxx 未訂閱
引言: 請教各位前輩: 我要寫一個錄音程式,必 須把前後的空白刪除只有留有錄音的部份 請教各位前輩我因該如何作?? 我在討論區中有找到錄音的方法如下,但要如何前後的空白刪除只有留有錄音的部份/? ----------- open前要先載入 開始錄 Mediaplayer1.close; Mediaplayer1.filename:='c:\empty.wav'; Mediaplayer1.open; Mediaplayer1.Startrecording; 存檔 Mediaplayer1.filename:='c:\test.wav'; Mediaplayer1.Save; Mediaplayer1.close; Mediaplayer1.filename:='c:\empty.wav'; Mediaplayer1.open; --------------------------- 非常非常的謝謝你,因為有你這世界變的更美好 ☆ ^_^ ☆ °∴°﹒☆°.﹒‧°∴°﹒°.﹒‧°∴°﹒ ﹒‧°∴°﹒☆°.﹒‧°∴°﹒°.﹒‧°∴°﹒﹒‧°∴°﹒☆°.
找到資料的位置,8 byte 的 127 代表無聲 16 byte 為 0 至於接近 127/0 的一個上下範圍可以視為雜音,大小你自己決定 值到大於該值後表示為正常聲音資料,再加以紀錄即可
jeffreck
高階會員


發表:247
回覆:340
積分:197
註冊:2003-01-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-11-02 22:46:05 IP:61.70.xxx.xxx 未訂閱
引言: 找到資料的位置,8 byte 的 127 代表無聲 16 byte 為 0 至於接近 127/0 的一個上下範圍可以視為雜音,大小你自己決定 值到大於該值後表示為正常聲音資料,再加以紀錄即可
對不起syntax 前輩,我程度不好,能否告知一下, 如何去分8 byte及16 byte ,及如何實作, 謝謝syntax 前輩
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-11-08 12:28:14 IP:203.222.xxx.xxx 未訂閱
既然你說你程度不好 那就改由先存檔 在將之開啟來加以處理後在存檔 Mediaplayer1.filename:='c:\Temp.wav'; 先用一個檔案暫存 .... var aFile,nFile: TFileStream; 開檔 aFile.LoadFromFile('C:\Temp.wav'); 存檔 aFile.SaveToStream(nFile); aFile.Position := urPosition; nFile.SaveToFile('c:\Temp.wav'); 辨識 如果是 8 byte 用 Byte(aFile.Memory[xx]) 來辨識 16 byte 用 SmallInt(aFile.Memory[xx]) 到了 資料數值大於雜音定義時 就記下當時位置 urPosition := aFile.Position 來去頭 至於去尾用 turcate(aFile.Handle) 至於 wave 的格式 可以在 開檔 aFile.LoadFromFile('C:\Temp.wav'); 後,辨認格式, 相關資料在 http://www.wotsit.org/ 找到 以上只是演算法則,作業的大致流程,至於函數或呼叫可能會有錯字,你要自己查一查
系統時間:2024-05-07 19:47:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!