关于生成的wave文件的属性问题。。。。。。在线等。。。。一天时间 ( 积分: 200 )

  • 主题发起人 主题发起人 sundata
  • 开始时间 开始时间
S

sundata

Unregistered / Unconfirmed
GUEST, unregistred user!
我用sapi生成的wave文件属性里,
平均数据速率:8.00kb/秒,采样速率:8.00kz,音频采样大小:8位 频道:1(单声)
现在我想把平均数据速率该为:16.00kb/秒,音频采样大小:16位
是不是需要改控制面板里的什么属性啊
大虾们快帮忙啊,在线等,问题解决立马送分,不够,另开贴
 
我用sapi生成的wave文件属性里,
平均数据速率:8.00kb/秒,采样速率:8.00kz,音频采样大小:8位 频道:1(单声)
现在我想把平均数据速率该为:16.00kb/秒,音频采样大小:16位
是不是需要改控制面板里的什么属性啊
大虾们快帮忙啊,在线等,问题解决立马送分,不够,另开贴
 
是再sapi里改
 
改音频格式头的二个字节就可以了
 
to newyj:
在sapi里面,那个属性里改啊
to pascal!:
我创建的wave文件是用sapi函数,把一段文字转换为wave文件,参数是直接把wave文件名(就一个字符串)与一个输出流绑定,生成wave文件
怎么修改前两个字节啊
 
哪位大虾vc比较熟,我把源码发给你,看一下有办法改吗

[red]只要顶就有分[/red]
 
funssun@hotmail.com
QQ:313482884
const
AudioFormatPCM1M8:tWAVEFORMATA =(wFormatTag:WAVE_FORMAT_1M08;nChannels:$0001;nSamplesPerSec:$00002B11;nAvgBytesPerSec:$00002B11;nBlockAlign:$0008;wBitsPerSample:$0008;cbSize:$0002;UserData:($40, $01, $00, $00,$00, $00, $00, $00,$00, $00, $00, $00,$00, $00, $00, $00,$00, $00, $00, $00,$00, $00, $74, $B4,$44, $00, $F8, $6C,$CD, $00, $44, $10)) ;
AudioFormatPCM1S8:tWAVEFORMATA =(wFormatTag:WAVE_FORMAT_1M08;nChannels:$0002;nSamplesPerSec:$00002B11;nAvgBytesPerSec:$00005622;nBlockAlign:$0008;wBitsPerSample:$0008;cbSize:$0002;UserData:($40, $01, $00, $00,$00, $00, $00, $00,$00, $00, $00, $00,$00, $00, $00, $00,$00, $00, $00, $00,$00, $00, $74, $B4,$44, $00, $F8, $6C,$CD, $00, $44, $10)) ;
AudioFormatPCM1M16:tWAVEFORMATA=(wFormatTag:WAVE_FORMAT_1M08;nChannels:$0001;nSamplesPerSec:$00002B11;nAvgBytesPerSec:$00005622;nBlockAlign:$0010;wBitsPerSample:$0010;cbSize:$0002;UserData:($40, $01, $00, $00,$00, $00, $00, $00,$00, $00, $00, $00,$00, $00, $00, $00,$00, $00, $00, $00,$00, $00, $74, $B4,$44, $00, $F8, $6C,$CD, $00, $44, $10)) ;
AudioFormatPCM1S16:tWAVEFORMATA=(wFormatTag:WAVE_FORMAT_1M08;nChannels:$0002;nSamplesPerSec:$00002B11;nAvgBytesPerSec:$0000AC44;nBlockAlign:$0010;wBitsPerSample:$0010;cbSize:$0002;UserData:($40, $01, $00, $00,$00, $00, $00, $00,$00, $00, $00, $00,$00, $00, $00, $00,$00, $00, $00, $00,$00, $00, $74, $B4,$44, $00, $F8, $6C,$CD, $00, $44, $10)) ;

