0
您是否知道我可以使用任何跨平臺音頻庫來標準化採樣音頻?跨平臺庫來規範化音頻?
您是否知道我可以使用任何跨平臺音頻庫來標準化採樣音頻?跨平臺庫來規範化音頻?
標準化是一個簡單的過程。這是float
個簡單的實現:
float peakAmplitude(0.0f);
/* find the peak */
for (size_t idx(0); idx < bufferLength; ++idx) {
peakAmplitude = std::max(peakAmplitude, std::fabs(buffer[idx]));
}
if (0.0f >= peakAmplitude) {
std::cout << "signal is silent\n";
return;
}
/* apply normalization */
const float mul(1.0f/peakAmplitude);
for (size_t idx(0); idx < bufferLength; ++idx) {
buffer[idx] *= mul;
}
其他信號格式可容易地轉化。
那麼,它的簡單,除非你想正常化*感知*響度。 – derobert
@derobert在上述書寫風格中,rms規範化實現需要*一行*代碼。 – justin
這是真的,但那不是感知響度。他們的人類聽覺系統沒有平均聽到所有頻率,所以知覺響度更難。如果您認爲OP需要澄清,請參閱http://en.wikipedia.org/wiki/File:Perceived_Human_Hearing.png – derobert