1、Dsp.audioplayer 這個是matlab 的DSP工具箱中對象,能夠使用電腦的音頻設備發出音頻信號。(這個功能在未來發布的版本中可能會被去掉,會被audiodevicewriter 替代)app
1. 要預先設置定義好音頻播放對象。工具
H = dsp.AudioPlayer 返回一個音頻對象,能夠使用音頻輸出設備實時播放音頻信號。spa
H = dsp.AudioPlayer (‘PropertyName’, PropertyValue, ,,,)對象
屬性的含義:blog
(1).DeviceName 將音頻數據輸出的設備,默認Default,爲電腦的標準輸出設備。索引
(2).sampleRate 每秒發送的音頻設備的採樣數。默認44100,可調。隊列
(3).DeviceDataType 設備使用的數據類型。(Determine from input data type,8-bit integer,16-bit integer,24-bit integer,或32-bit float。默認是Determine from input data type)路由
(4).BufferSizeSource 緩衝區的來源,Auto或者Property。前者爲默認,表示根據SampleRate計算出適當的緩衝區大小。input
(5).BufferSize 緩衝區大小(整數),爲聲卡緩衝區大小的一半,一個數據幀不能傳遞到隊列,直到設備清空緩衝區,這會引發延遲。延遲是設備清空隊列和緩衝區所用的時間。BufferSize必須小於有效排隊時長。該屬性是可調的。調整此屬性涉及設備延遲和丟失數據的可能性(緩衝區欠載)之間的平衡。此屬性適用於將BufferSizeSource屬性設置爲Property。默認是4096。要將該BufferSize值設置爲默認值之外的值,請先將其更改BufferSizeSource爲'Property'。您能夠BufferSize在屬性列表中進行選擇。it
(6).QueueDuration 音頻隊列的長度,以秒爲單位,默認1.0s,目的是爲了平衡延遲和數據欠載之間的影響。延遲定義爲:
此值是System對象的數據供應可能滯後於設備數據需求的最大時間長度。若是MATLAB ®數據吞吐速率比器件吞吐率下降,發生緩衝欠載。您能夠使用OutputNumUnderrunSamples監視欠載。要糾正欠載運行,請使隊列持續時間大於緩衝區。若是MATLAB數據吞吐速率高於設備吞吐速率,則會發生緩衝區溢出,從而致使System對象在將數據寫入隊列以前等待。爲了儘可能減小丟失的可能性,System對象進行檢查以驗證隊列持續時間至少與緩衝區大小和幀大小的最大值同樣大。若是不是,則隊列持續時間自動設置爲此最大值。在模擬開始時,隊列中充滿了沉默。在每一個時間步,System對象都會將隊列頂部的樣本緩衝區發送到音頻設備。若是隊列中沒有足夠的數據來徹底填充緩衝區。
(7).OutputNumUnderrunSamples 啓用欠載計數輸出,設置爲true輸出自上次調用step方法以來因爲隊列不足而插入的零樣本數。默認是false
(8).ChannelMappingSource設備通道映射的來源指定是否肯定頻道映射爲'Auto' 或'Property'。若是您將值設置爲ChannelMappingSourceto 'Auto',則該ChannelMapping字段呈現爲非活動狀態。若是將此屬性設置爲'Property',則ChannelMapping字段中指定的矢量將用於路由輸出。
(9).ChannelMapping 數據到設備通道映射用於表示數據和設備輸出通道之間映射的有效通道索引向量。術語「 頻道映射」是指將選定音頻設備上的頻道與數據頻道相關聯的1對1映射。當您播放音頻時,通道映射容許您指定音頻數據的哪一個通道輸出特定的音頻數據通道。默認狀況下,該ChannelMapping字段爲[1:MAXOUTPUTCHANNELS],其中MAXOUTPUTCHANNELS取決於所選設備。
2. 調用step方法發送音頻數據到設備
Step方法: 將音頻寫入音頻輸出設備
step(H,AUDIO) 將一幀AUDIO樣本寫入音頻輸出設備。
Underrun = step(H,AUDIO)將一幀AUDIO 樣本寫入音頻輸出設備。輸出Underrun指示自上次調用step方法以來因爲隊列欠載而插入的零樣本數 。此OutputNumUnderrunSamples屬性適用於將屬性設置 爲 true。
2、 Dsp.audioRecorder 對象使用電腦的音頻設備錄製音頻數據。
1. 定義並設置音頻錄製對象。
H = dsp.AudioRecorder 返回一個錄音對象,使用音頻輸入設備實時錄製音頻樣本
H = dsp.AudioRecorder('PropertyName',PropertyValue, ...)返回一個錄音機對象,H每一個屬性設置爲指定的值。
屬性:
DeviceName 從中獲取音頻數據的設備,默認爲電腦標準輸入設備。
SampleRate 從音頻設備讀取的每秒採樣數將信號中每秒的採樣數指定爲整數。默認值是44100.此屬性是可調整的。
NumChannels 音頻通道數以整數形式指定音頻通道的數量。默認值是2。
DeviceDataType 設備使用的數據類型指定用於由該裝置獲取的音頻數據做爲數據類型Determine from output data type,8-bit integer,16-bit integer,24-bit integer,或32-bit float。默認是Determine from output data type。
BufferSizeSource 緩衝區大小的來源指定如何肯定緩衝區大小爲Auto或Property。默認是Auto。
BufferSize
QueueDuration
SamplesPerFrame輸出信號中的採樣數量將音頻記錄器輸出中的採樣數指定爲整數。默認值是1024。
OutputNumOverrunSamples 啓用超限計數輸出設置爲true輸出自上次調用step方法以來因爲隊列溢出而丟棄的樣本數。默認是false。
2. 調用step方法錄製來自錄音設備的音頻
AUDIO = step(H) 從所選音頻輸入設備讀取一幀音頻樣本。
[AUDIO,Overrun] = step(H) 從所選音頻輸入設備讀取一幀音頻樣本。輸出Overrun表示自上次調用step方法以來因爲隊列溢出而丟棄的樣本數 。當您將OutputNumOverrunSamples屬性 設置爲時,此語法適用true