C#中如何得到从麦克风输入的声音的响度频率等数据

C#中如何得到从麦克风输入的声音的响度频率等数据,第1张

你好哦。

很高兴看到你的问题。

但是又很遗憾到现在还没有人回答你的问题。也可能你现在已经在别的地方找到了答案,那就得恭喜你啦。

可能是你问的问题有些专业了,没人会。或者别人没有遇到或者接触过你的问题,所以帮不了你。建议你去问题的相关论坛去求助,那里的人通常比较多,也比较热心,可能能快点帮你解决问题。

祝你好运~!

希望我的回答也能够帮到你!

谢谢

Audio Unit播放PCM数据

Audio Unit录音

PCM编码介绍: >

如果自己完成,不使用其他库的话,就是 录音,然后分析录音数据,录音的话我有代码

/ 录音wave部分 

  

  曙光 2014年8月2日

/

#include <windowsh>

#include <mmsystemh>            

#pragma comment(lib, "winmmlib")

static WAVEFORMATEX WaveFormat;

static HWAVEIN      WaveIn;

static WAVEHDR      WaveHdr[2];

static short        Data1[8820], Data2[8820];

static BOOL         WaveOver = FALSE;

static volatile int HdrIndex;

// extern void WaveRecordStart(void);

// extern void WaveRecordStop(void);

extern void OutputWaveData(short data, DWORD dataLen);   // 导出数据,此函数需要注意线程安全

// 回调函数

static void CALLBACK WaveProc(HWAVEOUT, UINT uMsg, DWORD, DWORD, DWORD) {

if ((uMsg != WIM_DATA) || WaveOver) {

return;

}

OutputWaveData((short ) WaveHdr[HdrIndex]lpData, WaveHdr[HdrIndex]dwBytesRecorded);

waveInAddBuffer(WaveIn, WaveHdr + HdrIndex, sizeof(WAVEHDR));  // 有人说这里不能调用,可能会线程死锁,但是测试没发现问题

HdrIndex = ! HdrIndex;   // 0 or 1

}

// 初始化设备并且开始录音

void WaveRecordStart(void) {

WaveFormatcbSize = 0;

WaveFormatnChannels = 2;

WaveFormatnSamplesPerSec = 44100;

WaveFormatnBlockAlign = 4;

WaveFormatnAvgBytesPerSec = 88200;

WaveFormatwBitsPerSample = 16;

WaveFormatwFormatTag = 1;

waveInOpen(&WaveIn, WAVE_MAPPER, &WaveFormat, (DWORD_PTR) &WaveProc, 0, CALLBACK_FUNCTION);

WaveOver = FALSE;

HdrIndex = 0;

WaveHdr[0]lpData = (LPSTR) Data1;

WaveHdr[0]dwBufferLength = sizeof(Data1);

WaveHdr[1]lpData = (LPSTR) Data2;

WaveHdr[1]dwBufferLength = sizeof(Data2);

WaveHdr[0]dwBytesRecorded = WaveHdr[1]dwBytesRecorded = 0;

WaveHdr[0]dwUser = WaveHdr[1]dwUser = 0;

WaveHdr[0]dwFlags = WaveHdr[1]dwFlags = 1;

WaveHdr[0]dwLoops = WaveHdr[1]dwLoops = 1;

WaveHdr[0]lpNext = WaveHdr[1]lpNext = 0;

WaveHdr[0]reserved = WaveHdr[1]reserved = 0;

waveInPrepareHeader(WaveIn, WaveHdr, sizeof(WAVEHDR));

waveInAddBuffer(WaveIn, WaveHdr, sizeof(WAVEHDR));

waveInPrepareHeader(WaveIn, WaveHdr + 1, sizeof(WAVEHDR));

waveInAddBuffer(WaveIn, WaveHdr + 1, sizeof(WAVEHDR));

waveInStart(WaveIn);

}

// 结束录音

void WaveRecordStop(void) {

WaveOver = TRUE;

waveInStop(WaveIn);

waveInReset(WaveIn);

waveInUnprepareHeader(WaveIn, WaveHdr, sizeof(WAVEHDR));

waveInUnprepareHeader(WaveIn, WaveHdr + 1, sizeof(WAVEHDR));

waveInClose(WaveIn);

}

固定频率无线麦克风是一种无线电设备,它通过无线电信号传输声音信号。在使用时,麦克风将声音信号转换为电信号,然后通过无线电信号传输到接收器。接收器将无线电信号转换为电信号,再将其转换为声音信号,从而实现无线传输。

在编写固定频率无线麦克风的数据时,需要包括以下内容:

1 无线电频率:无线麦克风使用的频率需要在规定的范围内,以避免干扰其他无线电设备。

2 传输距离:无线麦克风的传输距离需要在规定范围内,以确保信号的稳定传输。

3 电池寿命:无线麦克风使用电池供电,需要在数据中注明电池寿命,以便用户及时更换电池。

4 信号稳定性:无线麦克风的信号稳定性是使用者最为关注的问题,需要在数据中注明信号稳定性的相关参数。

5 兼容性:无线麦克风需要兼容不同的接收器和音频设备,需要在数据中注明兼容性的相关参数。

总之,编写固定频率无线麦克风的数据需要考虑到多方面的因素,以确保其稳定性和可靠性。

电脑需要安装驱动,重新插拔注意提示,如果没有反应到麦克风品牌网站去找解决办法。RODE罗德是澳大利亚一家专业的音频设备品牌,伴随着短视频的兴起,罗德相继推出了许多款麦克风及相应配件产品,WirelessGO无线领夹麦克风便是其中非常成功的一件产品。

以上就是关于C#中如何得到从麦克风输入的声音的响度频率等数据全部的内容,包括:C#中如何得到从麦克风输入的声音的响度频率等数据、iOS Audio Unit混音之麦克风输入与PCM数据混音、请问,如何用C++实时获取话筒输入的音量大小等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9775701.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存