Pascal (Lazarus/Delphi)
Pascal (Lazarus/Delphi)
VoiceBase -- Retrieve JSON Transcript
See more VoiceBase Examples
Retrieves a JSON transcript for a media file.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.JsonObject;
// ---------------------------------------------------------------------------
procedure RunDemo;
var
accessToken: string;
http: THttp;
sbAuth: TStringBuilder;
sbUrl: TStringBuilder;
replaceCount: Integer;
strJson: string;
json: TJsonObject;
numWords: Integer;
i: Integer;
begin
// This example assumes the Chilkat HTTP API to have been previously unlocked.
// See Global Unlock Sample for sample code.
// Insert your Bearer token here:
accessToken := 'VOICEBASE_TOKEN';
http := THttp.Create;
// Add the access (bearer) token to the request, which is a header
// having the following format:
// Authorization: Bearer <userAccessToken>
sbAuth := TStringBuilder.Create;
sbAuth.Append('Bearer ');
sbAuth.Append(accessToken);
http.SetRequestHeader('Authorization',sbAuth.GetAsString());
sbUrl := TStringBuilder.Create;
sbUrl.Append('https://apis.voicebase.com/v2-beta/media/$MEDIA_ID/transcripts/latest');
replaceCount := sbUrl.Replace('$MEDIA_ID','f9b9bb88-d52c-4960-bcef-d516a9f85594');
strJson := http.QuickGetStr(sbUrl.GetAsString());
if (http.LastMethodSuccess <> True) then
begin
WriteLn(http.LastErrorText);
Exit;
end;
// The response should be JSON, even if an error.
json := TJsonObject.Create;
json.Load(strJson);
json.EmitCompact := False;
WriteLn('Response status code = ' + http.LastStatus);
if (http.LastStatus <> 200) then
begin
WriteLn(json.Emit());
WriteLn('Failed');
Exit;
end;
// See the sample JSON response below..
// Iterate over the words..
numWords := json.SizeOfArray('transcripts.latest.words');
i := 0;
while i < numWords do
begin
json.I := i;
WriteLn(json.StringOf('transcripts.latest.words[i].w'));
i := i + 1;
end;
WriteLn('Success.');
// A sample JSON response:
// {
// "_links": {
// "self": {
// "href": "/v2-beta/media/f9b9bb88-d52c-4960-bcef-d516a9f85594/transcripts/latest"
// }
// },
// "transcripts": {
// "latest": {
// "revision": "b25e81dc-ae3e-4f9d-8008-1d56a283c17f",
// "engine": "standard",
// "confidence": 2.196210728898151,
// "words": [
// {
// "p": 0,
// "s": 830,
// "c": 0.14,
// "e": 870,
// "w": "You"
// },
// {
// "p": 1,
// "s": 1860,
// "c": 0.432,
// "e": 1920,
// "w": "know"
// },
// {
// "p": 2,
// "s": 1930,
// "c": 0.288,
// "e": 2250,
// "w": "that's"
// },
// {
// "p": 3,
// "s": 2250,
// "c": 0.923,
// "e": 2300,
// "w": "a"
// },
// ...
http.Free;
sbAuth.Free;
sbUrl.Free;
json.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.