alphacep / alphacep/vosk-api

Accent Problem result "FTVoskRecognizer.GetResult" in French compilation Delphi11.2 for Android

Abierto
#1,755 1 comentario 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Jupyter Notebook
Estrellas
15.1k
Forks
1.8k
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

Hello,
On Windows 11/Delphi 11.2/Android12 , I have an accent problem when returning pansichar from "FTVoskRecognizer.GetResult" in French: ("é"="A@", "ç"="ç", etc....).
(with arm64-v8a/libvosk.so V0.3.45)
On raspi5/Debian12 and Windows11, there's no problem.
I can't find a solution (problem ansi,utf8,unicode, but in the library.so, in my program ?).
Do you have any ideas?
Thanks.

Unit vosk_apiandroid.pas:
`....
const CST_vosk_recognizer_result_nom='vosk_recognizer_result';
var vosk_recognizer_result_lib : function(recognizer: PVoskRecognizer): PAnsiChar; cdecl;
function vosk_recognizer_result(recognizer: PVoskRecognizer): PAnsiChar;
...`
`function vosk_recognizer_result(recognizer: PVoskRecognizer): PAnsiChar;
begin
result:=nil;
@vosk_recognizer_result_lib := GetProcAddress(SOHandle_vosk, PWideChar(CST_vosk_recognizer_result_nom)); // using Posix function: dlsym(....), dladdr(...)...
if Assigned(vosk_recognizer_result_lib) then
begin
result:=vosk_recognizer_result_lib(recognizer);
end
else raise exception.create('vosk_apiandroid: fonction "'+CST_vosk_recognizer_result_nom+'" non assignee');
end;
.....`

Unit voskRecognizer.pas:
`function TVoskRecognizer.GetResult(): PansiChar;
begin
Result := vosk_recognizer_result(FRecognizer);
end;`

unit Mainform:
`procedure Tform1.For_WaveJaudio_Loopexec(Vtab:TSmallIntDynArray;vTabCount:integer);//tbytes;vTabCount:integer);
var Vfinal:integer;
VTexte:Ansistring;
VPHRASETMP:string;
begin
if FTVoskRecognizer=nil
then for_message('For_WaveJaudio_Loopexec:FTVoskRecognizer=nil')
else begin
//for_message('For_WaveJaudio_Loopexec:vTabCount='+inttostr(vTabCount));
Vfinal := FTVoskRecognizer.AcceptWaveform(PSmallInt(Vtab), vTabCount);//AudioArray.length);//length(LBuffer));
case Vfinal of
1 :begin
for_message('For_WaveJaudio_Loopexec:éteindre, ça va général fil à la patte'); //<=View screen accents OK!
vtexte:=FTVoskRecognizer.GetResult;
for_message('For_WaveJaudio_Loopexec:vtext avt accents="'+vtexte+'"'); //Errors accents problem
vtexte:=String_sansaccents(vtexte);
for_message('For_WaveJaudio_Loopexec:vtext APRES accents="'+vtexte+'"');
VPHRASETMP:=Json_parserExtract_text(vtexte);
if VPHRASETMP<>'' then
begin
if FPhraseDetect=''
then FPhraseDetect:=VPHRASETMP
else FPhraseDetect:=FPhraseDetect+' '+VPHRASETMP;
if FInputmic_verbose
then for_message_verbose(FInputmic_verbose,'PHRASE ENCOURS="'+FPhraseDetect+'"','');
else begin
if FinputMic_avecTTSEcran
then for_message('PHRASE ENCOURS="'+FPhraseDetect+'"');
end;
For_Phrase_traiterStr(false);//TRUE);
end;
end;
0 :begin
//vtexte:=Json_parserExtract(FTVoskRecognizer.GetPartialResult,'partial_result');
vtexte:=FTVoskRecognizer.GetPartialResult;
for_message_verbose(FInputMIC_verbose,vtexte,'');
end;
-1 :for_message('exception vosk_recognizer_accept_waveform');
end;
end;
end;`

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.