https://raw.githubusercontent.com/termux/termux-packages/master/packages/espeak/char_unsigned_narrowing.patch

diff -u -r ../espeak-1.48.01-source/src/tr_languages.cpp ./src/tr_languages.cpp
--- ../espeak-1.48.01-source/src/tr_languages.cpp	2014-02-02 11:52:30.000000000 +0100
+++ ./src/tr_languages.cpp	2014-02-11 22:02:07.000000000 +0100
@@ -198,7 +198,7 @@
 	0x200d,  1, // zero width joiner
 	0, 0 };
 
-const char string_ordinal[] = {0xc2,0xba,0};  // masculine ordinal character, UTF-8
+const unsigned char string_ordinal[] = {0xc2,0xba,0};  // masculine ordinal character, UTF-8
 
 
 static Translator* NewTranslator(void)
@@ -758,7 +758,7 @@
 				tr->langopts.stress_flags = S_FINAL_SPANISH | S_FINAL_DIM_ONLY | S_FINAL_NO_2;
 				tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_AND_UNITS | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_ROMAN | NUM_ROMAN_ORDINAL;
 				tr->langopts.numbers2 = NUM2_ORDINAL_NO_AND;
-				tr->langopts.roman_suffix = string_ordinal;
+				tr->langopts.roman_suffix = (char*) string_ordinal;
 			}
 			else
 			if(name2 == L_pap)
