SAPIタイプライブラリをDelphiにインポートしました。次のコードを使用して、PCスピーカーに音声を出力できます。
procedure TForm1.Button1Click(Sender: TObject);
var
  Voice: TSpVoice;
begin
  Voice := TSpVoice.Create(nil);
  Voice.Speak('Hello World!', 0);
end;
.wavこのコードでファイルに音声を出力できます:
procedure TForm1.Button1Click(Sender: TObject);
var
  Voice: TSpVoice;
  Stream: TSpFileStream;
begin
  Voice := TSpVoice.Create(nil);
  Stream := TSpFileStream.Create(nil);
  Stream.Open('c:\temp\test.wav', SSFMCreateForWrite, False);
  Voice.AudioOutputStream := Stream.DefaultInterface;
  Voice.Speak('Hello World!', 0);
  Stream.Close;
end;
問題は、ファイルを再生すると.wav、非常に低いビットレートを使用しているように、ひどい音に聞こえることです。Audacityによると、ファイルはモノラル16ビット22.05kHzですが、それよりもはるかに悪い音になります。
.wavPCスピーカーに直接出力される音声とまったく同じように聞こえるモノラル16ビット44.1kHzファイルに音声を出力するにはどうすればよいですか?2番目のコードサンプルを変更して、サンプルあたりのビット数とビットレートを設定する方法がわかりませんでした。
Follup-up:グレンの答えはビットレートの問題を解決します。それをありがとう。ただし、ファイルに出力される音声の品質は.wav、スピーカーに直接出力される品質よりも劣ります。画面記録ソフトウェアを使用して、コードの最初のブロックからの出力をhelloworldtospeakers.wavとして記録しました。グレンの行が追加されたコードの2番目のブロックは、helloworldtowav.wavを生成します。2番目のファイルには明らかに歪みがあります。何か案は?