function TACMDevice.GetFormat ;
begin
case FWaveFormat.wFormatTag of
GSM_FORMAT_610:Result := GSM610 ;
WAVE_INVALIDFORMAT:Result := 'invalid format' ;
WAVE_FORMAT_1M08:
case FWaveFormat.nChannels of
1 : case FWaveFormat.nAvgBytesPerSec of
8000 : Result := PCM8M8 ;
16000 : Result := PCM8M16 ;
else Result := PCM1M8 ;
end ;
2 : case FWaveFormat.nAvgBytesPerSec of
16000 : Result := PCM8S8 ;
32000 : Result := PCM8S16 ;
end ;
end ;
WAVE_FORMAT_1S08:Result := PCM1S8 ;
WAVE_FORMAT_1M16:Result := PCM1M16 ;
WAVE_FORMAT_1S16:Result := PCM1S16 ;
WAVE_FORMAT_2M08:Result := PCM2M8 ;
WAVE_FORMAT_2S08:Result := PCM2S8 ;
WAVE_FORMAT_2M16:Result := PCM2M16 ;
WAVE_FORMAT_2S16:Result := PCM2S16 ;
WAVE_FORMAT_4M08:Result := PCM4M8 ;
WAVE_FORMAT_4S08:Result := PCM4S8 ;
WAVE_FORMAT_4M16:Result := PCM4M16 ;
WAVE_FORMAT_4S16:Result := PCM4S16 ;
else Result := 'Unknown Wave Format.' ;
end ;
end ;

procedure TACMDevice.SetFormat ;
var
MaxSizeFormat : longint ;
procedure Change(Value:tWAVEFORMATA) ;
begin
FWaveFormat:= Value ;
Update ;
end ;
begin
Value := UpperCase(Value) ;
if Value=''
then begin
acmMetrics(0, ACM_METRIC_MAX_SIZE_FORMAT, MaxSizeFormat);
fc.cbStruct := sizeof(fc);
fc.cbWfx := MaxSizeFormat;
fc.pwfx := @FWaveFormat ;
fc.fdwStyle:=ACMFORMATCHOOSE_STYLEF_INITTOWFXSTRUCT; //use the pwfx(waveformatex structure) as default
//display the ACM dialog box
if acmFormatChoose(fc)=MMSYSERR_NOERROR then Update ;
end
else if Value=PCM8M8
then Change(AudioFormatPCM8M8)
else if Value=PCM8S8
then Change(AudioFormatPCM8S8)
else if Value=PCM8M16
then Change(AudioFormatPCM8M16)
else if Value=PCM8S16
then Change(AudioFormatPCM8S16)
else if Value=GSM610
then Change(AudioFormatGSM8K) ;
end ;
 
to pascal!:
我把源程序给你发邮箱里吧,你看一下,得安装sdk
 
那位知道?
ApdTapiDevice有个方法是playwavefile(filename:string)
播放的wave文件为什么属性(平均数据速率和音频采样大小)不同
就不能播放呢,跟这个有关系吗
16kb/秒的就能播放,8kb/秒的就不能播放
大家救急啊
 
收到了,没原码啊,兄弟!
偶也没modem,只能看wave部分啊
 
to pascal!:
是源码呀modemTTS压缩文件里呢,是用vc做的一个dll
附件你没有收到码
 
to pascal!:
你用过ApdTapiDevice吗
 
没用过ApdTapiDevice,我自己发modem的
 
你的VC文件也不全啊,好多头文件没呢
#include <atlbase.h> // ATL
#include <windowsx.h>
#include <commctrl.h> // Common controls
#include <commdlg.h>
#include <richedit.h> // Required for rich edit control
#include <richole.h>
#include <wchar.h>
#include <tchar.h>
#include <olectl.h> // Required for showing property page
#include <sapi.h> // SAPI includes
#include <sphelper.h>
#include <spuihelp.h>
 
需要安装sdk的,你那里有语音包吗
没有的话得来微软下一个
 
可能是CSpStreamFormat OriginalFmt;
但我这里的文件少,没找到CSpStreamFormat的定义,你在你的文件里找罢
 
hh = SPBindToFile(szwWavFileName, SPFM_CREATE_ALWAYS,
&cpWavStream, &OriginalFmt.FormatId(),
OriginalFmt.WaveFormatExPtr() ); //这里指向一个音频头结构,
 
to pascal!:
问题解决啦,立马送分,我还有一个贴子,也没用啦看来,你进去说句话,分全是兄弟的啦,多谢
另外一个贴子是"关于tp-link modem的问题,在线等"
 
接受答案了.
 
后退
顶部