Closed dalb8 closed 9 years ago
This issue occurred when I was testing 1.47.12 on Android 5.0. This is because the Android 5.0 settings dialog assumes that the supported languages returned by a TTS engine uses 3-letter language and country codes, even when those can have equivalent 2-letter codes. The eSpeak TTS engine was returning 2-letter codes.
For example, "English (American)" has the 3-letter codes eng-USA
and 2-letter codes en-US
.
This was fixed in commit f4adda18b4163b50a98456e291e7714fd147e1eb.
There are many other changes in 1.48.11 that support the new Android 5.0 API. Without that eSpeak will still work, but the compatibility provided by Android has various issues in that it works differently to what eSpeak expects, so there will be bugs if not using 1.48.11.
I got that on 4.4.4 as well as Android 5.0.
The Android developers likely ported the check from the settings application in Android 5.0 to Android 4.4.4. That commit I linked to fixes the issue you describe. Can you retest with the 1.48.11 changes?
Thanks,
Can't build it: make stops with:
CXX src/src_espeakedit-compiledata.o
src/compiledata.cpp: In function ‘void CompileMbrola(const char*)’:
src/compiledata.cpp:3779:12: error: ambiguous overload for ‘operator=’ (operand types are ‘wxString’ and ‘const char*’)
filepath = mbrola_file;
^
src/compiledata.cpp:3779:12: note: candidates are:
In file included from /usr/include/wx-2.8/wx/memory.h:16:0,
from /usr/include/wx-2.8/wx/object.h:20,
from /usr/include/wx-2.8/wx/wx.h:16,
from src/compiledata.cpp:27:
/usr/include/wx-2.8/wx/string.h:676:13: note: wxString& wxString::operator=(int) <near match>
wxString& operator=(int);
^
/usr/include/wx-2.8/wx/string.h:676:13: note: no known conversion for argument 1 from ‘const char*’ to ‘int’
/usr/include/wx-2.8/wx/string.h:956:13: note: wxString& wxString::operator=(wxChar) <near match>
wxString& operator=(wxChar ch)
^
/usr/include/wx-2.8/wx/string.h:956:13: note: no known conversion for argument 1 from ‘const char*’ to ‘wxChar {aka wchar_t}’
/usr/include/wx-2.8/wx/string.h:970:13: note: wxString& wxString::operator=(const wxWCharBuffer&) <near match>
wxString& operator=(const wxWCharBuffer& psz)
^
/usr/include/wx-2.8/wx/string.h:970:13: note: no known conversion for argument 1 from ‘const char*’ to ‘const wxWCharBuffer&’
/usr/include/wx-2.8/wx/string.h:659:24: note: wxString& wxString::operator=(const wxString&) <near match>
class WXDLLIMPEXP_BASE wxString : public wxStringBase
^
/usr/include/wx-2.8/wx/string.h:659:24: note: no known conversion for argument 1 from ‘const char*’ to ‘const wxString&’
make[1]: *** [src/src_espeakedit-compiledata.o] Error 1
make[1]: Leaving directory `/home/david/my-fdroiddata/build/com.reecedunn.espeak'
make: *** [all] Error 2
I'm on Debian Testing spin:
Configuration for eSpeak complete.
Source code location: .
Compiler: g++
Compiler flags: -g -O2
wxWidgets: 2.8.12 (wx-config)
pulseaudio: yes
portaudio: 18
sada: no
audio configuration: runtime
gradle: gradle
Klatt: yes
MBROLA: yes
Sonic: yes
Async: yes
Extended Dictionaries:
Russian: no
Chinese (Mandarin): no
Chinese (Cantonese): no
I installed 1.47.12 (espeak version 1.48.05 23 May 14) built from source (couldn't build the latest version; it failed at make espeakdata). When selecting espeak in Android Text-to-speech output settings the Listen to Example item is grey and Default Language Status says English not supported. However, I can play back text in the chosen voice, either via the espeak app or FBReader TTS plugin.
Here is log from when I enable espeak: