创建每个样本值具有任意位的WAV文件?

时间:2016-08-28 16:02:19

标签: vb.net audio text-to-speech wav speech-synthesis

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")

1 个答案:

答案 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格式。