WAV 文件是否允许任意数量的bitsPerSample
?
我未能让它与8以下的任何东西一起工作。我不知道如何定义blockAlign
一件事。
Dim ss As New Speech.Synthesis.SpeechSynthesizer
Dim info As New Speech.AudioFormat.SpeechAudioFormatInfo(AudioFormat.EncodingFormat.Pcm, 5000, 4, 1, 2500, 1, Nothing) ' FAILS
ss.SetOutputToWaveFile("TEST4bit.wav", info)
ss.Speak("I am 4 bit.")
My.Computer.Audio.Play("TEST4bit.wav")
答案 0 :(得分:1)
AFAIK 没有,4位PCM格式未定义,拥有16个音量级别的音频是没有意义的;质量太可怕了。
虽然技术上可行,但我知道不支持它的体面软件(例如Wavelab),你自己的播放器可以。
公式:blockAlign = channels * (bitsPerSample / 8)
因此对于单声道4位,它将是:blockAlign = 1 * ((double)4 / 8) = 0.5
请注意double
必须使用0
才能使用{。}}。
但是如果你看下面的块对齐定义,那么0.5
字节的对齐真的没有多大意义,一个人必须在比特级工作(痛苦和无用,因为在这质量,非压缩PCM听起来很可怕):
wBlockAlign
波形数据的块对齐(以字节为单位)。回放 软件需要处理多个wBlockAlign字节的数据 一段时间,所以wBlockAlign的值可以用于缓冲区 对准。
<强>参考:强>
http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/Docs/riffmci.pdf第59页
解决方法:强>
如果您确实需要4位,请切换到ADPCM格式。