我不知道有什么方法可以简单实现?
  如果没有什么好方法,请问是否可以通过waveOutWrite这个API函数来操作呢(如果可以用这个API,我感觉应用它比较麻烦,大家可以给一个简单的例子吗?)?

解决方案 »

  1.   

    为什么?
      我很想用这个API啊!求帮助.
      

  2.   

    我这样使用,为什么在Form1.Caption显示为"WAVERR_UNPREPARED"说我数据没有准备好呢,请问大家是什么原因呢?
    var
          FWaveHeader : WAVEHDR;
          i : Integer;
          TestData : Array[0..4095] Of Byte;
    begin
            For i := 0 To 4095 do
            Begin
                    TestData[i] := Round(sin(2*pi*(500)*i/44100) * 65535);        End;
          FWaveHeader.lpData := @TestData;
          FWaveHeader.dwBufferLength := SizeOf(TestData);
          FWaveHeader.dwBytesRecorded := 0;
          FWaveHeader.dwUser := 0;
          FWaveHeader.dwFlags := 0;
          FWaveHeader.dwLoops := 0;
          FWaveHeader.lpNext := nil;
          FWaveHeader.reserved := 0;
          waveOutPrepareHeader(0,   @FWaveHeader,   SizeOf(FWaveHeader));
          Form1.Caption := IntToStr(waveOutWrite(0,   @FWaveHeader,   SizeOf(FWaveHeader)));
      

  3.   

    为何不用 MS 的TTS 呢?这是现成的啊!
      

  4.   

    必须先用waveOutOpen初始化之后句柄
      

  5.   

    其实我比较菜,我的目的是希望把一个比如sin的数据发送给声卡,听到这个频率的声音.能否给一个例子呢?
      

  6.   

     protected
        procedure MCINOTIFY(Var Message:TMessage); message MM_MCINOTIFY;  
     private
        { Private declarations }
        nowloop:boolean;    
        function SendMCIStr(Const Msg:String):PChar;
      
    function TFormTalkVoice.SendMCIStr(const Msg: String): PChar;
    Var Buf:Array[0..4095] of Char;
    begin
       MciSendString(PChar(msg),Buf,sizeof(buf),Handle);
       Result:=Buf;
    end;{Callback}
    procedure TFormTalkVoice.MCINOTIFY(var Message: TMessage);
    var strFile,MCIStr:string;
    begin
      if nowloop and ((SendmciStr('Status mid mode')='stopped')or(SendmciStr('Status mid mode')='playing')) then
        begin   
          sendmcistr('seek mid to start');
          sendmcistr('play mid notify');
          sendmcistr('close mid');
          NowLoop:=False;
        end;
    end;
    播放代码
    //tmpname 是全局的语音文件路径
    MessageStr:='open '+tmpName+'  alias mid';
                       SendMciStr(MessageStr);
                       Sendmcistr('play mid notify');
                       Nowloop:=true;
    停止播放代码
     MessageStr:='open '+tmpName+'  alias mid';
                       SendMciStr(MessageStr);
                       Sendmcistr('play mid notify');
                       Nowloop:=true;
      

  7.   

    停止播放的代码应该是
    sendmcistr('close mid');
      

  8.   

    我覺得TTS不錯的啊,用這個就行了啊
      

  9.   

    占个位置  顺便问一下 怎么把WAV文件的声音加大
      

  10.   

    我是来操 tjianliang(亮剑)这个垃圾全家女人的。干他全家女人后卖到泰国做人妖。
    祝这个小杂种不得好死:一看就是狗日出来的。///////////////////////
    灌水机自动所发。无须回复