Pascal (Lazarus/Delphi)
Pascal (Lazarus/Delphi)
IBM Cloud - Text to Speech - Synthesize Audio (GET)
See more IBM Text to Speech Examples
Synthesizes text to audio that is spoken in the specified voice.Chilkat Pascal (Lazarus/Delphi) Downloads
program ChilkatDemo;
// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.
{$IFDEF FPC}
{$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}
uses
{$IFDEF UNIX}
cthreads,
{$ENDIF}
SysUtils,
CkDllLoader,
Chilkat.Http,
Chilkat.StringBuilder,
Chilkat.BinData;
// ---------------------------------------------------------------------------
procedure RunDemo;
var
success: Boolean;
http: THttp;
myBaseUrl: string;
sbUrl: TStringBuilder;
numReplaced: Integer;
textToSynthesize: string;
bdResponseBody: TBinData;
respStatusCode: Integer;
begin
success := False;
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
http := THttp.Create;
http.Login := 'apikey';
http.Password := 'my_apikey';
http.BasicAuth := True;
// Use your base URL shown in the credentials web page (below your apikey)
myBaseUrl := 'https://api.us-south.text-to-speech.watson.cloud.ibm.com/instances/31941e96-7b89-4d56-8993-9cd8f18ec2d8';
sbUrl := TStringBuilder.Create;
sbUrl.Append(myBaseUrl);
sbUrl.Append('/v1/synthesize?accept=ACCEPT_TYPE&voice=CHOSEN_VOICE&text=TEXT_TO_SYNTHESIZE');
// Choose "audio/wav" for the output file type.
numReplaced := sbUrl.Replace('ACCEPT_TYPE',http.UrlEncode('audio/wav'));
// See the choices for voices at https://cloud.ibm.com/apidocs/text-to-speech#synthesize-audio-get
numReplaced := sbUrl.Replace('CHOSEN_VOICE','en-US_MichaelVoice');
textToSynthesize := 'When life gives you lemons, order the lobster tail.';
numReplaced := sbUrl.Replace('TEXT_TO_SYNTHESIZE',http.UrlEncode(textToSynthesize));
// Send the GET to synthesize the voice.
// The response file will be contained in bdResponseBody
bdResponseBody := TBinData.Create;
success := http.QuickGetBd(sbUrl.GetAsString(),bdResponseBody);
if (success = False) then
begin
WriteLn(http.LastErrorText);
Exit;
end;
respStatusCode := http.LastStatus;
WriteLn('response status code = ' + respStatusCode);
if (respStatusCode = 200) then
begin
success := bdResponseBody.WriteFile('qa_output/lobster.wav');
WriteLn('Success!');
end
else
begin
WriteLn(bdResponseBody.GetString('utf-8'));
end;
http.Free;
sbUrl.Free;
bdResponseBody.Free;
end;
// ---------------------------------------------------------------------------
begin
try
RunDemo;
except
on E: Exception do
WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
end;
WriteLn;
{$IFDEF MSWINDOWS}
WriteLn('Press Enter to exit...');
ReadLn;
{$ENDIF}
end.