2016-08-28 4 views
1

Do WAV 파일의 임의 숫자는 bitsPerSample입니까?임의의 비트/샘플 값으로 WAV 파일 만들기?

나는 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

AFAIK 4 비트 PCM 포맷 정의 , 훨씬 의미가 16 개의 오디오 볼륨 레벨을 가질 수 있도록 않을 없다; 품질은 끔찍할 것입니다.

기술적으로 가능하지만 필자는 자신의 플레이어가 할 수있는 괜찮은 소프트웨어 (예 : Wavelab)가 없다는 것을 알고 있습니다.

공식 : blockAlign = channels * (bitsPerSample/8)

그래서 모노 4 비트는 다음과 같습니다에 필요되는 double의 사용이 0와 끝까지하지 blockAlign = 1 * ((double)4/8) = 0.5

참고.

아래의 블록 정렬 정의를 살펴보면 0.5 바이트의 정렬을 갖는 것은별로 의미가 없지만 비트 수준에서 작업해야합니다 (고통스럽고 쓸모 없기 때문입니다. - 압축은 PCM) 끔찍한 소리 것이다 : 파형 데이터

wBlockAlign

바이트 블럭 정렬(). 재생 소프트웨어는 에 wBlockAlign 바이트의 데이터를 여러 번 처리해야하므로 버퍼 정렬에 wBlockAlign 값을 사용할 수 있습니다.

참조 :

http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/Docs/riffmci.pdf 59 페이지

해결 방법 :

당신이 정말로 ADPCM 형식으로 4 비트, 스위치를 필요로합니다.

+0

감사합니다. WAV 파일은'ADPCM'을 유효한 옵션으로 정의하지만, .NET의'AudioFormat.EncodingFormat' 열거는'Pcm','ALaw' 및'ULaw' 만 가지고 있습니다. .NET에서 ADPCM WAV 파일을 생성 할 수 없다는 뜻입니까? – mcu

+0

나는 할 수 있다고 생각하지 않지만이 라이브러리를 살펴 본다 : http://stackoverflow.com/questions/4917346/algorithm-for-converting-pcm-to-ima-adpcm – Aybe

+0

그래서'bitsPerSample'은 8의 배수가 되나요? – mcu