我使用Portaudio 19(使用阻止i / o)捕获语音并将其提供给将要处理它的工具包。 音频格式是paInt16(即signed short int),缓冲区(存储样本)的类型为signed short int。 工具包输入应为float类型。 我需要在工具箱的数据结构中保留缓冲区的相同值, 但是在执行从短到浮动的样本转换之后,信号变得失真。在图像中,第一个是信号的短版本,第二个是浮动版本(都在原始音频文件上)。(http://postimg.org/image/paajkbcu9/) 有什么想法吗?
编辑:这里是代码
for( int i = 0; i < d->frag_dim_in_sample;i++ )
(*d->ready->v)(i) = float(temp->frame[i]);
认为这是一个演员问题,我试了这个没有改变
for( int i = 0; i < d->frag_dim_in_sample;i++ )
(*d->ready->v)(i) = *reinterpret_cast<float*>(&temp->frame[i]);