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

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

最佳答案

AFAIK no ,未定义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格式。

关于vb.net - 创建每个样本值具有任意位的WAV文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39193161/

相关文章:

javascript - 在 Javascript 中控制音频平衡 (L/R)

.net - 希腊增值税验证码

c# - 我可以仅按文件名查找文件吗(即扩展名未知)

javascript - 如何在不在服务器上创建页面的情况下将字符串解释为 HTML 页面

ios - AVAudioEngine 播放多声道音频

来自 ipod 库的 ios 时间拉伸(stretch)歌曲

iphone - 文字转语音:阅读列表并在标题之间播放音频文件

android - 等待 TTS/语音识别在 Android 应用程序中完成

sql-server - 随着我不断添加行,SQL Server 2005 变慢了

python - 导入错误 : No Module named 'driver' in pyttsx