@@ -235,4 +235,4 @@ jobs: | |||
- name: test | |||
run: | | |||
${{ matrix.config_env }} ${{ matrix.runenv }} cmake --build build --target tests | |||
${{ matrix.config_env }} ${{ matrix.runenv }} ctest --test-dir build -Ttest -j1 --output-on-failure | |||
${{ matrix.config_env }} ${{ matrix.runenv }} ctest --test-dir build -Ttest -j8 --output-on-failure |
@@ -53,7 +53,7 @@ jobs: | |||
- name: make | |||
run: cmake --build build | |||
- name: make check | |||
run: ctest --test-dir build -Ttest -j1 --output-on-failure | |||
run: ctest --test-dir build -Ttest -j8 --output-on-failure | |||
- name: make package_source | |||
run: cmake --build build --target package_source | |||
@@ -65,4 +65,4 @@ jobs: | |||
- name: re-make | |||
run: cd unpack/espeak-ng-* && cmake --build build | |||
- name: re-make check | |||
run: cd unpack/espeak-ng-* && ctest --test-dir build -Ttest -j1 --output-on-failure | |||
run: cd unpack/espeak-ng-* && ctest --test-dir build -Ttest -j8 --output-on-failure |
@@ -9,6 +9,8 @@ jobs: | |||
build: | |||
runs-on: ubuntu-latest | |||
name: Build synth_espeak on ${{ matrix.arch }} | |||
# Do not run this job on any forked repos | |||
if: github.repository == 'espeak-ng/espeak-ng' | |||
strategy: | |||
fail-fast: false | |||
matrix: |
@@ -30,4 +30,4 @@ jobs: | |||
- name: make | |||
run: cmake --build build --config ${{ matrix.config }} | |||
- name: make check | |||
run: ctest --test-dir build -Ttest -C ${{ matrix.config }} -j1 --output-on-failure | |||
run: ctest --test-dir build -Ttest -C ${{ matrix.config }} -j8 --output-on-failure |
@@ -39,6 +39,7 @@ updated languages: | |||
* uz (Uzbek) -- Andiv06 | |||
new languages: | |||
* ti (Tigrinya) -- Biniam Gebremichael | |||
* mto (Totontepec Mixe) -- Bill Dengler, Elizabeth Resendiz | |||
### 1.51 |
@@ -16,7 +16,7 @@ SHARED_VERSION=2:51:1 # = *.so.1.1.51 | |||
MKDIR=mkdir -p | |||
AM_CFLAGS = \ | |||
-Isrc/include -Isrc/include/compat -I$(srcdir)/src/speechPlayer/include -I$(srcdir)/src/ucd-tools/src/include \ | |||
-I$(srcdir)/src/include -Isrc/include/compat -I$(srcdir)/src/speechPlayer/include -I$(srcdir)/src/ucd-tools/src/include \ | |||
-D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112L | |||
AM_CXXFLAGS = | |||
@@ -545,6 +545,7 @@ dictionaries: \ | |||
espeak-ng-data/sw_dict \ | |||
espeak-ng-data/ta_dict \ | |||
espeak-ng-data/te_dict \ | |||
espeak-ng-data/ti_dict \ | |||
espeak-ng-data/th_dict \ | |||
espeak-ng-data/tk_dict \ | |||
espeak-ng-data/tn_dict \ | |||
@@ -890,6 +891,9 @@ espeak-ng-data/ta_dict: dictsource/ta_list dictsource/ta_rules dictsource/ta_ext | |||
te: espeak-ng-data/te_dict | |||
espeak-ng-data/te_dict: dictsource/te_list dictsource/te_rules dictsource/te_extra dictsource/te_emoji | |||
ti: espeak-ng-data/ti_dict | |||
espeak-ng-data/ti_dict: dictsource/ti_list dictsource/ti_rules dictsource/ti_extra dictsource/ti_emoji | |||
th: espeak-ng-data/th | |||
espeak-ng-data/th: dictsource/th dictsource/th dictsource/te_extra | |||
@@ -4,7 +4,7 @@ buildscript { | |||
mavenCentral() | |||
} | |||
dependencies { | |||
classpath 'com.android.tools.build:gradle:7.4.2' | |||
classpath 'com.android.tools.build:gradle:8.2.2' | |||
} | |||
} | |||
plugins { | |||
@@ -26,13 +26,17 @@ dependencies { | |||
} | |||
android { | |||
compileSdk 33 | |||
buildToolsVersion "33.0.2" | |||
ndkVersion "25.2.9519653" | |||
compileSdk 34 | |||
buildToolsVersion "34.0.0" | |||
ndkVersion "26.1.10909125" | |||
namespace "com.reecedunn.espeak" | |||
buildFeatures { | |||
buildConfig = true | |||
} | |||
defaultConfig { | |||
minSdk 19 | |||
minSdk 21 | |||
targetSdk 33 | |||
versionCode 22 | |||
versionName "1.52-dev" | |||
@@ -105,9 +109,34 @@ tasks.register('createDataVersion', Copy) { | |||
into file("./res/raw") | |||
} | |||
tasks.whenTaskAdded { task -> | |||
if (task.name == 'assembleDebug' || task.name == 'assembleRelease') { | |||
task.dependsOn createDataVersion | |||
} | |||
} | |||
createDataVersion.mustRunAfter 'externalNativeBuildDebug' | |||
createDataVersion.mustRunAfter 'externalNativeBuildRelease' | |||
project.afterEvaluate { | |||
tasks.checkData.dependsOn(externalNativeBuildDebug) | |||
tasks.createDataArchive.dependsOn(externalNativeBuildDebug) | |||
javaPreCompileDebug.dependsOn(tasks.createDataVersion) | |||
javaPreCompileRelease.dependsOn(tasks.createDataVersion) | |||
tasks.named('mapDebugSourceSetPaths') { | |||
dependsOn ':createDataVersion', ':createDataArchive' | |||
} | |||
tasks.named('mergeDebugResources') { | |||
dependsOn ':createDataVersion', ':createDataArchive' | |||
} | |||
tasks.named('packageDebugResources') { | |||
dependsOn ':createDataVersion', ':createDataArchive' | |||
} | |||
tasks.named('mapReleaseSourceSetPaths') { | |||
dependsOn ':createDataVersion', ':createDataArchive' | |||
} | |||
tasks.named('mergeReleaseResources') { | |||
dependsOn ':createDataVersion', ':createDataArchive' | |||
} | |||
tasks.named('packageReleaseResources') { | |||
dependsOn ':createDataVersion', ':createDataArchive' | |||
} | |||
} |
@@ -0,0 +1 @@ | |||
android.nonFinalResIds=false |
@@ -1,7 +1,7 @@ | |||
distributionBase=GRADLE_USER_HOME | |||
distributionPath=wrapper/dists | |||
distributionSha256Sum=6147605a23b4eff6c334927a86ff3508cb5d6722cd624c97ded4c2e8640f1f87 | |||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.1-bin.zip | |||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip | |||
networkTimeout=10000 | |||
validateDistributionUrl=true | |||
zipStoreBase=GRADLE_USER_HOME | |||
zipStorePath=wrapper/dists |
@@ -83,10 +83,8 @@ done | |||
# This is normally unused | |||
# shellcheck disable=SC2034 | |||
APP_BASE_NAME=${0##*/} | |||
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit | |||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | |||
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' | |||
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) | |||
APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit | |||
# Use the maximum available, or set MAX_FD != -1 to use that value. | |||
MAX_FD=maximum | |||
@@ -133,10 +131,13 @@ location of your Java installation." | |||
fi | |||
else | |||
JAVACMD=java | |||
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | |||
if ! command -v java >/dev/null 2>&1 | |||
then | |||
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | |||
Please set the JAVA_HOME variable in your environment to match the | |||
location of your Java installation." | |||
fi | |||
fi | |||
# Increase the maximum file descriptors if we can. | |||
@@ -144,7 +145,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then | |||
case $MAX_FD in #( | |||
max*) | |||
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. | |||
# shellcheck disable=SC3045 | |||
# shellcheck disable=SC2039,SC3045 | |||
MAX_FD=$( ulimit -H -n ) || | |||
warn "Could not query maximum file descriptor limit" | |||
esac | |||
@@ -152,7 +153,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then | |||
'' | soft) :;; #( | |||
*) | |||
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. | |||
# shellcheck disable=SC3045 | |||
# shellcheck disable=SC2039,SC3045 | |||
ulimit -n "$MAX_FD" || | |||
warn "Could not set maximum file descriptor limit to $MAX_FD" | |||
esac | |||
@@ -197,11 +198,15 @@ if "$cygwin" || "$msys" ; then | |||
done | |||
fi | |||
# Collect all arguments for the java command; | |||
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of | |||
# shell script including quotes and variable substitutions, so put them in | |||
# double quotes to make sure that they get re-expanded; and | |||
# * put everything else in single quotes, so that it's not re-expanded. | |||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | |||
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' | |||
# Collect all arguments for the java command: | |||
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, | |||
# and any embedded shellness will be escaped. | |||
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be | |||
# treated as '${Hostname}' itself on the command line. | |||
set -- \ | |||
"-Dorg.gradle.appname=$APP_BASE_NAME" \ |
@@ -43,11 +43,11 @@ set JAVA_EXE=java.exe | |||
%JAVA_EXE% -version >NUL 2>&1 | |||
if %ERRORLEVEL% equ 0 goto execute | |||
echo. | |||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | |||
echo. | |||
echo Please set the JAVA_HOME variable in your environment to match the | |||
echo location of your Java installation. | |||
echo. 1>&2 | |||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 | |||
echo. 1>&2 | |||
echo Please set the JAVA_HOME variable in your environment to match the 1>&2 | |||
echo location of your Java installation. 1>&2 | |||
goto fail | |||
@@ -57,11 +57,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe | |||
if exist "%JAVA_EXE%" goto execute | |||
echo. | |||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% | |||
echo. | |||
echo Please set the JAVA_HOME variable in your environment to match the | |||
echo location of your Java installation. | |||
echo. 1>&2 | |||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 | |||
echo. 1>&2 | |||
echo Please set the JAVA_HOME variable in your environment to match the 1>&2 | |||
echo location of your Java installation. 1>&2 | |||
goto fail | |||
@@ -18,7 +18,7 @@ list(APPEND _dict_compile_list | |||
qdb quc qu qya | |||
ro ru | |||
sd shn si sjn sk sl smj sq sr sv sw | |||
ta te th tk tn tr tt | |||
ta te ti th tk tn tr tt | |||
ug uk ur uz | |||
vi | |||
yue | |||
@@ -99,6 +99,7 @@ add_custom_command( | |||
WORKING_DIRECTORY "${PHONEME_SRC_DIR}" | |||
COMMENT "Compile phonemes" | |||
DEPENDS | |||
"${DATA_DIST_DIR}/intonations" | |||
"$<TARGET_FILE:espeak-ng-bin>" | |||
${_phon_deps} | |||
) |
@@ -1,6 +1,7 @@ | |||
_?? @:11 // unrecognized character | |||
//numbers | |||
_dpt t'iE35n_| | |||
_0 liN35 | |||
_1 ji55 | |||
_2 @r51 |
@@ -471,7 +471,7 @@ _0M3 b'Ili@n | |||
_0M4 tr'Ili@n | |||
_0M5 kw0dr'Ili@n | |||
_0M6 kwInt'Ili@n | |||
_0M7 sExt'Ili@n | |||
_0M7 sEkst'Ili@n | |||
_0M8 sEpt'Ili@n | |||
_0M9 0kt'Ili@n | |||
_0M10 n0n'Ili@n | |||
@@ -1065,6 +1065,7 @@ bass $alt6 //beIs | |||
bassist $alt6 //beIsIst | |||
baste $alt6 //beIst | |||
bastion basti@n | |||
bateau ba'toU | |||
batman batman | |||
?3 baton $alt3 | |||
battalion $alt3 | |||
@@ -1186,6 +1187,7 @@ bugaboo bVg@bu: | |||
?3 bulimia bUl'Imi@ | |||
bunion bVnI2@n | |||
bureaucracy bjU@'0kr@si | |||
burien 'bjU@ri@n $only | |||
bursar b3:s3 | |||
?5 bursar bVRs3 | |||
bus bVs | |||
@@ -2638,6 +2640,7 @@ mouthwater m'aUTw,O:t3 // ing | |||
movies mu:vIz | |||
mozilla m@zIl@ | |||
mujaheddin mUdZ@hId'i:n | |||
mukilteo ,mVk@l'ti:oU | |||
?3 multi mVltaI | |||
multitude $1 | |||
multiplexer $1 | |||
@@ -3545,6 +3548,7 @@ tabasco $alt3 | |||
tablet tabl@t | |||
taboo $2 | |||
tabu tabu: | |||
tacoma t@'koUm@ | |||
(tae kwon do) t'aIkw0nd'oU | |||
taffeta tafI2t@ | |||
(tai chi) taI'tSi: | |||
@@ -4480,6 +4484,7 @@ Winnipeg wInI#pEg | |||
Wisconsin wI2sk'0nsI2n | |||
Wyoming waI'oUmIN | |||
Xhosa kO:s@ | |||
yakima 'jakImA: $only | |||
Yemen $alt2 | |||
Ypres i:pr@ | |||
Yogyakarta j0gj@k'A@t@ |
@@ -10487,6 +10487,7 @@ | |||
анонс $2 | |||
анонсировавший $3 | |||
анонсировалось $3 | |||
анонсированная $3 | |||
анонсированного $3 | |||
анонсированной $3 | |||
анонсированные $3 | |||
@@ -14700,7 +14701,6 @@ | |||
арчах $2 | |||
арче $2 | |||
арчей $2 | |||
арчи $2 | |||
арчибальда $3 | |||
арчибальде $3 | |||
арчинец $2 | |||
@@ -56754,6 +56754,7 @@ | |||
видеоконтентом $5 | |||
видеоконтенту $5 | |||
видеоконтрольного $5 | |||
видеоконференции $6 | |||
видеоконференций $6 | |||
видеокремом $4 | |||
видеокурс $4 | |||
@@ -62201,6 +62202,7 @@ | |||
внедрявшимися $2 | |||
внедрявшуюся $2 | |||
внедряемой $2 | |||
внедряемых $2 | |||
внедряет $2 | |||
внедряетесь $2 | |||
внедрял $2 | |||
@@ -69855,6 +69857,7 @@ | |||
воспитываемое $2 | |||
воспитываемся $2 | |||
воспитываемы $2 | |||
воспитываемый $2 | |||
воспитывает $2 | |||
воспитываете $2 | |||
воспитываетесь $2 | |||
@@ -141030,6 +141033,7 @@ | |||
делячествах $2 | |||
делячеством $2 | |||
делящей $1 | |||
делящейся $1 | |||
делящийся $1 | |||
делящими $1 | |||
делящимся $1 | |||
@@ -143341,6 +143345,7 @@ | |||
детализированной $4 | |||
детализированному $4 | |||
детализированный $4 | |||
детализированным $4 | |||
деталировка $4 | |||
деталировкам $4 | |||
деталировками $4 | |||
@@ -174253,6 +174258,7 @@ | |||
заверша $3 | |||
завершай $3 | |||
завершайся $3 | |||
завершайте $3 | |||
завершал $3 | |||
завершала $3 | |||
завершали $3 | |||
@@ -208108,6 +208114,7 @@ | |||
зашкаливала $2 | |||
зашкаливало $2 | |||
зашкаливающей $2 | |||
зашкаливающие $2 | |||
зашкуренная $2 | |||
зашкуренного $2 | |||
зашкуренное $2 | |||
@@ -213991,6 +213998,7 @@ | |||
зомбаря $3 | |||
зомберов $1 | |||
зомбирование $2 | |||
зомбированию $2 | |||
зомбирования $2 | |||
зомбированности $2 | |||
зомбированы $2 | |||
@@ -227013,6 +227021,7 @@ | |||
индексированный $3 | |||
индексированных $3 | |||
индексируемый $3 | |||
индексируемых $3 | |||
индексна $1 | |||
индексная $1 | |||
индекснее $1 | |||
@@ -252207,6 +252216,7 @@ | |||
кодеровка $3 | |||
кодеровке $3 | |||
кодерская $1 | |||
кодеру $1 | |||
кодеры $1 | |||
кодигорически $4 | |||
кодировал $2 | |||
@@ -252238,6 +252248,7 @@ | |||
кодировки $3 | |||
кодировку $3 | |||
кодируемое $2 | |||
кодируемый $2 | |||
кодирует $2 | |||
кодируется $2 | |||
кодируют $2 | |||
@@ -282383,6 +282394,7 @@ | |||
лицензированный $3 | |||
лицензированных $3 | |||
лицензируемой $3 | |||
лицензируемый $3 | |||
лицензиям $2 | |||
лицензиями $2 | |||
лицензиях $2 | |||
@@ -302324,6 +302336,7 @@ | |||
микроманометру $4 | |||
микроманометры $4 | |||
микромашинах $4 | |||
микроменеджментом $3 | |||
микромер $3 | |||
микромера $3 | |||
микромере $3 | |||
@@ -305338,6 +305351,7 @@ | |||
многоколосной $4 | |||
многокомпонентная $5 | |||
многокомпонентного $5 | |||
многокомпонентной $5 | |||
многокомпонентный $5 | |||
многоконечную $4 | |||
многократна $3 | |||
@@ -352796,6 +352810,7 @@ | |||
несанкционированных $5 | |||
несбалансированности $4 | |||
несбалансированный $4 | |||
несбалансированным $4 | |||
несбалансированными $4 | |||
несбывшаяся $2 | |||
несбывшегося $2 | |||
@@ -353524,6 +353539,8 @@ | |||
несостоятельностях $4 | |||
несостоятельны $4 | |||
несострадание $4 | |||
несостыковка $4 | |||
несостыковок $4 | |||
несотворенному $4 | |||
несотворенный $4 | |||
несохраненная $4 | |||
@@ -355974,6 +355991,7 @@ | |||
низкоконтрастными $4 | |||
низкоконтрастных $4 | |||
низколатентной $4 | |||
низколатентный $4 | |||
низколегированная $4 | |||
низколегированнее $4 | |||
низколегированней $4 | |||
@@ -363564,6 +363582,7 @@ | |||
обеспечивавшуюся $3 | |||
обеспечиваем $3 | |||
обеспечиваемая $3 | |||
обеспечиваемого $3 | |||
обеспечиваемое $3 | |||
обеспечиваемому $3 | |||
обеспечиваемся $3 | |||
@@ -371063,6 +371082,7 @@ | |||
обозником $2 | |||
обозновещевого $6 | |||
обозрев $3 | |||
обозреваете $4 | |||
обозревал $4 | |||
обозревание $4 | |||
обозревании $4 | |||
@@ -392768,6 +392788,7 @@ | |||
опустошителю $4 | |||
опустошителя $4 | |||
опустошить $4 | |||
опустошиться $4 | |||
опустошишь $4 | |||
опустошишься $4 | |||
опустошу $4 | |||
@@ -396327,6 +396348,7 @@ | |||
оскорблюсь $3 | |||
оскорбляй $3 | |||
оскорбляйся $3 | |||
оскорбляйте $3 | |||
оскорблял $3 | |||
оскорбляла $3 | |||
оскорбляли $3 | |||
@@ -442898,6 +442920,7 @@ | |||
перелистываемой $3 | |||
перелистываемых $3 | |||
перелистывает $3 | |||
перелистываете $3 | |||
перелита $4 | |||
перелито $1 | |||
перелиты $1 | |||
@@ -448044,6 +448067,7 @@ | |||
перепроверялось $5 | |||
перепроверят $4 | |||
перепроверять $5 | |||
перепроверяют $5 | |||
перепрограммирование $5 | |||
перепрограммирования $5 | |||
перепрограммированный $5 | |||
@@ -460154,7 +460178,6 @@ | |||
письмосекретка $4 | |||
письмотелеграмма $5 | |||
письму $2 | |||
пита $2 | |||
питавшаяся $2 | |||
питавшегося $2 | |||
питавшееся $2 | |||
@@ -534756,6 +534779,7 @@ | |||
пошаговая $2 | |||
пошагового $2 | |||
пошаговое $2 | |||
пошаговой $2 | |||
пошаговую $2 | |||
пошаговые $2 | |||
пошаговых $2 | |||
@@ -612829,6 +612853,7 @@ | |||
распаляющуюся $3 | |||
распаляя $3 | |||
распар $2 | |||
распараллеливаемых $4 | |||
распараллеливания $4 | |||
распараллеливаются $4 | |||
распаренная $2 | |||
@@ -647295,6 +647320,7 @@ | |||
свинобойцы $3 | |||
свинобою $3 | |||
свинобоя $3 | |||
свинобраз $3 | |||
свиновода $3 | |||
свиноводе $3 | |||
свиноводств $3 | |||
@@ -658899,6 +658925,7 @@ | |||
синхронизация $4 | |||
синхронизированные $4 | |||
синхронизированный $4 | |||
синхронизированных $4 | |||
синхронизирующее $4 | |||
синхронизируя $4 | |||
синхронизм $3 | |||
@@ -699957,7 +699984,6 @@ | |||
страхкасс $2 | |||
страхоборца $3 | |||
страхоборцу $3 | |||
страхова $3 | |||
страховался $3 | |||
страховаться $3 | |||
страховая $3 | |||
@@ -715683,7 +715709,9 @@ | |||
теплопродукция $4 | |||
теплопрозрачность $4 | |||
теплопрозрачный $4 | |||
теплорассеиватели $4 | |||
теплорассеивателя $4 | |||
теплорассеивателями $4 | |||
теплорассеивающая $4 | |||
теплорассеивающей $4 | |||
теплорассеивающими $4 | |||
@@ -727185,6 +727213,7 @@ | |||
труднопреодолимых $6 | |||
труднопроизносимое $6 | |||
труднопроизносимые $6 | |||
труднопроизносимым $6 | |||
труднопроизносимыми $6 | |||
труднопроизносимых $6 | |||
труднопроходим $5 | |||
@@ -729008,6 +729037,7 @@ | |||
тунис $2 | |||
тунисец $2 | |||
тунисок $2 | |||
туннелирование $3 | |||
туннелирующими $3 | |||
туннель $2 | |||
тунца $2 | |||
@@ -763083,6 +763113,8 @@ | |||
фрагментарны $3 | |||
фрагментированного $3 | |||
фрагментированном $3 | |||
фрагментированную $3 | |||
фрагментированными $3 | |||
фрагментированных $3 | |||
фрагонара $3 | |||
фраерами $3 | |||
@@ -773191,6 +773223,10 @@ | |||
цветоеде $3 | |||
цветоеду $3 | |||
цветоеды $3 | |||
цветокоррекции $4 | |||
цветокоррекций $4 | |||
цветокоррекцию $4 | |||
цветокоррекция $4 | |||
цветолож $3 | |||
цветоложа $3 | |||
цветоложе $3 |
@@ -2745,6 +2745,7 @@ bizonyíték $unstressend | |||
gyötörte $unstressend | |||
ismerve $unstressend | |||
fognia $unstressend | |||
(mint azt látni) $unstressend | |||
(azt látni) $unstressend | |||
fontosak $unstressend | |||
futni $unstressend | |||
@@ -4361,7 +4362,7 @@ havonta $unstressend | |||
(elmarad attól) ElmAR2Ad_||At:o:l $unstressend | |||
(szív el) si:v_||El $unstressend | |||
cigit $unstressend | |||
(a dohányzásról) A'||doha:n^za:Sro:l $unstressend | |||
(a dohányzásról) A'||doha:n^za:SR2o:l $unstressend | |||
átlag $unstressend | |||
(forintba kerülnek) foR2intbA_||kER2ylnEk $unstressend | |||
hozzátette $unstressend | |||
@@ -5346,6 +5347,8 @@ _. pont | |||
§ s'AkAs | |||
~ tildE | |||
° fokjEl | |||
˄ konjunktsio: | |||
˅ disjunktsio: | |||
Ft foR2int $unstressend | |||
(Ft-tal) foR2int:Al $unstressend | |||
(ft-ot) foR2intot $unstressend | |||
@@ -5435,8 +5438,8 @@ _braille bR2Ail:E | |||
nato na:to: | |||
(end-of line) u:jS,oR2 | |||
$textmode | |||
bacch bahh | |||
MSZP emeszpé | |||
MSZMP emeszempé | |||
SZDSZ eszdéesz |
@@ -1,6 +1,6 @@ | |||
// This file is UTF-8 encoded | |||
// Updated 2022 september 23 by Christian Leo Mameli, <llajta2012ATgmail.com> | |||
// Updated 2023 december 11 by Christian Leo Mameli, <llajta2012ATgmail.com> | |||
// $alt change [e] or [o] in the stressed syllable to [E] or [O] | |||
// $alt2 change [E] or [O] in the stressed syllable to [e] or [o] | |||
@@ -832,6 +832,7 @@ bye _^_EN | |||
bypass b'aI||p'as | |||
byte _^_EN | |||
cabaret $3 $only | |||
cameraman k'ame*am,En | |||
camper $1 | |||
cancan $2 $only | |||
carter $1 $only | |||
@@ -886,7 +887,7 @@ corporation ko@-*poR'ESon | |||
couscous k,us||k'us | |||
cover $1 | |||
cowboy k'aw||b'oI | |||
cracker $1 | |||
cracker k@-*'E:ke@-* | |||
croissant k@-*uass'an | |||
cult k'a/:lt $onlys | |||
cyclette sikl'Et: | |||
@@ -902,6 +903,7 @@ design d,ez'aIn $only | |||
designer d,ez'aIne@-* | |||
desktop d'esk||t,Op | |||
dessert d,Ess'e@-* $only | |||
detective det'Ektiv | |||
detector $2 | |||
device dIv'aIs | |||
devolution devol'uSon | |||
@@ -981,6 +983,7 @@ greenpeace g@-*,iN||p'i:s | |||
guinness g'iness | |||
guardrail g'a@-*d||@-*,Eil | |||
gustibus $1 | |||
habemus $2 $alt | |||
hacker 'ake@-* | |||
hackeraggio akeR'adZ:o | |||
hackerare ake*'a:Re | |||
@@ -1021,6 +1024,7 @@ iphone 'aI_fon | |||
italy $1 | |||
iter $1 | |||
jaguar $1 | |||
jingle dZ'ingol | |||
jaws dZ'O:z | |||
jazz _^_EN | |||
jeans dZi:ns | |||
@@ -1110,6 +1114,7 @@ page p'EidZ $onlys | |||
palace _^_en $only | |||
papillon papiJ^'on $onlys | |||
pancake pan_k'eIk | |||
parquet pa@-*k'E | |||
partner $1 | |||
passepartout pas_pa@-*t'u | |||
paternoster $3 | |||
@@ -1176,6 +1181,7 @@ scoop sk'u:p $onlys | |||
scooter sk'utE@-* | |||
scorpion $1 $onlys | |||
scotch sk'OtS | |||
Scout sk'awt $onlys | |||
screen sk@-*'i:n | |||
screenreader sk@-*'i:n||@-*'i:de@-* | |||
scuter $1 | |||
@@ -1282,6 +1288,7 @@ voodoo vud'u | |||
wafer v'afe@-* | |||
walkman w'Olk||m,En | |||
wall _^_EN | |||
Walt _^_EN | |||
walzer v'altsE@-* | |||
water v'atE@-* $only | |||
wave _^_EN | |||
@@ -1296,6 +1303,8 @@ window w2'IndOw2 | |||
wireless _^_EN | |||
wow w'a:u | |||
writer v@-*'aIte@-* | |||
wurstel vj'u:stel | |||
würstel vj'u:stel | |||
yacht j'Ot[ | |||
yahoo _^_EN | |||
yahtzee j'Ets:i | |||
@@ -1328,6 +1337,7 @@ rock'n'roll @-*,Oken@-*'O:l | |||
(ladies and gentlemen) l'eIdIz||and||dZ'Ent@lm@n | |||
(nôtre dame) noUt@-*'da:m | |||
(question time) kw'estiont'aIm | |||
(fair play) f,E@-*||pl'Ei | |||
// Main nouns Dictionary (see also it_listx) | |||
@@ -1891,6 +1901,7 @@ cecina $1 | |||
ceca $alt | |||
chambery Samber'i | |||
champs S'amps | |||
chelsea tS'Elsi | |||
chernobyl tS'e@-*nobil | |||
chianciano $2 | |||
chicago tSikago | |||
@@ -1978,6 +1989,7 @@ hawaiʻi aw'a:i: | |||
helsinki $1 | |||
hiroshima $3 | |||
hollywood _^_EN | |||
honolulu $3 | |||
houston hj'uston | |||
huligano $3 | |||
iglesias $2 $alt | |||
@@ -2222,6 +2234,8 @@ tatari $1 | |||
tavazzano $3 | |||
teheran t,I_iR'a:n | |||
tennessee t'en:,essi | |||
tiananmen tienanm'En | |||
Tienanmen tienanm'En | |||
teramo $1 | |||
ternano $2 | |||
tertenia $3 | |||
@@ -2263,6 +2277,7 @@ vitorchiano $4 | |||
washington _^_EN | |||
wimbledon $1 | |||
woodstock _^_EN | |||
yellowstone _^_EN | |||
zaire dza'i:Re | |||
zanzibar $1 | |||
zigano ts-ig'a/no | |||
@@ -2345,9 +2360,11 @@ beauxbatons bobat'on | |||
bearzot bea*_dz'Ot $only | |||
beatle b'i:tol | |||
beccaria $3 | |||
beckenbauer $3 | |||
beethoven be:t'o:ven | |||
benetton $3 | |||
benjamin $1 | |||
bentegodi $3 $alt2 | |||
bergomi $1 | |||
behringer b'e:RiNg,E@-* | |||
bertold $alt | |||
@@ -2355,6 +2372,7 @@ bettega $1 $alt | |||
biagini $2 | |||
björk b,i'O@-*k | |||
boeing b'O:ing | |||
bougot _^_FR | |||
brandon b@-*'Endon | |||
brian b@-*'aian | |||
brigitte b@-*iZ'it[ | |||
@@ -2375,6 +2393,7 @@ cassano $2 | |||
casula $2 | |||
catherine _^_EN | |||
catia k'a:tia | |||
causio k'awzio | |||
celentano $3 | |||
cesare $1 | |||
chaplin tS'apliN | |||
@@ -2384,6 +2403,7 @@ charlotte Sa@-*l'Ot | |||
charriere SaR*j'e* | |||
chesterfield tS'Este@-*fild | |||
chevalier _^_FR | |||
cheyenne tSej'En | |||
chopin Sop'EN | |||
christensen $1 | |||
christie k@-*'istI | |||
@@ -2399,13 +2419,17 @@ corine k'ORIn $capital | |||
corrias $2 | |||
cristofor $2 | |||
cupido $2 | |||
cyndi s'indi | |||
cyrille siR'il | |||
danilo $2 | |||
danny d'En:I | |||
davidson $1 | |||
debor $1 $alt | |||
deborah $1 $alt2 | |||
deidda de'i:d:a | |||
delogu $2 | |||
delrio del||@-*'io/ | |||
deschamps deS'amp | |||
dessolis $2 $onlys | |||
diaz d'iats $only | |||
Dickinson $1 | |||
@@ -2429,6 +2453,7 @@ enric $2 | |||
ericsson $1 $alt | |||
erika $1 | |||
esposit $2 | |||
eastwood _^_en | |||
ettore $1 $alt | |||
euclide $3 | |||
eugenia $alt | |||
@@ -2444,6 +2469,7 @@ fenice $2 | |||
ferlaino fe@-*la'i:no | |||
ferrer $2 $alt2 | |||
fischer f'iSE@-* $onlys | |||
fletcher fl'EtS:e@-* | |||
florencio fl,OR'ensIo | |||
françois f@-*,a/NsU'a | |||
francisco f@-*ans'isko | |||
@@ -2451,6 +2477,7 @@ frankenstein f@-*'ankenst,ain | |||
frederic $1 | |||
freud f@-*'Oid $only | |||
fujitsu fudZ'itsu | |||
gaber $1 $onlys | |||
gandolfi $alt | |||
garcía _^_ES | |||
gargiul $2 | |||
@@ -2470,12 +2497,15 @@ gianpaol dZan_p'aol | |||
gibson g'Ibson | |||
giordano $2 | |||
giorgia $1 | |||
giorgini $2 | |||
giovagnol $3 | |||
girolamo $2 | |||
gorbaciov $1 | |||
grace g@-*'Eis $only | |||
gray g@-*'eI | |||
gregoria $2 $alt2 | |||
grisostomo $2 | |||
gruber $1 $only | |||
halen 'alen | |||
halloween 'allow2in | |||
harrison h'ER*izon | |||
@@ -2509,6 +2539,7 @@ jackie dZ'E:kI | |||
Jaqueline Z,ak_l'i:n | |||
james _^_EN | |||
jane _^_EN | |||
jannacci jan:'atS:i | |||
jarno j'a:@-*no | |||
jefferson $1 | |||
jennifer $1 | |||
@@ -2528,6 +2559,7 @@ katia k'a:tia | |||
kennedy $1 $alt | |||
kinder $1 $onlys | |||
landolf $alt | |||
lauper _^_EN | |||
lawrence l'oRens | |||
laurenzi $alt | |||
lee _^_en $capital | |||
@@ -2550,6 +2582,7 @@ ludwig l'u:dvIc | |||
luigi lu'i:dZI | |||
luigia lU'i:dZa | |||
luther $1 $only | |||
maneskin $1 $onlys | |||
manolo ma/n'Olo | |||
manuel $1 $only | |||
Marcel ma@-*s'El | |||
@@ -2580,6 +2613,7 @@ michielin mik,el'in | |||
michelangel $3 | |||
michelle m,iS'el $only | |||
miguel mig'E:l | |||
mihajlovic mi_'ajlovitS | |||
mike _^_EN | |||
mikolaj mik,Ol'a:j | |||
misseri $2 | |||
@@ -2650,9 +2684,14 @@ roger $1 $alt | |||
ron @-*'On $only | |||
rosalia $3 | |||
Rosemarie @-*'ozm,a*i | |||
rossetti @-*os:'ett:i | |||
rottweiler @-*otv'ajle@-* | |||
roosevelt @-*'u:z|v,Elt | |||
ryanair @-*'aIaneR | |||
sànchez s'antSets | |||
sanchez s'antSets | |||
sánchez s'antSets | |||
santalucia santa||lutS'ia | |||
santamaria s,anta||maR'ia | |||
saša s'aSa/ | |||
saddam $2 | |||
@@ -2679,6 +2718,8 @@ shanice S'an,is | |||
sharazad $3 | |||
shaun S'O:n $only | |||
simon s'aImon $onlys | |||
sioux si'u:ks | |||
schiffer S'if:e@-* $only | |||
socrate $1 | |||
sofia sof'ia | |||
sonia $1 $alt2 | |||
@@ -2695,6 +2736,7 @@ tamara $2 | |||
taylor t'EIlo@-* | |||
terence t'ERens $onlys | |||
thatcher t'a/tSe@-* | |||
theodore t'Eodo@-* | |||
tiffany $1 | |||
timoteo $2 | |||
tobia $2 | |||
@@ -2713,6 +2755,7 @@ vazquez vask'Ets | |||
vedder $1 $onlys | |||
vermouth v'E@-*mut | |||
victor $1 $only | |||
vierchowod vi'E@-*kov,ud | |||
villeneuve v,iln'e:v | |||
vincent v'inseNt[ $only | |||
vladimir $3 | |||
@@ -3031,6 +3074,7 @@ augurino $1 | |||
auguro $1 | |||
aumentino aUm'entino | |||
auspicano $1 | |||
avvalorano $3 | |||
avanzano $2 | |||
avanzino $2 | |||
avvalere $3 | |||
@@ -3061,6 +3105,7 @@ badano $1 | |||
bagnano $1 | |||
ballano $1 | |||
ballino $1 | |||
balzano $1 | |||
balzino $1 | |||
barino $1 | |||
barricano $1 | |||
@@ -3366,6 +3411,7 @@ dimentichino $2 | |||
dimezzano dim'edz:ano | |||
dimezzino $2 | |||
dimorano $2 | |||
dimorino $2 | |||
dimostrano $2 | |||
dimostrino $2 | |||
diramano $2 | |||
@@ -3393,6 +3439,7 @@ disperano $2 | |||
disperino $2 | |||
dispiace dispI'a:tSe | |||
dispregia $2 $alt | |||
disputano $1 | |||
disputino $1 | |||
dissemin $2 | |||
dissetano $2 | |||
@@ -3409,6 +3456,7 @@ distrino $1 | |||
disturbano $2 | |||
disturbino $2 | |||
divaghino $2 | |||
divampano $2 | |||
divaricano $2 | |||
diventino $2 | |||
divertano $2 | |||
@@ -3422,6 +3470,7 @@ divulghino $2 | |||
dolere $2 | |||
domandano $2 | |||
domandino $2 | |||
domin $1 | |||
dondolano $1 | |||
donino $1 | |||
dotano $1 | |||
@@ -3458,6 +3507,7 @@ emulano $1 | |||
emulino $2 | |||
entrano $1 | |||
entrino $1 | |||
entusiasmano $3 | |||
enuncino $2 | |||
equivalere $4 | |||
eredit $2 | |||
@@ -4033,6 +4083,7 @@ ottenere ot:en'eRe | |||
ovviano $1 | |||
ovvino $1 | |||
paghino $1 | |||
palesano $2 | |||
palpano $1 | |||
palpita $1 | |||
palpitano $1 | |||
@@ -4071,6 +4122,7 @@ permanere $3 | |||
permettev $alt2 | |||
perseguita $2 | |||
perseguitano $2 | |||
persever $2 | |||
pervaderti $2 | |||
pesano $1 | |||
pettegol $2 | |||
@@ -4117,6 +4169,7 @@ predice $2 | |||
predichino $1 | |||
predici $2 | |||
predomin $2 | |||
prefigurano $3 | |||
preghino $1 | |||
pregia $1 | |||
pregiudicano $2 | |||
@@ -4140,6 +4193,7 @@ prevedano $2 | |||
prevedere $3 | |||
previd $2 | |||
previdero $2 | |||
primeggiano $2 | |||
privatizzino $3 | |||
privilegia $3 | |||
privilegiano $3 | |||
@@ -4226,6 +4280,7 @@ recitino $1 | |||
reclamano $2 | |||
recludano $2 | |||
reclutano $2 | |||
recrimin $2 | |||
recuper $2 | |||
recuperino $2 | |||
regalano $2 | |||
@@ -4419,6 +4474,7 @@ sabot $1 | |||
sabotano $1 | |||
salpano $1 | |||
saltano $1 | |||
saltellano $2 $alt | |||
salutano $2 | |||
salvaguardano $3 | |||
salvano $1 | |||
@@ -4646,6 +4702,7 @@ sottovalutino $3 | |||
spaccano $1 | |||
spacchino $1 | |||
spaccino $1 | |||
spalancano $2 | |||
spalmano $1 | |||
sparano $1 | |||
sparecchino $2 | |||
@@ -4993,6 +5050,7 @@ abituarcisi $4 | |||
accadutomi $3 | |||
accertatene $2 | |||
accertati $2 $atstart | |||
adempiutesi $3 | |||
affittasi $2 | |||
affrettati $2 $atstart | |||
aggiornal $2 $alt2 | |||
@@ -5043,6 +5101,7 @@ coprimi $1 | |||
copriti $1 | |||
costituitosi $4 | |||
creal k@-*'Ea/l | |||
daccel $1 | |||
daccene $1 | |||
dacel $1 | |||
dagliel $1 | |||
@@ -5077,6 +5136,7 @@ espellerl $2 | |||
esprimiti $2 | |||
evolverci $2 | |||
evolversi $2 | |||
faccel $1 | |||
facendomici fatS'endom,itSi | |||
fammel $1 | |||
fattel f'at:el | |||
@@ -5105,6 +5165,7 @@ importal $2 | |||
impostaci $2 | |||
impostal $2 | |||
impostomi $2 | |||
impostigli $2 | |||
indirizzati indiRits2:'ati | |||
indirizziamoci indiRi_tsj'amotSI // $5 | |||
indirizziamol indiRi_tsj'amol // $5 | |||
@@ -5143,12 +5204,14 @@ portalo $1 | |||
portamici $1 | |||
portatel $2 | |||
posizionati $4 $atstart | |||
resasi $1 | |||
presentaci $2 | |||
privaci $1 | |||
procurati $2 $atstart | |||
promessomi $2 | |||
proponiti $2 | |||
proteggiti $2 $alt2 | |||
protrattosi $2 | |||
pulisciti $2 | |||
raddrizzarl @-*ad:@-*its2:'a@-*l | |||
rafforzal $2 | |||
@@ -5170,6 +5233,7 @@ rieccoti $2 | |||
riformatisi $3 | |||
riformatosi $3 | |||
rincorrerl $2 | |||
ripercuotersi $4 | |||
riportal $2 | |||
ripresosi $2 | |||
risparmiaci $2 | |||
@@ -5202,6 +5266,7 @@ spogliati $1 $alt $atstart | |||
sposatisi $2 | |||
stabilitosi $3 | |||
stampal $1 | |||
succedutesi $3 | |||
suggeritomi $3 | |||
svegliati $1 $atstart | |||
svelaci $1 | |||
@@ -5213,11 +5278,13 @@ svoltisi $1 $alt | |||
svuotal $2 $alt2 | |||
tastal $1 | |||
tenutasi $2 | |||
tenutesi $2 | |||
tenutisi $2 | |||
tenutosi $2 | |||
tornaci $1 | |||
tornatene $1 | |||
trasferirvisi $3 | |||
trasferitosi $3 | |||
trattieniti $2 | |||
trattasi $1 | |||
tuffati $1 $atstart |
@@ -38,8 +38,8 @@ acetil atSe'til | |||
achei $2 | |||
achemene $2 | |||
acheni $alt | |||
achillea $2 | |||
achillee $2 | |||
achillea $3 | |||
achillee $3 | |||
acin $1 | |||
acquafredd $alt2 | |||
acquaragia a/k:ua_R'adZa/ | |||
@@ -95,7 +95,7 @@ agora $3 | |||
agord $1 | |||
agost $alt2 | |||
agrifogli $alt | |||
agronomi $2 | |||
agronom $2 | |||
agrosistem $alt | |||
aikido $2 | |||
ailoche $alt | |||
@@ -215,6 +215,7 @@ anglosassoni $3 | |||
angol $1 | |||
angor $1 | |||
angoscia ang'OSa | |||
angustia $2 | |||
angustie $2 | |||
anidr $1 | |||
anidrid anid@-*'Id | |||
@@ -361,6 +362,7 @@ asintot $2 | |||
asol $1 | |||
asparag $2 | |||
asparagine $4 | |||
aspecifici $3 | |||
aspett $alt | |||
assaggini $3 | |||
assedi $alt | |||
@@ -710,9 +712,9 @@ canter $1 | |||
canterellio $4 | |||
cantoria $3 | |||
canzoncine $3 | |||
caorle $1 | |||
capannori $2 | |||
capell $alt2 | |||
capezzal kapets:'al | |||
capifila $3 | |||
capiner $alt2 | |||
capocchia $alt | |||
@@ -1042,6 +1044,7 @@ coppol $alt | |||
coprolalia $4 | |||
copt $alt | |||
copti $alt | |||
cordami $2 | |||
cordenons $3 $alt | |||
cordob $1 $alt2 | |||
cordogli $alt | |||
@@ -1292,8 +1295,6 @@ doma $alt | |||
domandone $3 | |||
domenic $alt2 | |||
domicili $3 | |||
domini $2 | |||
domino $1 | |||
domusnovas $alt | |||
don $alt2 | |||
dondolio $3 | |||
@@ -1331,6 +1332,7 @@ ec $alt | |||
ecate $1 $alt | |||
eccentric $alt | |||
ecceter $2 $alt | |||
Ecchimosi $2 | |||
echo 'e:ko | |||
economy $2 | |||
ecosistem $alt | |||
@@ -1620,6 +1622,7 @@ ferrei $1 | |||
ferreo $1 | |||
ferrovia $3 | |||
fes $alt | |||
festicciol festitS:Ol | |||
festival $1 | |||
fet $alt | |||
fettuccine $3 | |||
@@ -1921,7 +1924,9 @@ idroterapeutiche $5 | |||
idrovor $2 | |||
iempsale $1 $alt | |||
ifigenia $4 | |||
ifit $1 | |||
ignifughe $2 | |||
ignifughi $2 | |||
ignifug $2 | |||
ignitor $1 | |||
ignot $alt | |||
ileo $1 | |||
@@ -2069,6 +2074,7 @@ jesi $alt | |||
jesol $alt | |||
joppol $alt | |||
juazeir $1 | |||
juta j'uta | |||
juventin juvent'in | |||
kairos $2 | |||
kampuchea $alt2 | |||
@@ -3498,7 +3504,7 @@ schem $alt | |||
scherm $alt2 | |||
schern $alt2 | |||
scherz $alt2 | |||
schettin $1 $alt2 | |||
schiaccine $2 | |||
schiribizz skiRib'its2: | |||
schivenoglia $alt | |||
schizofrenia $4 | |||
@@ -3507,7 +3513,7 @@ schizoid skits'O:jd | |||
schizoid skits'ojd | |||
schizzati skits2:'ati | |||
sciabol $1 | |||
sciliar $3 | |||
sciabordio Sabo@-*d'i:o | |||
scioper $1 | |||
sciovia $2 | |||
sclerodermia $4 | |||
@@ -3941,6 +3947,7 @@ teroldeg $2 $alt | |||
terranov $alt | |||
terremot $alt | |||
terren $alt2 | |||
terreo $1 | |||
terzogenit $3 | |||
teschi $alt | |||
teser $1 |
@@ -1,7 +1,7 @@ | |||
// Italian translation rules | |||
// This file is UTF-8 encoded | |||
// Last update: 2022 september 23 by Christian Leo Mameli <[email protected]> | |||
// Last update: 2023 april 18 by Christian Leo Mameli <[email protected]> | |||
// letter groups | |||
// A any vowel | |||
// C any consonant | |||
@@ -630,6 +630,8 @@ | |||
_ri) scola (L07_ sk'ola | |||
_) stacca (L07_ st'ak:a | |||
_) sazia (L07_ s'atsja | |||
_) scuoter (L04_ sku'ote@-* | |||
ri) scuoter (L04_ sku'ote@-* | |||
L02) sei (_ _s'Ej // numbers | |||
.group t |
@@ -77,25 +77,10 @@ | |||
_ar) c (adią_ k | |||
_ar) c (adię_ k | |||
_) c (alend k | |||
cal (l kO | |||
cal (lA ka | |||
c (alv k | |||
caly (ps kali | |||
_) ca (m kE | |||
_) c (amembert ka | |||
_) c (an k | |||
cose) c (ans k | |||
_) c (app k | |||
_) c (aps_ k | |||
_) c (apslo k | |||
_) c (arav k | |||
_) c (arl k | |||
_) c (arp k | |||
_) c (art k | |||
_) c (arv k | |||
casc kask | |||
c (at_ k | |||
c (ata_ k | |||
c (atami_ k | |||
c (atem_ k | |||
c (ato_ k | |||
@@ -646,7 +631,6 @@ _salce) son (_++ =sOn | |||
skj (A S | |||
.group sc | |||
sch S | |||
pa) sch (a sx | |||
sch (abA_ sx | |||
sch (ab_ sx | |||
@@ -796,7 +780,6 @@ _anasta) si (L03_ sj | |||
.group th | |||
_e) th (anak t | |||
_) the (_ dE | |||
th s | |||
th (ie_ s; | |||
_) th t | |||
_) thank fENk |
@@ -135,11 +135,11 @@ _, zVpit'aja | |||
а $u // and | |||
и I $u // and | |||
или $u | |||
при $u | |||
при $atend | |||
или $atend // stressed at the end | |||
ибо $u $pause // for | |||
но $u $pause // but | |||
при $u | |||
при $atend | |||
хотя $2 $pause // although | |||
чтобы $pause // in order that | |||
@@ -303,5 +303,7 @@ _с Es | |||
(чему-то) tS;im'utV | |||
(что б) St'op | |||
(что ли) St'ol;i | |||
?3 (что ли) St'ol^i | |||
(что ж) St'oS | |||
(что же) St'oZy | |||
сша sE#SE#'A |
@@ -113,7 +113,7 @@ | |||
_мое) г (о_ v | |||
_намно) г (о_ g | |||
_ненамно) г (о_ g | |||
_примно) г (о_ g | |||
(некое) г (о v | |||
_убо) г (о_ g | |||
_настро) г (о_ g | |||
_нестро) г (о_ g | |||
@@ -121,6 +121,7 @@ | |||
_недоро) г (о_ g | |||
_занедоро) г (о_ g | |||
_немно) г (о_ g | |||
_примно) г (о_ g | |||
_се) г (о v | |||
_страте) г (о_ g // stratego board game | |||
_стро) г (о g | |||
@@ -132,7 +133,7 @@ | |||
д (B d; | |||
д (Y d; | |||
д (_ t | |||
д (вк- t | |||
д (вк t | |||
д (дY d; | |||
д (зY d; | |||
д (к t | |||
@@ -146,8 +147,8 @@ | |||
д (х t | |||
д (хкY t | |||
д (ш t | |||
д (ч t | |||
д (ц t | |||
д (ч t | |||
д (ь_ t; | |||
д (ьк t; | |||
_бан) д (жо_ // silent д (непроизносимая д) | |||
@@ -159,6 +160,7 @@ | |||
_мо) де (лир dE% | |||
мо) де (льер dE% | |||
мо) де (лист dE% | |||
ше) де (вр dE | |||
.group е | |||
е e | |||
@@ -263,7 +265,8 @@ | |||
м (пY m; | |||
м (фY m; | |||
м (ффY m; | |||
майоне (з mVjin'E | |||
мене (дж mEnE# | |||
майоне (з mVjin'E | |||
.group н | |||
н n | |||
@@ -275,6 +278,7 @@ | |||
_клар) не (т nE | |||
клар) не (тист nE% | |||
э) не (рг nE | |||
н (_ n_ | |||
.group о | |||
@@ -330,6 +334,7 @@ | |||
с (щ s;s; | |||
сь (G z; | |||
.group т | |||
т t | |||
Y) тс ts | |||
@@ -346,8 +351,9 @@ | |||
т (нB t; | |||
т (нY t; | |||
т (сY t; | |||
т (тY t; | |||
тьс (я ts | |||
т (тY t; | |||
тс (я ts | |||
тьс (я ,ts | |||
с) т (н // Silent t(Непроизносимая т) | |||
счас) т (лив // silent t | |||
бак) те (р tE% // бактериальный, антибактериальный, ... | |||
@@ -355,14 +361,14 @@ | |||
аль) те (рнатив tE# // альтернатива, альтернативный, альтернатив... | |||
_ан) те (нн tE // антенна, антенны, антенн... | |||
_кон) те (н tE // контент, контента, контенту... | |||
прин) те (р tV# // принтер, принтера, принтеров... | |||
прин) те (р tE% // принтер, принтера, принтеров... | |||
_пре) те (нз tE | |||
роу) те (р tV# // роутер, роутэр, router... | |||
роу) те (р tE% // роутер, роутэр, router... | |||
ин) те (рактив tE# // интерактив, интерактивный... | |||
ин) те (рC tE% // интернет, интернационал, ... ?????????? | |||
ин) те (рпункт tE# // интерпункт, интерпункта... | |||
ин) терфе (йс tE#rf'E2 // интерфейс, интерфейса, ... ?????????? | |||
компью) те (р tO; | |||
компью) те (р tE% | |||
.group у | |||
у u | |||
@@ -441,8 +447,10 @@ | |||
скворе)ч (н S | |||
ску) ч (н S | |||
_ни) ч (то_ S | |||
наро) ч (но S | |||
никити) ч (н S | |||
ильини) ч (н S | |||
подсве) ч (н S | |||
савви) ч (н S | |||
_) ч (то S | |||
яи) ч (ни S | |||
@@ -514,6 +522,7 @@ | |||
.group ё | |||
ё '8 | |||
A) ё 'j8 | |||
?2 A) ё 'j8 | |||
_) ё 'j8 | |||
ж) ё 'O |
@@ -0,0 +1,40 @@ | |||
// Spelling-to-phoneme rules for Amharic | |||
// This file is UTF-8 encoded | |||
// all words lower case | |||
//numbers | |||
_0 z'ero // b'ado ?? | |||
_1 X'ade | |||
_2 kyl'yt@ | |||
_3 s@l@syt@ | |||
_4 ?aRba'Ate | |||
_5 xamu'Syte | |||
_6 Su'du'Syte | |||
_7 S@wyAate | |||
_8 So'momyte | |||
_9 ty'SyAate | |||
_10 Aa'seryte | |||
_12 Aa'seryte'kylyt@ | |||
_1X ?a'seryte | |||
_2X Ay'sera | |||
_3X sal'asa | |||
_4X ?arbAa | |||
_5X Xamsa | |||
_6X susa | |||
_7X sebAa | |||
_8X s@m'anja | |||
_9X t@sAa | |||
_0C mi'ti | |||
_0M1 S'ix | |||
_0M2 m'ilyon | |||
_0M3 b'ilyon | |||
_dpt _n'@t`yb | |||
% p@rs'@nt | |||
። ?aRba'Aten@T'ybi | |||
፣ ne'@t`@las@r@z | |||
፤ d'yryBys@r@z | |||
፧ xto'mylykyt | |||
@@ -0,0 +1,429 @@ | |||
// Spelling-to-phoneme rules for Amharic | |||
// This file is UTF-8 encoded | |||
// all words lower case | |||
.group 0xe188 // characters U+1200 to U+123f | |||
ሀ h@ | |||
ሁ hu | |||
ሂ hi | |||
ሃ ha | |||
ሄ he | |||
ህ hy | |||
@) ህ (_ x | |||
ሆ ho | |||
ለ l@ | |||
ሉ lu | |||
ሊ li | |||
ላ la | |||
ሌ le | |||
ል ly | |||
@) ል (_ l | |||
ሎ lo | |||
ሏ lua | |||
ሐ \X@ | |||
ሑ \Xu | |||
ሒ \Xi | |||
ሓ \Xa | |||
ሔ \Xe | |||
ሕ \Xy | |||
@) ሕ (_ x | |||
ሖ \Xo | |||
ሗ \Xwa | |||
መ m@ | |||
ሙ mu | |||
ሚ mi | |||
ማ ma | |||
ሜ me | |||
ም my | |||
@) ም (_ m | |||
ሞ mo | |||
ሟ mwa | |||
ሠ s@ | |||
ሡ su | |||
ሢ si | |||
ሣ sa | |||
ሤ se | |||
ሥ sy | |||
@) ሥ (_ s | |||
ሦ so | |||
ሧ swa | |||
ረ r@ | |||
ሩ ru | |||
ሪ ri | |||
ራ ra | |||
ሬ re | |||
ር ry | |||
@) ር (_ r | |||
ሮ ro | |||
ሯ rwa | |||
ሰ s@ | |||
ሱ su | |||
ሲ si | |||
ሳ sa | |||
ሴ se | |||
ስ sy | |||
@) ስ (_ s | |||
ሶ so | |||
ሷ swa | |||
ሸ S@ | |||
ሹ Su | |||
ሺ Si | |||
ሻ Sa | |||
ሼ Se | |||
ሽ Sy | |||
@) ሽ (_ S | |||
ሾ So | |||
ሿ Swa | |||
.group 0xe189 // U+1240 to U+127F | |||
ቀ k`@ // U+1240 | |||
ቁ k`u | |||
ቂ k`i | |||
ቃ k`a | |||
ቄ k`e | |||
ቅ k`y | |||
@) ቅ (_ k` | |||
ቆ k`o | |||
ቈ k`w@ | |||
ቊ k`wi | |||
ቋ k`wa | |||
ቌ k`we | |||
ቍ k`wy | |||
@) ቍ (_ k`w | |||
ቐ q@ | |||
ቑ qu | |||
ቒ qi | |||
ቓ qa | |||
ቔ qe | |||
ቕ qy | |||
@) ቕ (_ q | |||
ቖ qo | |||
ቘ qw@ | |||
ቚ qwi | |||
ቛ qwa | |||
ቜ qwe | |||
ቝ qwy | |||
@) ቝ (_ qw | |||
በ b@ | |||
ቡ bu | |||
ቢ bi | |||
ባ ba | |||
ቤ be | |||
ብ by | |||
@) ብ (_ b | |||
ቦ bo | |||
ቧ bwa | |||
ቨ v@ | |||
ቩ vu | |||
ቪ vi | |||
ቫ va | |||
ቬ ve | |||
ቭ vy | |||
@) ቭ (_ v | |||
ቮ vo | |||
ቯ vwa | |||
ተ t@ | |||
ቱ tu | |||
ቲ ti | |||
ታ ta | |||
ቴ te | |||
ት ty | |||
@) ት (_ t | |||
ቶ to | |||
ቷ twa | |||
ቸ tS@ | |||
ቹ tSu | |||
ቺ tSi | |||
ቻ tSa | |||
ቼ tSe | |||
ች tSy | |||
@) ች (_ tS | |||
ቾ tSo | |||
ቿ tSwa | |||
.group 0xe18a // U+1280 to U+12B7 | |||
ኀ h@ | |||
ኁ hu | |||
ኂ hi | |||
ኃ ha | |||
ኄ he | |||
ኅ hy | |||
@) ኅ (_ x | |||
ኆ ho | |||
ኈ hw@ | |||
ኊ hwi | |||
ኋ hwa | |||
ኌ hwe | |||
ኍ hwy | |||
@) ኍ (_ hw | |||
ነ n@ | |||
ኑ nu | |||
ኒ ni | |||
ና na | |||
ኔ ne | |||
ን ny | |||
@) ን (_ n | |||
ኖ no | |||
ኗ nwa | |||
ኘ n^@ | |||
ኙ n^u | |||
ኚ n^i | |||
ኛ n^a | |||
ኜ n^e | |||
ኝ n^y | |||
@) ኝ (_ n^ | |||
ኞ n^o | |||
ኟ n^wa | |||
አ ?@ // U+12A0 | |||
ኡ ?u | |||
ኢ ?i | |||
ኣ ?a | |||
ኤ ?e | |||
_) እ ?y | |||
እ ?'y | |||
ኦ ?o | |||
ኧ ?@ | |||
ከ k@ // U+12A8 | |||
ኩ ku | |||
ኪ ki | |||
ካ ka | |||
ኬ ke | |||
ክ ky | |||
@) ክ (_ k | |||
ኮ ko | |||
ኰ kw@ | |||
ኲ kwi | |||
ኳ kwa | |||
ኴ kwe | |||
ኵ kwy | |||
@) ኵ (_ kw | |||
ኸ x@ | |||
ኹ xu | |||
ኺ xi | |||
ኻ xa | |||
ኼ xe | |||
ኽ xy | |||
@) ኽ (_ x | |||
ኾ xo | |||
.group 0xe18b // U+12C0 to U+12FF | |||
ዀ xw@ | |||
ዂ xwi | |||
ዃ xwa | |||
ዄ xwe | |||
ዅ xwy | |||
@) ዅ (_ xw | |||
ወ w@ | |||
ዉ wu | |||
ዊ wi | |||
ዋ wa | |||
ዌ we | |||
ው wy | |||
@) ው (_ w | |||
ዎ wo | |||
ዐ A@ | |||
ዑ Au | |||
ዒ Ai | |||
ዓ Aa | |||
ዔ Ae | |||
ዕ A'y | |||
@) ዕ (_ A' | |||
ዖ Ao | |||
ዘ z@ | |||
ዙ zu | |||
ዚ zi | |||
ዛ za | |||
ዜ ze | |||
ዝ zy | |||
@) ዝ (_ z | |||
ዞ zo | |||
ዟ zwa | |||
ዠ Z@ | |||
ዡ Zu | |||
ዢ Zi | |||
ዣ Za | |||
ዤ Ze | |||
ዥ Zy | |||
@) ዥ (_ Z | |||
ዦ Zo | |||
ዧ Zwa | |||
የ j@ | |||
ዩ ju | |||
ዪ ji | |||
ያ ja | |||
ዬ je | |||
ይ jy | |||
@) ይ (_ j | |||
ዮ jo | |||
ደ d@ | |||
ዱ du | |||
ዲ di | |||
ዳ da | |||
ዴ de | |||
ድ dy | |||
@) ድ (_ d | |||
ዶ do | |||
ዷ dwa | |||
ዸ dd@ // ?? | |||
ዹ ddu | |||
ዺ ddi | |||
ዻ dda | |||
ዼ dde | |||
ዽ ddy | |||
@) ዽ (_ dd | |||
ዾ ddo | |||
ዿ ddwa | |||
.group 0xe18c // U+1300 to U+133F | |||
ጀ dZ@ | |||
ጁ dZu | |||
ጂ dZi | |||
ጃ dZa | |||
ጄ dZe | |||
ጅ dZy | |||
@) ጅ (_ dZ | |||
ጆ dZo | |||
ጇ dZwa | |||
ገ g@ | |||
ጉ gu | |||
ጊ gi | |||
ጋ ga | |||
ጌ ge | |||
ግ gy | |||
@) ግ (_ g | |||
ጎ go | |||
ጐ go | |||
ጒ gwi | |||
ጓ gwa | |||
ጔ gwe | |||
ጕ gwy | |||
@) ጕ (_ gw | |||
ጘ N@ | |||
ጙ Nu | |||
ጚ Ni | |||
ጛ Na | |||
ጜ Ne | |||
ጝ Ny | |||
@) ጝ (_ N | |||
ጞ No | |||
ጠ t`@ | |||
ጡ t`u | |||
ጢ t`i | |||
ጣ t`a | |||
ጤ t`e | |||
ጥ t`y | |||
@) ጥ (_ t` | |||
ጦ t`o | |||
ጧ t`wa | |||
ጨ tS`@ | |||
ጩ tS`u | |||
ጪ tS`i | |||
ጫ tS`a | |||
ጬ tS`e | |||
ጭ tS`y | |||
@) ጭ (_ tS` | |||
ጮ tS`o | |||
ጯ tS`wa | |||
ጰ p`@ | |||
ጱ p`u | |||
ጲ p`i | |||
ጳ p`a | |||
ጴ p`e | |||
ጵ p`y | |||
@) ጵ (_ p` | |||
ጶ p`o | |||
ጷ p`wa | |||
ጸ ts@ | |||
ጹ tsu | |||
ጺ tsi | |||
ጻ tsa | |||
ጼ tse | |||
ጽ tsy | |||
@) ጽ (_ ts | |||
ጾ tso | |||
ጿ tswa | |||
.group 0xe18d // U+1340 to U+137F | |||
ፀ ts@ | |||
ፁ tsu | |||
ፂ tsi | |||
ፃ tsa | |||
ፄ tse | |||
ፅ tsy | |||
@) ፅ (_ ts | |||
ፆ tso | |||
ፈ f@ | |||
ፉ fu | |||
ፊ fi | |||
ፋ fa | |||
ፌ fe | |||
ፍ fy | |||
@) ፍ (_ f | |||
ፎ fo | |||
ፏ fwa | |||
ፐ p@ // U+1350 | |||
ፑ pu | |||
ፒ pi | |||
ፓ pa | |||
ፔ pe | |||
ፕ py | |||
@) ፕ (_ p | |||
ፖ po | |||
ፗ pwa | |||
ፘ rj@ | |||
ፙ mj@ | |||
ፚ fj@ | |||
.group | |||
$ dolar | |||
@@ -84,7 +84,7 @@ It selects the default behaviour and characteristics for the language, | |||
and sets default values for "phonemes", "dictionary" and other | |||
attributes. | |||
If value for `lanuguage` field is `variant`, then file describes only | |||
If value for `language` field is `variant`, then file describes only | |||
phonetic features of the voice and it can be used as a [...+variant](../src/espeak-ng.1.ronn) | |||
option for any language. | |||
@@ -0,0 +1,5 @@ | |||
name Tigrinya | |||
language ti | |||
maintainer Biniam Gebremichael <[email protected]> | |||
status testing |
@@ -0,0 +1,140 @@ | |||
//==================================================== | |||
// Tigrinya (Eritrea and Ethiopia) | |||
//==================================================== | |||
phoneme i | |||
vwl starttype #i endtype #i | |||
length 200 | |||
IfNextVowelAppend(;) | |||
FMT(vowel/ii_5) | |||
endphoneme | |||
phoneme e | |||
vwl starttype #e endtype #e | |||
length 220 | |||
FMT(vowel/e_mid2) | |||
endphoneme | |||
phoneme y | |||
vwl starttype #@ endtype #@ | |||
ipa ɨ | |||
length 180 | |||
FMT(vowel/ii#_2) | |||
endphoneme | |||
phoneme a | |||
vwl starttype #a endtype #a | |||
length 220 | |||
IF nextPhW(isPalatal) THEN | |||
FMT(vdiph/ai_5) | |||
ENDIF | |||
FMT(vowel/a_6) | |||
endphoneme | |||
phoneme @ | |||
vwl starttype #@ endtype #@ | |||
length 220 | |||
IF nextPhW(isPalatal) THEN | |||
FMT(vdiph/@i_2) | |||
ENDIF | |||
FMT(vowel/@_3) | |||
endphoneme | |||
phoneme o | |||
vwl starttype #o endtype #o | |||
length 220 | |||
FMT(vowel/o-_4) | |||
endphoneme | |||
phoneme u | |||
vwl starttype #u endtype #u | |||
length 220 | |||
FMT(vowel/u_2) | |||
endphoneme | |||
phoneme r | |||
import_phoneme base1/R2 | |||
endphoneme | |||
phoneme p` | |||
vls blb stp | |||
lengthmod 2 | |||
voicingswitch b | |||
Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 gpaus | |||
Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=30 | |||
WAV(ustop/p_unasp) | |||
endphoneme | |||
phoneme b | |||
vcd blb stp | |||
IF prevPhW(isVowel) AND nextPhW(isVowel) THEN | |||
ChangePhoneme(B) | |||
ENDIF | |||
CALL base1/b | |||
endphoneme | |||
phoneme t` | |||
vls alv stp | |||
lengthmod 2 | |||
voicingswitch d | |||
Vowelin f1=0 f2=1700 -300 300 f3=-100 80 gpaus | |||
Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 | |||
IF nextPh(isPause2) THEN | |||
WAV(ustop/t_) | |||
ENDIF | |||
WAV(ustop/t_hi, 70) | |||
endphoneme | |||
phoneme tS` | |||
vls pla afr sib | |||
voicingswitch dZ | |||
lengthmod 2 | |||
Vowelin f1=0 f2=1800 -200 200 f3=-100 80 gpaus | |||
IF nextPh(isPause2) THEN | |||
WAV(ustop/tsh_unasp, 80) | |||
ENDIF | |||
WAV(ustop/tsh_unasp, 80) | |||
endphoneme | |||
phoneme k` | |||
vls vel stp | |||
lengthmod 2 | |||
Vowelin f1=0 f2=1700 -250 250 f3= -200 80 gpaus f4 | |||
Vowelout f1=0 f2=2300 300 400 f3=-200 80 rms=20 | |||
WAV(ustop/k_ejc, 60) | |||
endphoneme | |||
phoneme x | |||
vls vel frc | |||
lengthmod 3 | |||
IF prevPhW(#i) THEN | |||
ChangePhoneme(C) | |||
ELSE | |||
CALL base1/x | |||
ENDIF | |||
endphoneme | |||
phoneme A // Tigrinya Aamet (year) | |||
vcd frc | |||
ipa ʕ | |||
voicingswitch a | |||
length 160 | |||
Vowelin f1=2 f2=2300 -400 500 f3=300 80 | |||
Vowelout f1=2 f2=2300 -300 450 f3=-100 10 | |||
FMT(r/xr,25) addWav(h/h_,30) | |||
endphoneme |
@@ -1805,6 +1805,9 @@ include ph_swedish | |||
phonemetable sw base1 | |||
include ph_swahili | |||
phonemetable ti base1 | |||
include ph_tigrinya | |||
phonemetable tn base1 | |||
include ph_setswana | |||
@@ -927,6 +927,9 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, | |||
static const char consonant_types[16] = { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 }; | |||
memset(syllable_weight, 0, sizeof(syllable_weight)); | |||
memset(vowel_length, 0, sizeof(vowel_length)); | |||
stressflags = tr->langopts.stress_flags; | |||
if (dictionary_flags != NULL) | |||
@@ -2897,6 +2900,7 @@ int RemoveEnding(Translator *tr, char *word, int end_type, char *word_copy) | |||
*word_end = 'e'; | |||
} | |||
i = word_end - word; | |||
if (i >= N_WORD_BYTES) i = N_WORD_BYTES-1; | |||
if (word_copy != NULL) { | |||
memcpy(word_copy, word, i); |
@@ -664,7 +664,7 @@ int ReadClause(Translator *tr, char *buf, short *charix, int *charix_top, int n_ | |||
if (c2 != '1') { | |||
// a list of punctuation characters to be spoken, terminated by space | |||
j = 0; | |||
while (!Eof() && !iswspace(c2)) { | |||
while (!Eof() && !iswspace(c2) && (j < N_PUNCTLIST-1)) { | |||
option_punctlist[j++] = c2; | |||
c2 = GetC(); | |||
buf[ix++] = ' '; |
@@ -79,8 +79,15 @@ static espeak_ng_STATUS ReadPhFile(void **ptr, const char *fname, int *size, esp | |||
if ((f_in = fopen(buf, "rb")) == NULL) | |||
return create_file_error_context(context, errno, buf); | |||
if (*ptr != NULL) | |||
if (*ptr != NULL) { | |||
free(*ptr); | |||
*ptr = NULL; | |||
} | |||
if (length == 0) { | |||
*ptr = NULL; | |||
return 0; | |||
} | |||
if ((*ptr = malloc(length)) == NULL) { | |||
fclose(f_in); | |||
@@ -90,6 +97,7 @@ static espeak_ng_STATUS ReadPhFile(void **ptr, const char *fname, int *size, esp | |||
int error = errno; | |||
fclose(f_in); | |||
free(*ptr); | |||
*ptr = NULL; | |||
return create_file_error_context(context, error, buf); | |||
} | |||
@@ -122,9 +130,11 @@ espeak_ng_STATUS LoadPhData(int *srate, espeak_ng_ERROR_CONTEXT *context) | |||
// read the version number and sample rate from the first 8 bytes of phondata | |||
version = 0; // bytes 0-3, version number | |||
rate = 0; // bytes 4-7, sample rate | |||
for (ix = 0; ix < 4; ix++) { | |||
version += (wavefile_data[ix] << (ix*8)); | |||
rate += (wavefile_data[ix+4] << (ix*8)); | |||
if (wavefile_data) { | |||
for (ix = 0; ix < 4; ix++) { | |||
version += (wavefile_data[ix] << (ix*8)); | |||
rate += (wavefile_data[ix+4] << (ix*8)); | |||
} | |||
} | |||
if (version != version_phdata) |
@@ -1601,6 +1601,7 @@ void TranslateClause(Translator *tr, int *tone_out, char **voice_change) | |||
if (dict_flags & FLAG_SPELLWORD) { | |||
// redo the word, speaking single letters | |||
for (pw = word; *pw != ' ';) { | |||
memset(number_buf, 0, sizeof(number_buf)); | |||
memset(number_buf, ' ', 9); | |||
nx = utf8_in(&c_temp, pw); | |||
memcpy(&number_buf[2], pw, nx); |
@@ -669,6 +669,7 @@ void print_dictionary_flags(unsigned int *flags, char *buf, int buf_len); | |||
int TranslateWord(Translator *tr, char *word1, WORD_TAB *wtab, char *word_out); | |||
void TranslateClause(Translator *tr, int *tone, char **voice_change); | |||
void TranslateClauseWithTerminator(Translator *tr, int *tone_out, char **voice_change, int *terminator_out); | |||
void SetVoiceStack(espeak_VOICE *v, const char *variant_name); | |||
@@ -442,6 +442,10 @@ voice_t *LoadVoice(const char *vname, int control) | |||
MAKE_MEM_UNDEFINED(&voice_languages, sizeof(voice_languages)); | |||
} | |||
if ((vname == NULL || vname[0] == 0) && !(control & 8)) { | |||
return NULL; | |||
} | |||
strncpy0(voicename, vname, sizeof(voicename)); | |||
if (control & 0x10) { | |||
strcpy(buf, vname); | |||
@@ -702,14 +706,14 @@ voice_t *LoadVoice(const char *vname, int control) | |||
if (!tone_only) { | |||
if (!!(control & 8/*compiling phonemes*/)) { | |||
/* Set by espeak_ng_CompilePhonemeDataPath when it | |||
* calls LoadVoice("", 8) to set up a dummy(?) voice. | |||
* As phontab may not yet exist this avoids the spurious | |||
* error message and guarantees consistent results by | |||
* not actually reading a potentially bogus phontab... | |||
*/ | |||
ix = 0; | |||
} else if ((ix = SelectPhonemeTableName(phonemes_name)) < 0) { | |||
/* Set by espeak_ng_CompilePhonemeDataPath when it | |||
* calls LoadVoice("", 8) to set up a dummy(?) voice. | |||
* As phontab may not yet exist this avoids the spurious | |||
* error message and guarantees consistent results by | |||
* not actually reading a potentially bogus phontab... | |||
*/ | |||
ix = 0; | |||
} else if ((ix = SelectPhonemeTableName(phonemes_name)) < 0) { | |||
fprintf(stderr, "Unknown phoneme table: '%s'\n", phonemes_name); | |||
ix = 0; | |||
} |
@@ -540,14 +540,14 @@ static void AdvanceParameters(void) | |||
if (wvoice == NULL) | |||
return; | |||
int x; | |||
int x = 0; | |||
int ix; | |||
static int Flutter_ix = 0; | |||
// advance the pitch | |||
wdata.pitch_ix += wdata.pitch_inc; | |||
if ((ix = wdata.pitch_ix>>8) > 127) ix = 127; | |||
x = wdata.pitch_env[ix] * wdata.pitch_range; | |||
if (wdata.pitch_env) x = wdata.pitch_env[ix] * wdata.pitch_range; | |||
wdata.pitch = (x>>8) + wdata.pitch_base; | |||
@@ -563,7 +563,7 @@ static void AdvanceParameters(void) | |||
if(const_f0) | |||
wdata.pitch = (const_f0<<12); | |||
if (wdata.pitch < 102400) | |||
wdata.pitch = 102400; // min pitch, 25 Hz (25 << 12) | |||
@@ -1265,6 +1265,9 @@ static int WavegenFill2(void) | |||
static bool resume = false; | |||
static int echo_complete = 0; | |||
if (wdata.pitch < 102400) | |||
wdata.pitch = 102400; // min pitch, 25 Hz (25 << 12) | |||
while (out_ptr < out_end) { | |||
if (WcmdqUsed() <= 0) { | |||
if (echo_complete > 0) { |
@@ -61,6 +61,7 @@ shell_test(ssml) | |||
shell_test(translate) | |||
shell_test(variants) | |||
shell_test(voices) | |||
shell_test(crash) | |||
# shell_test(windows-data) | |||
# shell_test(windows-installer) |
@@ -1,23 +1,23 @@ | |||
#!/bin/sh | |||
# Test a command for presence and ability to output the sha1 hash of a file | |||
is_hash() { | |||
echo -n "checking for SHA1 hashing command ... " | |||
if check_hash sha1sum; then | |||
sha1sum=sha1sum | |||
elif check_hash sha1; then | |||
sha1sum=sha1 | |||
elif check_hash shasum; then | |||
sha1sum=shasum | |||
else | |||
echo "no" | |||
exit 1 | |||
fi | |||
echo -n "checking for SHA1 hashing command ... " | |||
if check_hash sha1sum; then | |||
sha1sum=sha1sum | |||
elif check_hash sha1; then | |||
sha1sum=sha1 | |||
elif check_hash shasum; then | |||
sha1sum=shasum | |||
else | |||
echo "no" | |||
exit 1 | |||
fi | |||
} | |||
check_hash() { | |||
which $1 && | |||
$1 </dev/null 2>/dev/null | | |||
awk '{if ($1 != "da39a3ee5e6b4b0d3255bfef95601890afd80709") { exit 1; }}' | |||
# Test some common commands to find the correct one for the system being tested on. | |||
which $1 && | |||
$1 </dev/null 2>/dev/null | | |||
awk '{if ($1 != "da39a3ee5e6b4b0d3255bfef95601890afd80709") { exit 1; }}' | |||
# Test some common commands to find the correct one for the system being tested on. | |||
} | |||
# test if MBROLA synthesizer is installed | |||
@@ -44,53 +44,59 @@ test_phon() { | |||
fi | |||
echo "testing ${TEST_LANG} $MESSAGE" | |||
ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \ | |||
$VALGRIND src/espeak-ng -xq ${OPTIONS} -v ${TEST_LANG} "${TEST_TEXT}" \ | |||
> actual.txt || exit 1 | |||
echo "${EXPECTED}" > expected.txt | |||
if [ "$MESSAGE" = "Ignore" ] ; then | |||
diff expected.txt actual.txt || (echo "... ignoring error" && true) | |||
else | |||
diff expected.txt actual.txt || exit 1 | |||
RESULT=$( | |||
ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \ | |||
$VALGRIND src/espeak-ng -xq ${OPTIONS} -v ${TEST_LANG} "${TEST_TEXT}" || exit 1 | |||
) | |||
if [ "x$RESULT" != "x$EXPECTED" ] ; then | |||
echo "$RESULT != $EXPECTED" | |||
if [ "$MESSAGE" = "Ignore" ] ; then | |||
echo "... ignoring error" | |||
else | |||
exit 1 | |||
fi | |||
fi | |||
} | |||
# Check generated wav file from processed text | |||
test_wav () { | |||
VOICE=$1 | |||
EXPECTED=$2 | |||
TEST_TEXT=$3 | |||
MESSAGE=$4 | |||
VOICE=$1 | |||
EXPECTED=$2 | |||
TEST_TEXT=$3 | |||
MESSAGE=$4 | |||
echo "testing ${VOICE}${MESSAGE}" | |||
echo "testing ${VOICE} ${MESSAGE}" | |||
RESULT=$( | |||
ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \ | |||
$VALGRIND src/espeak-ng -D --stdout -v ${VOICE} "${TEST_TEXT}" \ | |||
> actual.txt || exit 1 | |||
< actual.txt $sha1sum | awk '{ print $1 }' > sum.txt | |||
echo "${EXPECTED}" > expected.txt | |||
$VALGRIND src/espeak-ng -D --stdout -v ${VOICE} "${TEST_TEXT}" | $sha1sum | awk '{ print $1 }' || exit 1 | |||
) | |||
if [ "x$RESULT" != "x$EXPECTED" ] ; then | |||
echo "$RESULT != $EXPECTED" | |||
if [ "$MESSAGE" = "Ignore" ] ; then | |||
diff expected.txt sum.txt || (echo "... ignoring error" && true) | |||
echo "... ignoring error" | |||
else | |||
diff expected.txt sum.txt || exit 1 | |||
exit 1 | |||
fi | |||
fi | |||
} | |||
# Check generated wav file from processed text, where $EXPECTED is grep string | |||
test_wav_grep () { | |||
VOICE=$1 | |||
EXPECTED=$2 | |||
TEST_TEXT=$3 | |||
MESSAGE=$4 | |||
echo "testing ${VOICE}${MESSAGE}" | |||
ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \ | |||
$VALGRIND src/espeak-ng -D --stdout -v ${VOICE} "${TEST_TEXT}" \ | |||
> actual.txt || exit 1 | |||
< actual.txt $sha1sum | awk '{ print $1 }' > sum.txt | |||
if [ "$MESSAGE" = "Ignore" ] ; then | |||
cat sum.txt | grep -E "$EXPECTED" || (echo "... ignoring error" && true) | |||
else | |||
cat sum.txt | grep -E "$EXPECTED" || { printf "wrong hash: "; cat sum.txt; exit 1; } | |||
fi | |||
VOICE=$1 | |||
EXPECTED=$2 | |||
TEST_TEXT=$3 | |||
MESSAGE=$4 | |||
echo "testing ${VOICE} ${MESSAGE}" | |||
$() | |||
ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \ | |||
$VALGRIND src/espeak-ng -D --stdout -v ${VOICE} "${TEST_TEXT}" \ | |||
> actual.txt || exit 1 | |||
< actual.txt $sha1sum | awk '{ print $1 }' > sum.txt | |||
if [ "$MESSAGE" = "Ignore" ] ; then | |||
cat sum.txt | grep -E "$EXPECTED" || (echo "... ignoring error" && true) | |||
else | |||
cat sum.txt | grep -E "$EXPECTED" || { printf "wrong hash: "; cat sum.txt; exit 1; } | |||
fi | |||
} | |||
# Check generated wav file from list of phonemes | |||
@@ -98,27 +104,31 @@ test_phwav() { | |||
TEST_LANG=$1 | |||
EXPECTED=$2 | |||
TEST_TEXT=$3 | |||
test_wav $TEST_LANG $EXPECTED "[[$TEST_TEXT]]" | |||
test_wav $TEST_LANG $EXPECTED "[[$TEST_TEXT]]" | |||
} | |||
test_replace() { | |||
TEST_LANG=$1 | |||
TEST_TEXT=$2 | |||
MESSAGE=$3 | |||
EXPECTED=$3 | |||
MESSAGE=$4 | |||
if [ "$MESSAGE" = "" ] ; then | |||
MESSAGE=$TEST_TEXT | |||
fi | |||
echo "testing ${TEST_LANG}" | |||
ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \ | |||
$VALGRIND src/espeak-ng -Xq -v ${TEST_LANG} "${TEST_TEXT}" \ | |||
> actual.txt || exit 1 | |||
< actual.txt grep -a -E "(Translate|Found:) " | sed -e 's/ \[.*][ ]*$//g' > filtered.txt | |||
if [ "$MESSAGE" = "Ignore" ] ; then | |||
diff expected.txt filtered.txt || (echo "... ignoring error" && true) | |||
else | |||
diff expected.txt filtered.txt || exit 1 | |||
RESULT=$( | |||
ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \ | |||
$VALGRIND src/espeak-ng -Xq -v ${TEST_LANG} "${TEST_TEXT}" | \ | |||
grep -a -E "(Translate|Found:) " | sed -e 's/ \[.*][ ]*$//g' || exit 1 | |||
) | |||
if [ "x$RESULT" != "x$EXPECTED" ] ; then | |||
echo "$RESULT != $EXPECTED" | |||
if [ "$MESSAGE" = "Ignore" ] ; then | |||
echo "... ignoring error" | |||
else | |||
exit 1 | |||
fi | |||
fi | |||
} | |||
@@ -0,0 +1,17 @@ | |||
#!/bin/sh | |||
# include common script | |||
. "`dirname $0`/common" | |||
test_crash() { | |||
TEST_NAME=$1 | |||
echo "testing CVE-${TEST_NAME}" | |||
ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \ | |||
$VALGRIND src/espeak-ng -f "$(dirname $0)/crash_vectors/${TEST_NAME}.txt" -w /dev/null || exit 1 | |||
} | |||
test_crash cve-2023-49990 | |||
test_crash cve-2023-49991 | |||
test_crash cve-2023-49992 | |||
test_crash cve-2023-49993 | |||
test_crash cve-2023-49994 |
@@ -0,0 +1 @@ | |||
ã¦à»Vñ€¦ñ €¦V €äVñ€ãÂà¦æsññâñþâññà¶æØØsññâñþâññeeeeeeeeseee€ññûñ |
@@ -0,0 +1 @@ | |||
€¦Vń €ńVđŐhńůâ˙ńVDíZ»»ŐöÖÖÖÖÖÖÖÖÖě»»ş»ÖľÖÖÖÖÖÖ´ÖÖÖ»ţţ÷ÜÖÖÖ»»ş»ŐŞ»»®î˙˙€ę`v |
@@ -0,0 +1 @@ | |||
"[[-#,- -1-2. r--Ş#--O)C--!˙E-1‹@5-!-V-1-- |
@@ -35,3 +35,4 @@ test_phon ru "V#d;'in_ _:'i_: n'ojl n'ojl_d;Is;'AtYx" "1,00" "_dpt2" | |||
test_phon en "t'u:h'VndrI2d@n tw'Enti" "220" "_0and" | |||
test_phon af "(fr)avinj'O~(en) b'0st@n(af) S'ina" "avignon boston china" "_^_" | |||
test_phon en "s'VtS _a#z" "such as" "(multiple words)" | |||
test_phon cmn "s.,i.35_|@r51_| t'iE35n_|_| tS;iou214_|" "12.9" "_dpt" |
@@ -19,7 +19,7 @@ test_phon en "t'En Il'Ev@n tw'Elv T'3:ti:n f'o@ti:n f'Ifti:n s'Iksti:n s'Ev@nt,i | |||
test_phon en "t'En tw'Enti T'3:ti f'o@ti f'Ifti s'Iksti s'Ev@nti; 'eIti n'aInti" "10 20 30 40 50 60 70 80 90" "tens" | |||
test_phon en-GB "Tr'i:h'VndrI2d@n s'Iksti f'aIv" "365" "hundreds" | |||
test_phon en-US "Tr'i:h'VndrI2d s'Iksti f'aIv" "365" "hundreds" | |||
test_phon en "w'0nh'VndrI2d w'0n T'aUz@nd w'0n m'Ili@n w'0n b'Ili@n w'0n tr'Ili@n w'0n kw0dr'Ili@n w'0n kwInt'Ili@n w'0n sExt'Ili@n w'0n sEpt'Ili@n w'0n 0kt'Ili@n w'0n n0n'Ili@n t'En n0n'Ili@n n'aInti n'aIn n0n'Ili@n_! n'aInh'VndrI2d@n n'aInti n'aIn 0kt'Ili@n_! n'aInh'VndrI2d@n n'aInti n'aIn sEpt'Ili@n_! n'aInh'VndrI2d@n n'aInti n'aIn sExt'Ili@n_! n'aInh'VndrI2d@n n'aInti n'aIn kwInt'Ili@n_! n'aInh'VndrI2d@n n'aInti n'aIn kw0dr'Ili@n_! n'aInh'VndrI2d@n n'aInti n'aIn tr'Ili@n_! n'aInh'VndrI2d@n n'aInti n'aIn b'Ili@n_! n'aInh'VndrI2d@n n'aInti n'aIn m'Ili@n_! n'aInh'VndrI2d@n n'aInti n'aIn T'aUz@nd_! n'aInh'VndrI2d@n n'aInti n'aIn w'0nz'i@roU_!z'i@roUz'i@roU_!z'i@roUz'i@roU_!z'i@roUz'i@roU_!z'i@roUz'i@roU_!z'i@roUz'i@roU_!z'i@roUz'i@roU_!z'i@roUz'i@roU_!z'i@roUz'i@roU_!z'i@roUz'i@roU_!z'i@roUz'i@roU_!z'i@roUz'i@roU_!z'i@roUz'i@roU_!z'i@roUz'i@roU_!z'i@roUz'i@roU_!z'i@r" "100 1000 1000000 1000000000 1000000000000 1000000000000000 1000000000000000000 1000000000000000000000 1000000000000000000000000 1000000000000000000000000000 1000000000000000000000000000000 10000000000000000000000000000000 99999999999999999999999999999999 100000000000000000000000000000000" "large" # 10^2 10^3 10^6 10^9 10^12 10^15 10^18 10^21 10^24 10^27 10^30 10^31 10^32 | |||
test_phon en "w'0nh'VndrI2d w'0n T'aUz@nd w'0n m'Ili@n w'0n b'Ili@n w'0n tr'Ili@n w'0n kw0dr'Ili@n w'0n kwInt'Ili@n w'0n sEkst'Ili@n w'0n sEpt'Ili@n w'0n 0kt'Ili@n w'0n n0n'Ili@n t'En n0n'Ili@n n'aInti n'aIn n0n'Ili@n_! n'aInh'VndrI2d@n n'aInti n'aIn 0kt'Ili@n_! n'aInh'VndrI2d@n n'aInti n'aIn sEpt'Ili@n_! n'aInh'VndrI2d@n n'aInti n'aIn sEkst'Ili@n_! n'aInh'VndrI2d@n n'aInti n'aIn kwInt'Ili@n_! n'aInh'VndrI2d@n n'aInti n'aIn kw0dr'Ili@n_! n'aInh'VndrI2d@n n'aInti n'aIn tr'Ili@n_! n'aInh'VndrI2d@n n'aInti n'aIn b'Ili@n_! n'aInh'VndrI2d@n n'aInti n'aIn m'Ili@n_! n'aInh'VndrI2d@n n'aInti n'aIn T'aUz@nd_! n'aInh'VndrI2d@n n'aInti n'aIn w'0nz'i@roU_!z'i@roUz'i@roU_!z'i@roUz'i@roU_!z'i@roUz'i@roU_!z'i@roUz'i@roU_!z'i@roUz'i@roU_!z'i@roUz'i@roU_!z'i@roUz'i@roU_!z'i@roUz'i@roU_!z'i@roUz'i@roU_!z'i@roUz'i@roU_!z'i@roUz'i@roU_!z'i@roUz'i@roU_!z'i@roUz'i@roU_!z'i@roUz'i@roU_!z'i@r" "100 1000 1000000 1000000000 1000000000000 1000000000000000 1000000000000000000 1000000000000000000000 1000000000000000000000000 1000000000000000000000000000 1000000000000000000000000000000 10000000000000000000000000000000 99999999999999999999999999999999 100000000000000000000000000000000" "large" # 10^2 10^3 10^6 10^9 10^12 10^15 10^18 10^21 10^24 10^27 10^30 10^31 10^32 | |||
test_phon en "f'aIv s'Iksti f'o@ w'0nh'VndrI2d@n tw'Enti Tr'i: f'o@ T'aUz@nd Tr'i:h'VndrI2d@n f'Ifti s'Ev@n f'o@ti:n T'aUz@nd_! s'Iksh'VndrI2d@n 'eIti Tr'i: s'Ev@nh'VndrI2d@n f'o@ti t'u: T'aUz@nd_! Tr'i:h'VndrI2d@n f'Ifti n'aIn s'Iks m'Ili@n_! f'o@h'VndrI2d@n s'Ev@nti f'aIv T'aUz@nd_! Tr'i:h'VndrI2d@n tw'Enti; 'eIt" "5 64 123 4357 14683 742359 6475328" "mixed" | |||
echo "... lv (Latvian)" # short scale |
@@ -12,7 +12,7 @@ test_phon en "t'EnT Il'Ev@nT tw'ElfT T'3:ti:nT f'o@ti:nT f'Ifti:nT s'Iksti:nT s' | |||
test_phon en "t'EnT tw'Enti@T T'3:ti@T f'o@ti@T f'Ifti@T s'Iksti@T s'Ev@nt,i@T 'eIti@T n'aInti@T" "10th 20th 30th 40th 50th 60th 70th 80th 90th" "tens" | |||
test_phon en-GB "Tr'i:h'VndrI2d@n s'Iksti f'IfT" "365th" "hundreds" | |||
test_phon en-US "Tr'i:h'VndrI2d s'Iksti f'IfT" "365th" "hundreds" | |||
test_phon en "w'0nh'VndrI2d T w'0n T'aUz@nd T w'0n m'Ili@n T w'0n b'Ili@n T w'0n tr'Ili@n T w'0n kw0dr'Ili@n T w'0n kwInt'Ili@n T w'0n sExt'Ili@n T w'0n sEpt'Ili@n T w'0n 0kt'Ili@n T w'0n n0n'Ili@n T" "100th 1000th 1000000th 1000000000th 1000000000000th 1000000000000000th 1000000000000000000th 1000000000000000000000th 1000000000000000000000000th 1000000000000000000000000000th 1000000000000000000000000000000th" "large" # 10^2 10^3 10^6 10^9 10^12 10^15 10^18 10^21 10^24 10^27 10^30 | |||
test_phon en "w'0nh'VndrI2d T w'0n T'aUz@nd T w'0n m'Ili@n T w'0n b'Ili@n T w'0n tr'Ili@n T w'0n kw0dr'Ili@n T w'0n kwInt'Ili@n T w'0n sEkst'Ili@n T w'0n sEpt'Ili@n T w'0n 0kt'Ili@n T w'0n n0n'Ili@n T" "100th 1000th 1000000th 1000000000th 1000000000000th 1000000000000000th 1000000000000000000th 1000000000000000000000th 1000000000000000000000000th 1000000000000000000000000000th 1000000000000000000000000000000th" "large" # 10^2 10^3 10^6 10^9 10^12 10^15 10^18 10^21 10^24 10^27 10^30 | |||
test_phon en "f'IfT s'Iksti f'o@T w'0nh'VndrI2d@n tw'Enti T'3:d f'o@ T'aUz@nd Tr'i:h'VndrI2d@n f'Ifti s'Ev@nT f'o@ti:n T'aUz@nd_! s'Iksh'VndrI2d@n 'eIti T'3:d s'Ev@nh'VndrI2d@n f'o@ti t'u: T'aUz@nd_! Tr'i:h'VndrI2d@n f'Ifti n'aInT s'Iks m'Ili@n_! f'o@h'VndrI2d@n s'Ev@nti f'aIv T'aUz@nd_! Tr'i:h'VndrI2d@n tw'Enti; 'eItT" "5th 64th 123rd 4357th 14683rd 742359th 6475328th" "mixed" | |||
test_phon lv "p'iRmais g'ads | |||
'uotRais g'ads |
@@ -133,6 +133,7 @@ test_phwav sv 520bab254d665ddf72f7e792cbc9591f911b90ed "m#a ma n#a na n^#a n^a N | |||
test_phwav sw 2712335a0acb022988879b6cedba2ee9ef158659 "ma na Na pa ta ka ba da ga fa Ta sa Sa xa ha va Da za Za tSa dZa la ra ja wa t2a t#a d#a z#a r-a z/2a w#a m- n- N- _:_ mI mE ma m0 mV mU mi: mA: mO: mu: m3: mA@ mO@ mo@ mU@ mi@3 mIR mVR mi@ me@ mi m@ m3 me# mI# mI2 meI maI mOI moU maU maa mO2 maI@ maI3 maU@" | |||
test_phwav ta 910d08d60dacd0a287437cd03f8e4510bc41ed8f "ma na n.a n^a Na pa p#a ba b#a ta t#a da d#a t.a t.#a d.a d.#a ka k#a ga g#a fa va sa S;a s.a ca c#a Ja J#a ha ja ra la l.a r-a _:_ ma ma: mi mi: mu mu: me me: mo mo: maI" | |||
test_phwav te 214fbe8ac3508d7cd92c01bdcceee135b6bc47f3 "ma na n.a n^a Na pa p#a ba b#a ta t#a da d#a t.a t.#a d.a d.#a ka k#a ga g#a fa va sa S;a s.a ca c#a Ja J#a ha ja ra la l.a r-a _:_ ma ma: mi mi: mu mu: me me: mo mo: maI" | |||
test_phwav ti 6fc09a43bb580d38b220fc9756ec6ea70789815d "ma na Na pa ta ka ?a ba da ga p\`a t\`a k\`a tSa dZa tS\`a Ba sa za Sa Za xa ha la ja wa ra _:_ mi me my ma m@ mo mu Xa Aa" | |||
test_phwav th bd61d637711c32abcfee03b2d8d332f6442efcff "ma na Ja Na pa p_ha ba ta t_ha da ka k_ha ga ?a fa sa za Ta ha tS;a Ra ja wa la _:_ mi mI mW mu me m@ mo mE ma ma: mO miu meu mEu mau ma:u mWi mui m@i moi mai ma:i mOi maW _:_ ma1 ma2 ma3 ma4 ma5 ma6" | |||
test_phwav tk f67686d7831f044796e917f0fd50e63d74757b34 "ma na pa ba ta da tSa dZa tsa dza ca Ja Ca ka ga fa va sa za Sa Za xa Qa ha la ja wa Ra *a _:_ mi me m& my mW mu mo ma m@" | |||
test_phwav tn 206f0e832cc4a5fa19dc3917752e1d5b274047d4 "ma na Na pa ta ka ba da ga fa Ta sa Sa xa ha va Da za Za tSa dZa la ra ja wa t2a t#a d#a z#a r-a z/2a w#a m- n- N- _:_ mI mE ma m0 mV mU mi: mA: mO: mu: m3: mA@ mO@ mo@ mU@ mi@3 mIR mVR mi@ me@ mi m@ m3 me# mI# mI2 meI maI mOI moU maU maa mO2 maI@ maI3 maU@" |
@@ -5,8 +5,7 @@ | |||
##### bs: Bosnian | |||
# Ljubazni fenjerdžija čađavog lica hoće da mi pokaže štos. | |||
cat > expected.txt <<EOF | |||
Translate 'ljubazni' | |||
test_replace bs "Љубазни фењерџија чађавог лица хоће да ми покаже штос." "Translate 'ljubazni' | |||
Translate 'fenjerdžija' | |||
Translate 'čađavog' | |||
Translate 'lica' | |||
@@ -14,27 +13,21 @@ Translate 'hoće' | |||
Translate 'da' | |||
Translate 'mi' | |||
Translate 'pokaže' | |||
Translate 'štos' | |||
EOF | |||
test_replace bs "Љубазни фењерџија чађавог лица хоће да ми покаже штос." | |||
Translate 'štos'" | |||
##### en: English | |||
cat > expected.txt <<EOF | |||
Translate 'aeon' | |||
test_replace en "Æon mediæval. Œconomy phœnix. Loſt history." "Translate 'aeon' | |||
Found: 'mediaeval' | |||
Translate 'oeconomy' | |||
Found: 'phoenix' | |||
Found: 'lost' | |||
Translate 'history' | |||
EOF | |||
test_replace en "Æon mediæval. Œconomy phœnix. Loſt history." | |||
Translate 'history'" | |||
##### hr: Croatian | |||
# Ljubazni fenjerdžija čađavog lica hoće da mi pokaže štos. | |||
cat > expected.txt <<EOF | |||
Translate 'ljubazni' | |||
test_replace hr "Љубазни фењерџија чађавог лица хоће да ми покаже штос." "Translate 'ljubazni' | |||
Translate 'fenjerdžija' | |||
Translate 'čađavog' | |||
Translate 'lica' | |||
@@ -42,30 +35,24 @@ Translate 'hoće' | |||
Translate 'da' | |||
Translate 'mi' | |||
Translate 'pokaže' | |||
Translate 'štos' | |||
EOF | |||
test_replace hr "Љубазни фењерџија чађавог лица хоће да ми покаже штос." | |||
Translate 'štos'" | |||
##### ja: Japanese | |||
# いろはにほへと. ちりぬるを. わかよたれそ. つねならむ. うゐのおくやま. けふこえて. あさきゆめみし. ゑひもせすん. | |||
cat > expected.txt <<EOF | |||
Translate 'いろはにほへと' | |||
test_replace ja "イロハニホヘト. チリヌルヲ. ワカヨタレソ. ツネナラム. ウヰノオクヤマ. ケフコエテ. アサキユメミシ. ヱヒモセスン." "Translate 'いろはにほへと' | |||
Translate 'ちりぬるを' | |||
Translate 'わかよたれそ' | |||
Translate 'つねならむ' | |||
Translate 'うゐのおくやま' | |||
Translate 'けふこえて' | |||
Translate 'あさきゆめみし' | |||
Translate 'ゑひもせすん' | |||
EOF | |||
test_replace ja "イロハニホヘト. チリヌルヲ. ワカヨタレソ. ツネナラム. ウヰノオクヤマ. ケフコエテ. アサキユメミシ. ヱヒモセスン." | |||
Translate 'ゑひもせすん'" | |||
##### mk: Macedonian | |||
# Ѕидарски пејзаж: шугав билмез со чудење џвака ќофте и кељ на туѓ цех. | |||
cat > expected.txt <<EOF | |||
Translate 'ѕидарски' | |||
test_replace mk "Dzidarski pejzaž: šugav bilmez so čudenje džvaka ćofte i kelj na tuđ ceh." "Translate 'ѕидарски' | |||
Translate 'пејзаж' | |||
Translate 'шугав' | |||
Translate 'билмез' | |||
@@ -77,15 +64,12 @@ Found: 'и' [i_:] \$u \$pause | |||
Translate 'кељ' | |||
Translate 'на' | |||
Translate 'туѓ' | |||
Translate 'цех' | |||
EOF | |||
test_replace mk "Dzidarski pejzaž: šugav bilmez so čudenje džvaka ćofte i kelj na tuđ ceh." | |||
Translate 'цех'" | |||
##### sr: Serbian | |||
# Ljubazni fenjerdžija čađavog lica hoće da mi pokaže štos. | |||
cat > expected.txt <<EOF | |||
Translate 'ljubazni' | |||
test_replace sr "Љубазни фењерџија чађавог лица хоће да ми покаже штос." "Translate 'ljubazni' | |||
Translate 'fenjerdžija' | |||
Translate 'čađavog' | |||
Translate 'lica' | |||
@@ -93,7 +77,4 @@ Translate 'hoće' | |||
Translate 'da' | |||
Translate 'mi' | |||
Translate 'pokaže' | |||
Translate 'štos' | |||
EOF | |||
test_replace sr "Љубазни фењерџија чађавог лица хоће да ми покаже штос." | |||
Translate 'štos'" |
@@ -11,12 +11,14 @@ test_ssml_audio() { | |||
OPTS=$4 | |||
echo "testing ${TEST_NAME}" | |||
ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \ | |||
$VALGRIND src/espeak-ng --stdout -m "${TEST_TEXT}" ${OPTS} \ | |||
> actual.txt || exit 1 | |||
< actual.txt $sha1sum | awk '{ print $1 }' > sum.txt | |||
echo "${EXPECTED}" > expected.txt | |||
diff expected.txt sum.txt || exit 1 | |||
RESULT=$( | |||
ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \ | |||
$VALGRIND src/espeak-ng --stdout -m "${TEST_TEXT}" ${OPTS} | $sha1sum | awk '{ print $1 }' || exit 1 | |||
) | |||
if [ "x$RESULT" != "x$EXPECTED" ] ; then | |||
echo "$RESULT != $EXPECTED" | |||
exit 1 | |||
fi | |||
} | |||
test_ssml() { | |||
@@ -30,11 +32,15 @@ test_ssml() { | |||
fi | |||
echo "testing ${INPUT}" | |||
cp $(dirname $INPUT)/$(basename ${INPUT%.*}).expected expected.txt | |||
ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \ | |||
$VALGRIND src/espeak-ng -m -q $PARAMETERS -f ${INPUT} \ | |||
> actual.txt || exit 1 | |||
diff expected.txt actual.txt || exit 1 | |||
EXPECTED=$(cat $(dirname $INPUT)/$(basename ${INPUT%.*}).expected) | |||
RESULT=$( | |||
ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \ | |||
$VALGRIND src/espeak-ng -m -q $PARAMETERS -f ${INPUT} || exit 1 | |||
) | |||
if [ "x$RESULT" != "x$EXPECTED" ] ; then | |||
echo "$RESULT != $EXPECTED" | |||
exit 1 | |||
fi | |||
} | |||
for i in `dirname $0`/ssml/*.ssml ; do test_ssml $i; done |
@@ -21,7 +21,7 @@ test_phon en-US "d'eIbju:t#I#d" "débuted" | |||
# https://github.com/espeak-ng/espeak-ng/issues/706 | |||
test_phon en ",aIb,i:;'Em m'It 'Ib@mz m'Its ,aIb,i:;'Em ,Em,aIt'i:; ,eIp,i:;'eItS s,i:;,i:;'Es ,aIt,i:;'Eks ,aIb,i:;'Emz ,Em,aIt'i:z ,eIp,i:;'eItSIz s,i:;,i:;'EsIz ,aIt,i:;'EksIz" "ibm mit ibms mits IBM MIT APH CES ITX IBMs MIT's APHs CES's ITXs" | |||
test_phon lv "'ibm m'it 'ibm-s m'its 'ibm m'it 'aph ts'Es 'it_ks 'ibm-s m'its 'aphs ts'Ess 'it_kss 'a>_:,ess_! ,a:_:,ess_!v'e:_:_:_: s'i:a:_ 'u>_:t,e:_:t,e:_:" "ibm mit ibms mits IBM MIT APH CES ITX IBMs MIT's APHs CES's ITXs AS ASV SIA utt" | |||
test_phon ru "'Ibm (en),aIb,i:;'Em m'It 'Ib@mz m'Its ,aIb,i:;'Em ,Em,aIt'i:; ,eIp,i:;'eItS s,i:;,i:;'Es ,aIt,i:;'Eks 'Ib@mz m'Its 'afz s'EI2zI2z 'ItEksz(ru) SS'A" "ИБМ ibm mit ibms mits IBM MIT APH CES ITX IBMs MIT's APHs CES's ITXs США" | |||
test_phon ru "'Ibm (en),aIb,i:;'Em m'It 'Ib@mz m'Its ,aIb,i:;'Em ,Em,aIt'i:; ,eIp,i:;'eItS s,i:;,i:;'Es ,aIt,i:;'Eks 'Ib@mz m'Its 'afz s'EI2zI2z 'ItEksz(ru) sE#SE#'A" "ИБМ ibm mit ibms mits IBM MIT APH CES ITX IBMs MIT's APHs CES's ITXs США" | |||
# bug: https://github.com/nvaccess/nvda/issues/7740 | |||
test_phon ta "'il." "ள்" |