麥克風或聲音會產生不同的電流。我想從原始音頻文件中提取這些信息。cpp原始音頻到模擬值
我得到來自麥克風的原始數據,用下面的命令:
arecord -t raw -f cd
現在我想分析,以便從0V提取信號至5V的原始數據。但我不知道如何繼續。
我試了一下,但它是絕對不成功的,我覺得我離解決方案很遠。
#define BUFSIZE 8
uint8_t analogRead() {
uint8_t buf[BUFSIZE];
//cout << "analogRead" << endl;
read(STDIN_FILENO, buf, sizeof(buf));
size_t size = sizeof(buf);
double accum = 0;
int const n_samples = size/2;
for (int i = 0; i < size; i += 2)
{
// put two bytes into one __signed__ integer
uint8_t val = buf[i] + ((uint8_t)buf[i+1] << 8);
accum += val*val;
}
accum /= n_samples;
cout << accum << endl;
return accum;
}
int main(int argc, char** argv) {
while(1) {
cout << analogRead() << endl;
}
return 0;
}
然後我跑我的測試是這樣的:
arecord -t raw -f cd | ./mytest