1
1
{ ############################################################################ }
2
2
{ # # }
3
- { # MSpeech v1.5.5 - Ðàñïîçíàâàíèå ðå÷è èñïîëüçóÿ Google Speech API # }
3
+ { # MSpeech v1.5.7 - Ðàñïîçíàâàíèå ðå÷è èñïîëüçóÿ Google Speech API # }
4
4
{ # # }
5
5
{ # License: GPLv3 # }
6
6
{ # # }
7
+ { # Automated Speech Recognition (ASR) Module # }
8
+ { # # }
7
9
{ # Author: Mikhail Grigorev (icq: 161867489, email: [email protected] ) # }
8
10
{ # # }
9
11
{ ############################################################################ }
@@ -19,7 +21,7 @@ //JSONError = class(Exception);
19
21
// Ñòðóêòóðà ñ èíôîðìàöèåé î ðàñïîçíàííîé ôðàçå (ïåðåäàåòñÿ â callback ïðîöåäóðó)
20
22
PRecognizeInfo = ^TRecognizeInfo;
21
23
TRecognizeInfo = record
22
- FStatus : Integer; // Ñòàòóñ ðàñïîçíàâàíèÿ: 5- çàïèñü íå ðàñïîçíàíà, 0 - çàïèñü ðàñïîçíàíà
24
+ FStatus : Integer; // Ñòàòóñ ðàñïîçíàâàíèÿ: 5- çàïèñü íå ðàñïîçíàíà, 0 - çàïèñü ðàñïîçíàíà, 1 - Îøèáêà ïàðñèíãà îòâåòà, 2 - îøèáêà ïîëó÷åíèÿ îòâåòà
23
25
FConfidence : Real; // Äîñòîâåðíîñòü ðàñïîçíàâàíèÿ â %
24
26
FTranscript : String; // Ðàñïîçíàííàÿ ôðàçà
25
27
end ;
@@ -183,20 +185,26 @@ procedure TGoogleRecognizer.Execute;
183
185
else
184
186
begin
185
187
FRecognizeInfo := SendRecognizeRequest(FInputFileName);
186
- if FRecognizeInfo.FStatus = 1 then // Îøèáêà ïðè ïàðñèíãå îòâåòà
188
+ if FRecognizeInfo.FStatus = 0 then // Çàïèñü ðàñïîçíàíà
187
189
begin
188
- FRecognizeErr := reErrorGoogleResponse;
189
- FRecognizeErrStr := FResultList.Text;
190
- Synchronize(ErrorEvent);
190
+ FRecognizeStatus := rsRecognizeDone;
191
+ Synchronize(StatusEvent);
191
192
end
192
- else if FRecognizeInfo.FStatus = 5 then // Çàïèñü íå ðàñïîçíàíà
193
+ else if FRecognizeInfo.FStatus = 1 then // Îøèáêà ïðè ïàðñèíãå îòâåòà
193
194
begin
195
+ if EnableLogs then WriteInLog(WorkPath, FormatDateTime(' dd.mm.yy hh:mm:ss' , Now) + ' : Îøèáêà ïðè ïîëó÷åíèè îòâåòà îò ñåðâåðà Google. (' + FRecognizeInfo.FTranscript + ' )' );
194
196
FRecognizeStatus := rsRecordingNotRecognized;
195
197
Synchronize(StatusEvent);
196
198
end
197
- else if FRecognizeInfo.FStatus = 0 then // Çàïèñü ðàñïîçíàíà
199
+ else if FRecognizeInfo.FStatus = 2 then // Îøèáêà ïðè ïîëó÷åíèè îòâåòà îò ñåðâåðà
198
200
begin
199
- FRecognizeStatus := rsRecognizeDone;
201
+ if EnableLogs then WriteInLog(WorkPath, FormatDateTime(' dd.mm.yy hh:mm:ss' , Now) + ' : Îøèáêà ïðè ïîëó÷åíèè îòâåòà îò ñåðâåðà Google, âîçìîæíî çàïèñü äëÿ ðàñïîçíàâàíèÿ áûëà ñëèøêîì äëèííîé, ïîïðîáóéòå å¸ ñîêðàòèòü äî 3-5 ñåêóíä. (' + FRecognizeInfo.FTranscript + ' )' );
202
+ FRecognizeStatus := rsRecordingNotRecognized;
203
+ Synchronize(StatusEvent);
204
+ end
205
+ else if FRecognizeInfo.FStatus = 5 then // Çàïèñü íå ðàñïîçíàíà
206
+ begin
207
+ FRecognizeStatus := rsRecordingNotRecognized;
200
208
Synchronize(StatusEvent);
201
209
end ;
202
210
end
@@ -231,8 +239,8 @@ function TGoogleRecognizer.SendRecognizeRequest(AudioFile: String): TRecognizeIn
231
239
FURL := Format(GoogleRecognizeURLv2MSpeech, [FRecognizeLang, FGoogleAPIKey, ProgramsName+' -' +ProgramsVer]);
232
240
if not HTTPPostFile(FURL, ' userfile' , FInputFileName, FInputStream, FResultList) then
233
241
begin
234
- Result.FStatus := 1 ;
235
- Result.FTranscript := ' Error in procedure HTTPPostFile' ;
242
+ Result.FStatus := 2 ;
243
+ Result.FTranscript := ' Failed to get a response from the server in procedure HTTPPostFile' ;
236
244
Exit;
237
245
end ;
238
246
finally
@@ -275,6 +283,7 @@ function TGoogleRecognizer.HTTPPostFile(const URL, FieldName, FileName: String;
275
283
var
276
284
Bound, Str: String;
277
285
begin
286
+ Result := False;
278
287
Bound := IntToHex(Random(MaxInt), 8 ) + ' _Synapse_boundary' ;
279
288
try
280
289
if FUseProxy then
0 commit comments