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ですが、それよりもはるかに悪い音になります。
.wav
PCスピーカーに直接出力される音声とまったく同じように聞こえるモノラル16ビット44.1kHzファイルに音声を出力するにはどうすればよいですか?2番目のコードサンプルを変更して、サンプルあたりのビット数とビットレートを設定する方法がわかりませんでした。
Follup-up:グレンの答えはビットレートの問題を解決します。それをありがとう。ただし、ファイルに出力される音声の品質は.wav
、スピーカーに直接出力される品質よりも劣ります。画面記録ソフトウェアを使用して、コードの最初のブロックからの出力をhelloworldtospeakers.wavとして記録しました。グレンの行が追加されたコードの2番目のブロックは、helloworldtowav.wavを生成します。2番目のファイルには明らかに歪みがあります。何か案は?