gpt4 book ai didi

delphi - Delphi中的文本到语音到wav

转载 作者:行者123 更新时间:2023-12-03 14:39:02 24 4
gpt4 key购买 nike

我将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,但听起来比这糟糕得多。

如何将语音输出到单声道 16 位 44.1kHz .wav 文件,该文件听起来与直接输出到 PC 扬声器的语音完全相同?我不知道如何修改第二个代码示例来设置每个样本的位数和比特率。

后续:格伦的回答解决了比特率问题。感谢那。但输出到 .wav 文件的语音质量仍然不如直接输出到扬声器的质量。我使用屏幕录制软件将第一段代码的输出记录为 helloworldtospeakers.wav 。添加了 Glenn 行的第二个代码块生成 helloworldtowav.wav 。第二个文件显然有一些失真。有什么想法吗?

最佳答案

请参阅Format attribute在您的文件流对象上。这是一个SpAudioFormat type其中有 Type property您用于设置音频格式。这是一个enumerated type ,它有很多选择,因此您需要研究它们才能得到您想要的。

这一行应该可以为您提供它(至少对于我使用的类型库版本)。

Stream.Format.Type_ := SAFT44kHz16BitMono;

关于delphi - Delphi中的文本到语音到wav,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12879417/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com