我將SAPI類型庫導入到Delphi中。我可以輸出語音到PC音箱使用此代碼:delphi中的文本到語音轉wav
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,但聽起來比這更糟糕。
如何將語音輸出到單聲道16位44.1kHz的.wav
文件,該文件的發音與直接發送到PC揚聲器的語音輸出完全相同?我無法弄清楚如何修改第二個代碼示例來設置每個採樣位和比特率。
Follup-up: Glenn的答案解決了比特率問題。感謝那。但是輸出到.wav
文件的語音質量仍然低於直接輸出到揚聲器的質量。我使用屏幕錄製軟件將第一個代碼塊的輸出記錄爲helloworldtospeakers.wav。第二塊代碼與Glenn的系列相加,產生了helloworldtowav.wav。第二個文件顯然有一些失真。有任何想法嗎?