在我的程序的形式上,有
TIdHTTP
和TButton
组件:
procedure TForm1.Button1Click(Sender: TObject);
var
HTTP: TIdHTTP;
AudioFilePath: string;
AudioFileContent: TMemoryStream;
begin
AudioFilePath := 'speech.wav'; // Path to the file to which the audio file will be saved
HTTP := TIdHTTP.Create(nil);
AudioFileContent := TMemoryStream.Create;
try
// Send a request to the VoiceRSS API and receive an audio file
HTTP.Get('http://api.voicerss.org/?key=1234567890QWERTY&hl=en-us&src=Hello, world!',AudioFileContent);
// Save the audio file to disk
AudioFileContent.SaveToFile(AudioFilePath);
finally
AudioFileContent.Free;
HTTP.Free;
end;
end;
当我刚刚输入此地址(但使用我的 API 密钥)时:
http://api.voicerss.org/?key=1234567890QWERTY&hl=en-us&src=Hello, world!
它会自动开始下载机器人说“你好,世界”的音频文件。但是,当我运行我的程序时,它显示一个错误:
没什么......
您发布的文本包含空格字符,需要编码为
%20
,例如:
HTTP.Get('http://api.voicerss.org/?key=1234567890QWERTY&hl=en-us&src=Hello,%20world!', AudioFileContent);
网络浏览器会为您处理这个问题,但您必须在代码中手动完成。您可以使用 Indy 的
TIdURI
类来帮助您,例如:
HTTP.Get('http://api.voicerss.org/?key=1234567890QWERTY&hl=en-us&src=' + TIdURI.ParamsEncode('Hello, world!'), AudioFileContent);