- name: test | - name: test | ||||
run: | | run: | | ||||
${{ matrix.config_env }} ${{ matrix.runenv }} cmake --build build --target tests | ${{ 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 |
- name: make | - name: make | ||||
run: cmake --build build | run: cmake --build build | ||||
- name: make check | - 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 | - name: make package_source | ||||
run: cmake --build build --target package_source | run: cmake --build build --target package_source | ||||
- name: re-make | - name: re-make | ||||
run: cd unpack/espeak-ng-* && cmake --build build | run: cd unpack/espeak-ng-* && cmake --build build | ||||
- name: re-make check | - 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 |
build: | build: | ||||
runs-on: ubuntu-latest | runs-on: ubuntu-latest | ||||
name: Build synth_espeak on ${{ matrix.arch }} | name: Build synth_espeak on ${{ matrix.arch }} | ||||
# Do not run this job on any forked repos | |||||
if: github.repository == 'espeak-ng/espeak-ng' | |||||
strategy: | strategy: | ||||
fail-fast: false | fail-fast: false | ||||
matrix: | matrix: |
- name: make | - name: make | ||||
run: cmake --build build --config ${{ matrix.config }} | run: cmake --build build --config ${{ matrix.config }} | ||||
- name: make check | - 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 |
* uz (Uzbek) -- Andiv06 | * uz (Uzbek) -- Andiv06 | ||||
new languages: | new languages: | ||||
* ti (Tigrinya) -- Biniam Gebremichael | |||||
* mto (Totontepec Mixe) -- Bill Dengler, Elizabeth Resendiz | * mto (Totontepec Mixe) -- Bill Dengler, Elizabeth Resendiz | ||||
### 1.51 | ### 1.51 |
MKDIR=mkdir -p | MKDIR=mkdir -p | ||||
AM_CFLAGS = \ | 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 | -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112L | ||||
AM_CXXFLAGS = | AM_CXXFLAGS = | ||||
espeak-ng-data/sw_dict \ | espeak-ng-data/sw_dict \ | ||||
espeak-ng-data/ta_dict \ | espeak-ng-data/ta_dict \ | ||||
espeak-ng-data/te_dict \ | espeak-ng-data/te_dict \ | ||||
espeak-ng-data/ti_dict \ | |||||
espeak-ng-data/th_dict \ | espeak-ng-data/th_dict \ | ||||
espeak-ng-data/tk_dict \ | espeak-ng-data/tk_dict \ | ||||
espeak-ng-data/tn_dict \ | espeak-ng-data/tn_dict \ | ||||
te: espeak-ng-data/te_dict | te: espeak-ng-data/te_dict | ||||
espeak-ng-data/te_dict: dictsource/te_list dictsource/te_rules dictsource/te_extra dictsource/te_emoji | 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 | th: espeak-ng-data/th | ||||
espeak-ng-data/th: dictsource/th dictsource/th dictsource/te_extra | espeak-ng-data/th: dictsource/th dictsource/th dictsource/te_extra | ||||
mavenCentral() | mavenCentral() | ||||
} | } | ||||
dependencies { | dependencies { | ||||
classpath 'com.android.tools.build:gradle:7.4.2' | |||||
classpath 'com.android.tools.build:gradle:8.2.2' | |||||
} | } | ||||
} | } | ||||
plugins { | plugins { | ||||
} | } | ||||
android { | 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" | namespace "com.reecedunn.espeak" | ||||
buildFeatures { | |||||
buildConfig = true | |||||
} | |||||
defaultConfig { | defaultConfig { | ||||
minSdk 19 | |||||
minSdk 21 | |||||
targetSdk 33 | targetSdk 33 | ||||
versionCode 22 | versionCode 22 | ||||
versionName "1.52-dev" | versionName "1.52-dev" | ||||
into file("./res/raw") | 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 { | project.afterEvaluate { | ||||
tasks.checkData.dependsOn(externalNativeBuildDebug) | tasks.checkData.dependsOn(externalNativeBuildDebug) | ||||
tasks.createDataArchive.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' | |||||
} | |||||
} | } |
android.nonFinalResIds=false |
distributionBase=GRADLE_USER_HOME | distributionBase=GRADLE_USER_HOME | ||||
distributionPath=wrapper/dists | 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 | networkTimeout=10000 | ||||
validateDistributionUrl=true | |||||
zipStoreBase=GRADLE_USER_HOME | zipStoreBase=GRADLE_USER_HOME | ||||
zipStorePath=wrapper/dists | zipStorePath=wrapper/dists |
# This is normally unused | # This is normally unused | ||||
# shellcheck disable=SC2034 | # shellcheck disable=SC2034 | ||||
APP_BASE_NAME=${0##*/} | 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. | # Use the maximum available, or set MAX_FD != -1 to use that value. | ||||
MAX_FD=maximum | MAX_FD=maximum | ||||
fi | fi | ||||
else | else | ||||
JAVACMD=java | 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 | Please set the JAVA_HOME variable in your environment to match the | ||||
location of your Java installation." | location of your Java installation." | ||||
fi | |||||
fi | fi | ||||
# Increase the maximum file descriptors if we can. | # Increase the maximum file descriptors if we can. | ||||
case $MAX_FD in #( | case $MAX_FD in #( | ||||
max*) | max*) | ||||
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. | # 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 ) || | MAX_FD=$( ulimit -H -n ) || | ||||
warn "Could not query maximum file descriptor limit" | warn "Could not query maximum file descriptor limit" | ||||
esac | esac | ||||
'' | soft) :;; #( | '' | soft) :;; #( | ||||
*) | *) | ||||
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. | # 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" || | ulimit -n "$MAX_FD" || | ||||
warn "Could not set maximum file descriptor limit to $MAX_FD" | warn "Could not set maximum file descriptor limit to $MAX_FD" | ||||
esac | esac | ||||
done | done | ||||
fi | 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 -- \ | set -- \ | ||||
"-Dorg.gradle.appname=$APP_BASE_NAME" \ | "-Dorg.gradle.appname=$APP_BASE_NAME" \ |
%JAVA_EXE% -version >NUL 2>&1 | %JAVA_EXE% -version >NUL 2>&1 | ||||
if %ERRORLEVEL% equ 0 goto execute | 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 | goto fail | ||||
if exist "%JAVA_EXE%" goto execute | 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 | goto fail | ||||
qdb quc qu qya | qdb quc qu qya | ||||
ro ru | ro ru | ||||
sd shn si sjn sk sl smj sq sr sv sw | 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 | ug uk ur uz | ||||
vi | vi | ||||
yue | yue | ||||
WORKING_DIRECTORY "${PHONEME_SRC_DIR}" | WORKING_DIRECTORY "${PHONEME_SRC_DIR}" | ||||
COMMENT "Compile phonemes" | COMMENT "Compile phonemes" | ||||
DEPENDS | DEPENDS | ||||
"${DATA_DIST_DIR}/intonations" | |||||
"$<TARGET_FILE:espeak-ng-bin>" | "$<TARGET_FILE:espeak-ng-bin>" | ||||
${_phon_deps} | ${_phon_deps} | ||||
) | ) |
_0M4 tr'Ili@n | _0M4 tr'Ili@n | ||||
_0M5 kw0dr'Ili@n | _0M5 kw0dr'Ili@n | ||||
_0M6 kwInt'Ili@n | _0M6 kwInt'Ili@n | ||||
_0M7 sExt'Ili@n | |||||
_0M7 sEkst'Ili@n | |||||
_0M8 sEpt'Ili@n | _0M8 sEpt'Ili@n | ||||
_0M9 0kt'Ili@n | _0M9 0kt'Ili@n | ||||
_0M10 n0n'Ili@n | _0M10 n0n'Ili@n | ||||
bassist $alt6 //beIsIst | bassist $alt6 //beIsIst | ||||
baste $alt6 //beIst | baste $alt6 //beIst | ||||
bastion basti@n | bastion basti@n | ||||
bateau ba'toU | |||||
batman batman | batman batman | ||||
?3 baton $alt3 | ?3 baton $alt3 | ||||
battalion $alt3 | battalion $alt3 | ||||
?3 bulimia bUl'Imi@ | ?3 bulimia bUl'Imi@ | ||||
bunion bVnI2@n | bunion bVnI2@n | ||||
bureaucracy bjU@'0kr@si | bureaucracy bjU@'0kr@si | ||||
burien 'bjU@ri@n $only | |||||
bursar b3:s3 | bursar b3:s3 | ||||
?5 bursar bVRs3 | ?5 bursar bVRs3 | ||||
bus bVs | bus bVs | ||||
movies mu:vIz | movies mu:vIz | ||||
mozilla m@zIl@ | mozilla m@zIl@ | ||||
mujaheddin mUdZ@hId'i:n | mujaheddin mUdZ@hId'i:n | ||||
mukilteo ,mVk@l'ti:oU | |||||
?3 multi mVltaI | ?3 multi mVltaI | ||||
multitude $1 | multitude $1 | ||||
multiplexer $1 | multiplexer $1 | ||||
tablet tabl@t | tablet tabl@t | ||||
taboo $2 | taboo $2 | ||||
tabu tabu: | tabu tabu: | ||||
tacoma t@'koUm@ | |||||
(tae kwon do) t'aIkw0nd'oU | (tae kwon do) t'aIkw0nd'oU | ||||
taffeta tafI2t@ | taffeta tafI2t@ | ||||
(tai chi) taI'tSi: | (tai chi) taI'tSi: | ||||
Wisconsin wI2sk'0nsI2n | Wisconsin wI2sk'0nsI2n | ||||
Wyoming waI'oUmIN | Wyoming waI'oUmIN | ||||
Xhosa kO:s@ | Xhosa kO:s@ | ||||
yakima 'jakImA: $only | |||||
Yemen $alt2 | Yemen $alt2 | ||||
Ypres i:pr@ | Ypres i:pr@ | ||||
Yogyakarta j0gj@k'A@t@ | Yogyakarta j0gj@k'A@t@ |
анонс $2 | анонс $2 | ||||
анонсировавший $3 | анонсировавший $3 | ||||
анонсировалось $3 | анонсировалось $3 | ||||
анонсированная $3 | |||||
анонсированного $3 | анонсированного $3 | ||||
анонсированной $3 | анонсированной $3 | ||||
анонсированные $3 | анонсированные $3 | ||||
арчах $2 | арчах $2 | ||||
арче $2 | арче $2 | ||||
арчей $2 | арчей $2 | ||||
арчи $2 | |||||
арчибальда $3 | арчибальда $3 | ||||
арчибальде $3 | арчибальде $3 | ||||
арчинец $2 | арчинец $2 | ||||
видеоконтентом $5 | видеоконтентом $5 | ||||
видеоконтенту $5 | видеоконтенту $5 | ||||
видеоконтрольного $5 | видеоконтрольного $5 | ||||
видеоконференции $6 | |||||
видеоконференций $6 | видеоконференций $6 | ||||
видеокремом $4 | видеокремом $4 | ||||
видеокурс $4 | видеокурс $4 | ||||
внедрявшимися $2 | внедрявшимися $2 | ||||
внедрявшуюся $2 | внедрявшуюся $2 | ||||
внедряемой $2 | внедряемой $2 | ||||
внедряемых $2 | |||||
внедряет $2 | внедряет $2 | ||||
внедряетесь $2 | внедряетесь $2 | ||||
внедрял $2 | внедрял $2 | ||||
воспитываемое $2 | воспитываемое $2 | ||||
воспитываемся $2 | воспитываемся $2 | ||||
воспитываемы $2 | воспитываемы $2 | ||||
воспитываемый $2 | |||||
воспитывает $2 | воспитывает $2 | ||||
воспитываете $2 | воспитываете $2 | ||||
воспитываетесь $2 | воспитываетесь $2 | ||||
делячествах $2 | делячествах $2 | ||||
делячеством $2 | делячеством $2 | ||||
делящей $1 | делящей $1 | ||||
делящейся $1 | |||||
делящийся $1 | делящийся $1 | ||||
делящими $1 | делящими $1 | ||||
делящимся $1 | делящимся $1 | ||||
детализированной $4 | детализированной $4 | ||||
детализированному $4 | детализированному $4 | ||||
детализированный $4 | детализированный $4 | ||||
детализированным $4 | |||||
деталировка $4 | деталировка $4 | ||||
деталировкам $4 | деталировкам $4 | ||||
деталировками $4 | деталировками $4 | ||||
заверша $3 | заверша $3 | ||||
завершай $3 | завершай $3 | ||||
завершайся $3 | завершайся $3 | ||||
завершайте $3 | |||||
завершал $3 | завершал $3 | ||||
завершала $3 | завершала $3 | ||||
завершали $3 | завершали $3 | ||||
зашкаливала $2 | зашкаливала $2 | ||||
зашкаливало $2 | зашкаливало $2 | ||||
зашкаливающей $2 | зашкаливающей $2 | ||||
зашкаливающие $2 | |||||
зашкуренная $2 | зашкуренная $2 | ||||
зашкуренного $2 | зашкуренного $2 | ||||
зашкуренное $2 | зашкуренное $2 | ||||
зомбаря $3 | зомбаря $3 | ||||
зомберов $1 | зомберов $1 | ||||
зомбирование $2 | зомбирование $2 | ||||
зомбированию $2 | |||||
зомбирования $2 | зомбирования $2 | ||||
зомбированности $2 | зомбированности $2 | ||||
зомбированы $2 | зомбированы $2 | ||||
индексированный $3 | индексированный $3 | ||||
индексированных $3 | индексированных $3 | ||||
индексируемый $3 | индексируемый $3 | ||||
индексируемых $3 | |||||
индексна $1 | индексна $1 | ||||
индексная $1 | индексная $1 | ||||
индекснее $1 | индекснее $1 | ||||
кодеровка $3 | кодеровка $3 | ||||
кодеровке $3 | кодеровке $3 | ||||
кодерская $1 | кодерская $1 | ||||
кодеру $1 | |||||
кодеры $1 | кодеры $1 | ||||
кодигорически $4 | кодигорически $4 | ||||
кодировал $2 | кодировал $2 | ||||
кодировки $3 | кодировки $3 | ||||
кодировку $3 | кодировку $3 | ||||
кодируемое $2 | кодируемое $2 | ||||
кодируемый $2 | |||||
кодирует $2 | кодирует $2 | ||||
кодируется $2 | кодируется $2 | ||||
кодируют $2 | кодируют $2 | ||||
лицензированный $3 | лицензированный $3 | ||||
лицензированных $3 | лицензированных $3 | ||||
лицензируемой $3 | лицензируемой $3 | ||||
лицензируемый $3 | |||||
лицензиям $2 | лицензиям $2 | ||||
лицензиями $2 | лицензиями $2 | ||||
лицензиях $2 | лицензиях $2 | ||||
микроманометру $4 | микроманометру $4 | ||||
микроманометры $4 | микроманометры $4 | ||||
микромашинах $4 | микромашинах $4 | ||||
микроменеджментом $3 | |||||
микромер $3 | микромер $3 | ||||
микромера $3 | микромера $3 | ||||
микромере $3 | микромере $3 | ||||
многоколосной $4 | многоколосной $4 | ||||
многокомпонентная $5 | многокомпонентная $5 | ||||
многокомпонентного $5 | многокомпонентного $5 | ||||
многокомпонентной $5 | |||||
многокомпонентный $5 | многокомпонентный $5 | ||||
многоконечную $4 | многоконечную $4 | ||||
многократна $3 | многократна $3 | ||||
несанкционированных $5 | несанкционированных $5 | ||||
несбалансированности $4 | несбалансированности $4 | ||||
несбалансированный $4 | несбалансированный $4 | ||||
несбалансированным $4 | |||||
несбалансированными $4 | несбалансированными $4 | ||||
несбывшаяся $2 | несбывшаяся $2 | ||||
несбывшегося $2 | несбывшегося $2 | ||||
несостоятельностях $4 | несостоятельностях $4 | ||||
несостоятельны $4 | несостоятельны $4 | ||||
несострадание $4 | несострадание $4 | ||||
несостыковка $4 | |||||
несостыковок $4 | |||||
несотворенному $4 | несотворенному $4 | ||||
несотворенный $4 | несотворенный $4 | ||||
несохраненная $4 | несохраненная $4 | ||||
низкоконтрастными $4 | низкоконтрастными $4 | ||||
низкоконтрастных $4 | низкоконтрастных $4 | ||||
низколатентной $4 | низколатентной $4 | ||||
низколатентный $4 | |||||
низколегированная $4 | низколегированная $4 | ||||
низколегированнее $4 | низколегированнее $4 | ||||
низколегированней $4 | низколегированней $4 | ||||
обеспечивавшуюся $3 | обеспечивавшуюся $3 | ||||
обеспечиваем $3 | обеспечиваем $3 | ||||
обеспечиваемая $3 | обеспечиваемая $3 | ||||
обеспечиваемого $3 | |||||
обеспечиваемое $3 | обеспечиваемое $3 | ||||
обеспечиваемому $3 | обеспечиваемому $3 | ||||
обеспечиваемся $3 | обеспечиваемся $3 | ||||
обозником $2 | обозником $2 | ||||
обозновещевого $6 | обозновещевого $6 | ||||
обозрев $3 | обозрев $3 | ||||
обозреваете $4 | |||||
обозревал $4 | обозревал $4 | ||||
обозревание $4 | обозревание $4 | ||||
обозревании $4 | обозревании $4 | ||||
опустошителю $4 | опустошителю $4 | ||||
опустошителя $4 | опустошителя $4 | ||||
опустошить $4 | опустошить $4 | ||||
опустошиться $4 | |||||
опустошишь $4 | опустошишь $4 | ||||
опустошишься $4 | опустошишься $4 | ||||
опустошу $4 | опустошу $4 | ||||
оскорблюсь $3 | оскорблюсь $3 | ||||
оскорбляй $3 | оскорбляй $3 | ||||
оскорбляйся $3 | оскорбляйся $3 | ||||
оскорбляйте $3 | |||||
оскорблял $3 | оскорблял $3 | ||||
оскорбляла $3 | оскорбляла $3 | ||||
оскорбляли $3 | оскорбляли $3 | ||||
перелистываемой $3 | перелистываемой $3 | ||||
перелистываемых $3 | перелистываемых $3 | ||||
перелистывает $3 | перелистывает $3 | ||||
перелистываете $3 | |||||
перелита $4 | перелита $4 | ||||
перелито $1 | перелито $1 | ||||
перелиты $1 | перелиты $1 | ||||
перепроверялось $5 | перепроверялось $5 | ||||
перепроверят $4 | перепроверят $4 | ||||
перепроверять $5 | перепроверять $5 | ||||
перепроверяют $5 | |||||
перепрограммирование $5 | перепрограммирование $5 | ||||
перепрограммирования $5 | перепрограммирования $5 | ||||
перепрограммированный $5 | перепрограммированный $5 | ||||
письмосекретка $4 | письмосекретка $4 | ||||
письмотелеграмма $5 | письмотелеграмма $5 | ||||
письму $2 | письму $2 | ||||
пита $2 | |||||
питавшаяся $2 | питавшаяся $2 | ||||
питавшегося $2 | питавшегося $2 | ||||
питавшееся $2 | питавшееся $2 | ||||
пошаговая $2 | пошаговая $2 | ||||
пошагового $2 | пошагового $2 | ||||
пошаговое $2 | пошаговое $2 | ||||
пошаговой $2 | |||||
пошаговую $2 | пошаговую $2 | ||||
пошаговые $2 | пошаговые $2 | ||||
пошаговых $2 | пошаговых $2 | ||||
распаляющуюся $3 | распаляющуюся $3 | ||||
распаляя $3 | распаляя $3 | ||||
распар $2 | распар $2 | ||||
распараллеливаемых $4 | |||||
распараллеливания $4 | распараллеливания $4 | ||||
распараллеливаются $4 | распараллеливаются $4 | ||||
распаренная $2 | распаренная $2 | ||||
свинобойцы $3 | свинобойцы $3 | ||||
свинобою $3 | свинобою $3 | ||||
свинобоя $3 | свинобоя $3 | ||||
свинобраз $3 | |||||
свиновода $3 | свиновода $3 | ||||
свиноводе $3 | свиноводе $3 | ||||
свиноводств $3 | свиноводств $3 | ||||
синхронизация $4 | синхронизация $4 | ||||
синхронизированные $4 | синхронизированные $4 | ||||
синхронизированный $4 | синхронизированный $4 | ||||
синхронизированных $4 | |||||
синхронизирующее $4 | синхронизирующее $4 | ||||
синхронизируя $4 | синхронизируя $4 | ||||
синхронизм $3 | синхронизм $3 | ||||
страхкасс $2 | страхкасс $2 | ||||
страхоборца $3 | страхоборца $3 | ||||
страхоборцу $3 | страхоборцу $3 | ||||
страхова $3 | |||||
страховался $3 | страховался $3 | ||||
страховаться $3 | страховаться $3 | ||||
страховая $3 | страховая $3 | ||||
теплопродукция $4 | теплопродукция $4 | ||||
теплопрозрачность $4 | теплопрозрачность $4 | ||||
теплопрозрачный $4 | теплопрозрачный $4 | ||||
теплорассеиватели $4 | |||||
теплорассеивателя $4 | теплорассеивателя $4 | ||||
теплорассеивателями $4 | |||||
теплорассеивающая $4 | теплорассеивающая $4 | ||||
теплорассеивающей $4 | теплорассеивающей $4 | ||||
теплорассеивающими $4 | теплорассеивающими $4 | ||||
труднопреодолимых $6 | труднопреодолимых $6 | ||||
труднопроизносимое $6 | труднопроизносимое $6 | ||||
труднопроизносимые $6 | труднопроизносимые $6 | ||||
труднопроизносимым $6 | |||||
труднопроизносимыми $6 | труднопроизносимыми $6 | ||||
труднопроизносимых $6 | труднопроизносимых $6 | ||||
труднопроходим $5 | труднопроходим $5 | ||||
тунис $2 | тунис $2 | ||||
тунисец $2 | тунисец $2 | ||||
тунисок $2 | тунисок $2 | ||||
туннелирование $3 | |||||
туннелирующими $3 | туннелирующими $3 | ||||
туннель $2 | туннель $2 | ||||
тунца $2 | тунца $2 | ||||
фрагментарны $3 | фрагментарны $3 | ||||
фрагментированного $3 | фрагментированного $3 | ||||
фрагментированном $3 | фрагментированном $3 | ||||
фрагментированную $3 | |||||
фрагментированными $3 | |||||
фрагментированных $3 | фрагментированных $3 | ||||
фрагонара $3 | фрагонара $3 | ||||
фраерами $3 | фраерами $3 | ||||
цветоеде $3 | цветоеде $3 | ||||
цветоеду $3 | цветоеду $3 | ||||
цветоеды $3 | цветоеды $3 | ||||
цветокоррекции $4 | |||||
цветокоррекций $4 | |||||
цветокоррекцию $4 | |||||
цветокоррекция $4 | |||||
цветолож $3 | цветолож $3 | ||||
цветоложа $3 | цветоложа $3 | ||||
цветоложе $3 | цветоложе $3 |
gyötörte $unstressend | gyötörte $unstressend | ||||
ismerve $unstressend | ismerve $unstressend | ||||
fognia $unstressend | fognia $unstressend | ||||
(mint azt látni) $unstressend | |||||
(azt látni) $unstressend | (azt látni) $unstressend | ||||
fontosak $unstressend | fontosak $unstressend | ||||
futni $unstressend | futni $unstressend | ||||
(elmarad attól) ElmAR2Ad_||At:o:l $unstressend | (elmarad attól) ElmAR2Ad_||At:o:l $unstressend | ||||
(szív el) si:v_||El $unstressend | (szív el) si:v_||El $unstressend | ||||
cigit $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 | átlag $unstressend | ||||
(forintba kerülnek) foR2intbA_||kER2ylnEk $unstressend | (forintba kerülnek) foR2intbA_||kER2ylnEk $unstressend | ||||
hozzátette $unstressend | hozzátette $unstressend | ||||
§ s'AkAs | § s'AkAs | ||||
~ tildE | ~ tildE | ||||
° fokjEl | ° fokjEl | ||||
˄ konjunktsio: | |||||
˅ disjunktsio: | |||||
Ft foR2int $unstressend | Ft foR2int $unstressend | ||||
(Ft-tal) foR2int:Al $unstressend | (Ft-tal) foR2int:Al $unstressend | ||||
(ft-ot) foR2intot $unstressend | (ft-ot) foR2intot $unstressend | ||||
nato na:to: | nato na:to: | ||||
(end-of line) u:jS,oR2 | (end-of line) u:jS,oR2 | ||||
$textmode | $textmode | ||||
bacch bahh | |||||
MSZP emeszpé | MSZP emeszpé | ||||
MSZMP emeszempé | MSZMP emeszempé | ||||
SZDSZ eszdéesz | SZDSZ eszdéesz |
// This file is UTF-8 encoded | // 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] | // $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] | // $alt2 change [E] or [O] in the stressed syllable to [e] or [o] | ||||
bypass b'aI||p'as | bypass b'aI||p'as | ||||
byte _^_EN | byte _^_EN | ||||
cabaret $3 $only | cabaret $3 $only | ||||
cameraman k'ame*am,En | |||||
camper $1 | camper $1 | ||||
cancan $2 $only | cancan $2 $only | ||||
carter $1 $only | carter $1 $only | ||||
couscous k,us||k'us | couscous k,us||k'us | ||||
cover $1 | cover $1 | ||||
cowboy k'aw||b'oI | cowboy k'aw||b'oI | ||||
cracker $1 | |||||
cracker k@-*'E:ke@-* | |||||
croissant k@-*uass'an | croissant k@-*uass'an | ||||
cult k'a/:lt $onlys | cult k'a/:lt $onlys | ||||
cyclette sikl'Et: | cyclette sikl'Et: | ||||
designer d,ez'aIne@-* | designer d,ez'aIne@-* | ||||
desktop d'esk||t,Op | desktop d'esk||t,Op | ||||
dessert d,Ess'e@-* $only | dessert d,Ess'e@-* $only | ||||
detective det'Ektiv | |||||
detector $2 | detector $2 | ||||
device dIv'aIs | device dIv'aIs | ||||
devolution devol'uSon | devolution devol'uSon | ||||
guinness g'iness | guinness g'iness | ||||
guardrail g'a@-*d||@-*,Eil | guardrail g'a@-*d||@-*,Eil | ||||
gustibus $1 | gustibus $1 | ||||
habemus $2 $alt | |||||
hacker 'ake@-* | hacker 'ake@-* | ||||
hackeraggio akeR'adZ:o | hackeraggio akeR'adZ:o | ||||
hackerare ake*'a:Re | hackerare ake*'a:Re | ||||
italy $1 | italy $1 | ||||
iter $1 | iter $1 | ||||
jaguar $1 | jaguar $1 | ||||
jingle dZ'ingol | |||||
jaws dZ'O:z | jaws dZ'O:z | ||||
jazz _^_EN | jazz _^_EN | ||||
jeans dZi:ns | jeans dZi:ns | ||||
palace _^_en $only | palace _^_en $only | ||||
papillon papiJ^'on $onlys | papillon papiJ^'on $onlys | ||||
pancake pan_k'eIk | pancake pan_k'eIk | ||||
parquet pa@-*k'E | |||||
partner $1 | partner $1 | ||||
passepartout pas_pa@-*t'u | passepartout pas_pa@-*t'u | ||||
paternoster $3 | paternoster $3 | ||||
scooter sk'utE@-* | scooter sk'utE@-* | ||||
scorpion $1 $onlys | scorpion $1 $onlys | ||||
scotch sk'OtS | scotch sk'OtS | ||||
Scout sk'awt $onlys | |||||
screen sk@-*'i:n | screen sk@-*'i:n | ||||
screenreader sk@-*'i:n||@-*'i:de@-* | screenreader sk@-*'i:n||@-*'i:de@-* | ||||
scuter $1 | scuter $1 | ||||
wafer v'afe@-* | wafer v'afe@-* | ||||
walkman w'Olk||m,En | walkman w'Olk||m,En | ||||
wall _^_EN | wall _^_EN | ||||
Walt _^_EN | |||||
walzer v'altsE@-* | walzer v'altsE@-* | ||||
water v'atE@-* $only | water v'atE@-* $only | ||||
wave _^_EN | wave _^_EN | ||||
wireless _^_EN | wireless _^_EN | ||||
wow w'a:u | wow w'a:u | ||||
writer v@-*'aIte@-* | writer v@-*'aIte@-* | ||||
wurstel vj'u:stel | |||||
würstel vj'u:stel | |||||
yacht j'Ot[ | yacht j'Ot[ | ||||
yahoo _^_EN | yahoo _^_EN | ||||
yahtzee j'Ets:i | yahtzee j'Ets:i | ||||
(ladies and gentlemen) l'eIdIz||and||dZ'Ent@lm@n | (ladies and gentlemen) l'eIdIz||and||dZ'Ent@lm@n | ||||
(nôtre dame) noUt@-*'da:m | (nôtre dame) noUt@-*'da:m | ||||
(question time) kw'estiont'aIm | (question time) kw'estiont'aIm | ||||
(fair play) f,E@-*||pl'Ei | |||||
// Main nouns Dictionary (see also it_listx) | // Main nouns Dictionary (see also it_listx) | ||||
ceca $alt | ceca $alt | ||||
chambery Samber'i | chambery Samber'i | ||||
champs S'amps | champs S'amps | ||||
chelsea tS'Elsi | |||||
chernobyl tS'e@-*nobil | chernobyl tS'e@-*nobil | ||||
chianciano $2 | chianciano $2 | ||||
chicago tSikago | chicago tSikago | ||||
helsinki $1 | helsinki $1 | ||||
hiroshima $3 | hiroshima $3 | ||||
hollywood _^_EN | hollywood _^_EN | ||||
honolulu $3 | |||||
houston hj'uston | houston hj'uston | ||||
huligano $3 | huligano $3 | ||||
iglesias $2 $alt | iglesias $2 $alt | ||||
tavazzano $3 | tavazzano $3 | ||||
teheran t,I_iR'a:n | teheran t,I_iR'a:n | ||||
tennessee t'en:,essi | tennessee t'en:,essi | ||||
tiananmen tienanm'En | |||||
Tienanmen tienanm'En | |||||
teramo $1 | teramo $1 | ||||
ternano $2 | ternano $2 | ||||
tertenia $3 | tertenia $3 | ||||
washington _^_EN | washington _^_EN | ||||
wimbledon $1 | wimbledon $1 | ||||
woodstock _^_EN | woodstock _^_EN | ||||
yellowstone _^_EN | |||||
zaire dza'i:Re | zaire dza'i:Re | ||||
zanzibar $1 | zanzibar $1 | ||||
zigano ts-ig'a/no | zigano ts-ig'a/no | ||||
bearzot bea*_dz'Ot $only | bearzot bea*_dz'Ot $only | ||||
beatle b'i:tol | beatle b'i:tol | ||||
beccaria $3 | beccaria $3 | ||||
beckenbauer $3 | |||||
beethoven be:t'o:ven | beethoven be:t'o:ven | ||||
benetton $3 | benetton $3 | ||||
benjamin $1 | benjamin $1 | ||||
bentegodi $3 $alt2 | |||||
bergomi $1 | bergomi $1 | ||||
behringer b'e:RiNg,E@-* | behringer b'e:RiNg,E@-* | ||||
bertold $alt | bertold $alt | ||||
biagini $2 | biagini $2 | ||||
björk b,i'O@-*k | björk b,i'O@-*k | ||||
boeing b'O:ing | boeing b'O:ing | ||||
bougot _^_FR | |||||
brandon b@-*'Endon | brandon b@-*'Endon | ||||
brian b@-*'aian | brian b@-*'aian | ||||
brigitte b@-*iZ'it[ | brigitte b@-*iZ'it[ | ||||
casula $2 | casula $2 | ||||
catherine _^_EN | catherine _^_EN | ||||
catia k'a:tia | catia k'a:tia | ||||
causio k'awzio | |||||
celentano $3 | celentano $3 | ||||
cesare $1 | cesare $1 | ||||
chaplin tS'apliN | chaplin tS'apliN | ||||
charriere SaR*j'e* | charriere SaR*j'e* | ||||
chesterfield tS'Este@-*fild | chesterfield tS'Este@-*fild | ||||
chevalier _^_FR | chevalier _^_FR | ||||
cheyenne tSej'En | |||||
chopin Sop'EN | chopin Sop'EN | ||||
christensen $1 | christensen $1 | ||||
christie k@-*'istI | christie k@-*'istI | ||||
corrias $2 | corrias $2 | ||||
cristofor $2 | cristofor $2 | ||||
cupido $2 | cupido $2 | ||||
cyndi s'indi | |||||
cyrille siR'il | |||||
danilo $2 | danilo $2 | ||||
danny d'En:I | danny d'En:I | ||||
davidson $1 | davidson $1 | ||||
debor $1 $alt | debor $1 $alt | ||||
deborah $1 $alt2 | deborah $1 $alt2 | ||||
deidda de'i:d:a | deidda de'i:d:a | ||||
delogu $2 | |||||
delrio del||@-*'io/ | delrio del||@-*'io/ | ||||
deschamps deS'amp | |||||
dessolis $2 $onlys | dessolis $2 $onlys | ||||
diaz d'iats $only | diaz d'iats $only | ||||
Dickinson $1 | Dickinson $1 | ||||
ericsson $1 $alt | ericsson $1 $alt | ||||
erika $1 | erika $1 | ||||
esposit $2 | esposit $2 | ||||
eastwood _^_en | |||||
ettore $1 $alt | ettore $1 $alt | ||||
euclide $3 | euclide $3 | ||||
eugenia $alt | eugenia $alt | ||||
ferlaino fe@-*la'i:no | ferlaino fe@-*la'i:no | ||||
ferrer $2 $alt2 | ferrer $2 $alt2 | ||||
fischer f'iSE@-* $onlys | fischer f'iSE@-* $onlys | ||||
fletcher fl'EtS:e@-* | |||||
florencio fl,OR'ensIo | florencio fl,OR'ensIo | ||||
françois f@-*,a/NsU'a | françois f@-*,a/NsU'a | ||||
francisco f@-*ans'isko | francisco f@-*ans'isko | ||||
frederic $1 | frederic $1 | ||||
freud f@-*'Oid $only | freud f@-*'Oid $only | ||||
fujitsu fudZ'itsu | fujitsu fudZ'itsu | ||||
gaber $1 $onlys | |||||
gandolfi $alt | gandolfi $alt | ||||
garcía _^_ES | garcía _^_ES | ||||
gargiul $2 | gargiul $2 | ||||
gibson g'Ibson | gibson g'Ibson | ||||
giordano $2 | giordano $2 | ||||
giorgia $1 | giorgia $1 | ||||
giorgini $2 | |||||
giovagnol $3 | giovagnol $3 | ||||
girolamo $2 | girolamo $2 | ||||
gorbaciov $1 | gorbaciov $1 | ||||
grace g@-*'Eis $only | grace g@-*'Eis $only | ||||
gray g@-*'eI | gray g@-*'eI | ||||
gregoria $2 $alt2 | gregoria $2 $alt2 | ||||
grisostomo $2 | |||||
gruber $1 $only | |||||
halen 'alen | halen 'alen | ||||
halloween 'allow2in | halloween 'allow2in | ||||
harrison h'ER*izon | harrison h'ER*izon | ||||
Jaqueline Z,ak_l'i:n | Jaqueline Z,ak_l'i:n | ||||
james _^_EN | james _^_EN | ||||
jane _^_EN | jane _^_EN | ||||
jannacci jan:'atS:i | |||||
jarno j'a:@-*no | jarno j'a:@-*no | ||||
jefferson $1 | jefferson $1 | ||||
jennifer $1 | jennifer $1 | ||||
kennedy $1 $alt | kennedy $1 $alt | ||||
kinder $1 $onlys | kinder $1 $onlys | ||||
landolf $alt | landolf $alt | ||||
lauper _^_EN | |||||
lawrence l'oRens | lawrence l'oRens | ||||
laurenzi $alt | laurenzi $alt | ||||
lee _^_en $capital | lee _^_en $capital | ||||
luigi lu'i:dZI | luigi lu'i:dZI | ||||
luigia lU'i:dZa | luigia lU'i:dZa | ||||
luther $1 $only | luther $1 $only | ||||
maneskin $1 $onlys | |||||
manolo ma/n'Olo | manolo ma/n'Olo | ||||
manuel $1 $only | manuel $1 $only | ||||
Marcel ma@-*s'El | Marcel ma@-*s'El | ||||
michelangel $3 | michelangel $3 | ||||
michelle m,iS'el $only | michelle m,iS'el $only | ||||
miguel mig'E:l | miguel mig'E:l | ||||
mihajlovic mi_'ajlovitS | |||||
mike _^_EN | mike _^_EN | ||||
mikolaj mik,Ol'a:j | mikolaj mik,Ol'a:j | ||||
misseri $2 | misseri $2 | ||||
ron @-*'On $only | ron @-*'On $only | ||||
rosalia $3 | rosalia $3 | ||||
Rosemarie @-*'ozm,a*i | Rosemarie @-*'ozm,a*i | ||||
rossetti @-*os:'ett:i | |||||
rottweiler @-*otv'ajle@-* | |||||
roosevelt @-*'u:z|v,Elt | |||||
ryanair @-*'aIaneR | ryanair @-*'aIaneR | ||||
sànchez s'antSets | sànchez s'antSets | ||||
sanchez s'antSets | |||||
sánchez s'antSets | sánchez s'antSets | ||||
santalucia santa||lutS'ia | |||||
santamaria s,anta||maR'ia | santamaria s,anta||maR'ia | ||||
saša s'aSa/ | saša s'aSa/ | ||||
saddam $2 | saddam $2 | ||||
sharazad $3 | sharazad $3 | ||||
shaun S'O:n $only | shaun S'O:n $only | ||||
simon s'aImon $onlys | simon s'aImon $onlys | ||||
sioux si'u:ks | |||||
schiffer S'if:e@-* $only | |||||
socrate $1 | socrate $1 | ||||
sofia sof'ia | sofia sof'ia | ||||
sonia $1 $alt2 | sonia $1 $alt2 | ||||
taylor t'EIlo@-* | taylor t'EIlo@-* | ||||
terence t'ERens $onlys | terence t'ERens $onlys | ||||
thatcher t'a/tSe@-* | thatcher t'a/tSe@-* | ||||
theodore t'Eodo@-* | |||||
tiffany $1 | tiffany $1 | ||||
timoteo $2 | timoteo $2 | ||||
tobia $2 | tobia $2 | ||||
vedder $1 $onlys | vedder $1 $onlys | ||||
vermouth v'E@-*mut | vermouth v'E@-*mut | ||||
victor $1 $only | victor $1 $only | ||||
vierchowod vi'E@-*kov,ud | |||||
villeneuve v,iln'e:v | villeneuve v,iln'e:v | ||||
vincent v'inseNt[ $only | vincent v'inseNt[ $only | ||||
vladimir $3 | vladimir $3 | ||||
auguro $1 | auguro $1 | ||||
aumentino aUm'entino | aumentino aUm'entino | ||||
auspicano $1 | auspicano $1 | ||||
avvalorano $3 | |||||
avanzano $2 | avanzano $2 | ||||
avanzino $2 | avanzino $2 | ||||
avvalere $3 | avvalere $3 | ||||
bagnano $1 | bagnano $1 | ||||
ballano $1 | ballano $1 | ||||
ballino $1 | ballino $1 | ||||
balzano $1 | |||||
balzino $1 | balzino $1 | ||||
barino $1 | barino $1 | ||||
barricano $1 | barricano $1 | ||||
dimezzano dim'edz:ano | dimezzano dim'edz:ano | ||||
dimezzino $2 | dimezzino $2 | ||||
dimorano $2 | dimorano $2 | ||||
dimorino $2 | |||||
dimostrano $2 | dimostrano $2 | ||||
dimostrino $2 | dimostrino $2 | ||||
diramano $2 | diramano $2 | ||||
disperino $2 | disperino $2 | ||||
dispiace dispI'a:tSe | dispiace dispI'a:tSe | ||||
dispregia $2 $alt | dispregia $2 $alt | ||||
disputano $1 | |||||
disputino $1 | disputino $1 | ||||
dissemin $2 | dissemin $2 | ||||
dissetano $2 | dissetano $2 | ||||
disturbano $2 | disturbano $2 | ||||
disturbino $2 | disturbino $2 | ||||
divaghino $2 | divaghino $2 | ||||
divampano $2 | |||||
divaricano $2 | divaricano $2 | ||||
diventino $2 | diventino $2 | ||||
divertano $2 | divertano $2 | ||||
dolere $2 | dolere $2 | ||||
domandano $2 | domandano $2 | ||||
domandino $2 | domandino $2 | ||||
domin $1 | |||||
dondolano $1 | dondolano $1 | ||||
donino $1 | donino $1 | ||||
dotano $1 | dotano $1 | ||||
emulino $2 | emulino $2 | ||||
entrano $1 | entrano $1 | ||||
entrino $1 | entrino $1 | ||||
entusiasmano $3 | |||||
enuncino $2 | enuncino $2 | ||||
equivalere $4 | equivalere $4 | ||||
eredit $2 | eredit $2 | ||||
ovviano $1 | ovviano $1 | ||||
ovvino $1 | ovvino $1 | ||||
paghino $1 | paghino $1 | ||||
palesano $2 | |||||
palpano $1 | palpano $1 | ||||
palpita $1 | palpita $1 | ||||
palpitano $1 | palpitano $1 | ||||
permettev $alt2 | permettev $alt2 | ||||
perseguita $2 | perseguita $2 | ||||
perseguitano $2 | perseguitano $2 | ||||
persever $2 | |||||
pervaderti $2 | pervaderti $2 | ||||
pesano $1 | pesano $1 | ||||
pettegol $2 | pettegol $2 | ||||
predichino $1 | predichino $1 | ||||
predici $2 | predici $2 | ||||
predomin $2 | predomin $2 | ||||
prefigurano $3 | |||||
preghino $1 | preghino $1 | ||||
pregia $1 | pregia $1 | ||||
pregiudicano $2 | pregiudicano $2 | ||||
prevedere $3 | prevedere $3 | ||||
previd $2 | previd $2 | ||||
previdero $2 | previdero $2 | ||||
primeggiano $2 | |||||
privatizzino $3 | privatizzino $3 | ||||
privilegia $3 | privilegia $3 | ||||
privilegiano $3 | privilegiano $3 | ||||
reclamano $2 | reclamano $2 | ||||
recludano $2 | recludano $2 | ||||
reclutano $2 | reclutano $2 | ||||
recrimin $2 | |||||
recuper $2 | recuper $2 | ||||
recuperino $2 | recuperino $2 | ||||
regalano $2 | regalano $2 | ||||
sabotano $1 | sabotano $1 | ||||
salpano $1 | salpano $1 | ||||
saltano $1 | saltano $1 | ||||
saltellano $2 $alt | |||||
salutano $2 | salutano $2 | ||||
salvaguardano $3 | salvaguardano $3 | ||||
salvano $1 | salvano $1 | ||||
spaccano $1 | spaccano $1 | ||||
spacchino $1 | spacchino $1 | ||||
spaccino $1 | spaccino $1 | ||||
spalancano $2 | |||||
spalmano $1 | spalmano $1 | ||||
sparano $1 | sparano $1 | ||||
sparecchino $2 | sparecchino $2 | ||||
accadutomi $3 | accadutomi $3 | ||||
accertatene $2 | accertatene $2 | ||||
accertati $2 $atstart | accertati $2 $atstart | ||||
adempiutesi $3 | |||||
affittasi $2 | affittasi $2 | ||||
affrettati $2 $atstart | affrettati $2 $atstart | ||||
aggiornal $2 $alt2 | aggiornal $2 $alt2 | ||||
copriti $1 | copriti $1 | ||||
costituitosi $4 | costituitosi $4 | ||||
creal k@-*'Ea/l | creal k@-*'Ea/l | ||||
daccel $1 | |||||
daccene $1 | daccene $1 | ||||
dacel $1 | dacel $1 | ||||
dagliel $1 | dagliel $1 | ||||
esprimiti $2 | esprimiti $2 | ||||
evolverci $2 | evolverci $2 | ||||
evolversi $2 | evolversi $2 | ||||
faccel $1 | |||||
facendomici fatS'endom,itSi | facendomici fatS'endom,itSi | ||||
fammel $1 | fammel $1 | ||||
fattel f'at:el | fattel f'at:el | ||||
impostaci $2 | impostaci $2 | ||||
impostal $2 | impostal $2 | ||||
impostomi $2 | impostomi $2 | ||||
impostigli $2 | |||||
indirizzati indiRits2:'ati | indirizzati indiRits2:'ati | ||||
indirizziamoci indiRi_tsj'amotSI // $5 | indirizziamoci indiRi_tsj'amotSI // $5 | ||||
indirizziamol indiRi_tsj'amol // $5 | indirizziamol indiRi_tsj'amol // $5 | ||||
portamici $1 | portamici $1 | ||||
portatel $2 | portatel $2 | ||||
posizionati $4 $atstart | posizionati $4 $atstart | ||||
resasi $1 | |||||
presentaci $2 | presentaci $2 | ||||
privaci $1 | privaci $1 | ||||
procurati $2 $atstart | procurati $2 $atstart | ||||
promessomi $2 | promessomi $2 | ||||
proponiti $2 | proponiti $2 | ||||
proteggiti $2 $alt2 | proteggiti $2 $alt2 | ||||
protrattosi $2 | |||||
pulisciti $2 | pulisciti $2 | ||||
raddrizzarl @-*ad:@-*its2:'a@-*l | raddrizzarl @-*ad:@-*its2:'a@-*l | ||||
rafforzal $2 | rafforzal $2 | ||||
riformatisi $3 | riformatisi $3 | ||||
riformatosi $3 | riformatosi $3 | ||||
rincorrerl $2 | rincorrerl $2 | ||||
ripercuotersi $4 | |||||
riportal $2 | riportal $2 | ||||
ripresosi $2 | ripresosi $2 | ||||
risparmiaci $2 | risparmiaci $2 | ||||
sposatisi $2 | sposatisi $2 | ||||
stabilitosi $3 | stabilitosi $3 | ||||
stampal $1 | stampal $1 | ||||
succedutesi $3 | |||||
suggeritomi $3 | suggeritomi $3 | ||||
svegliati $1 $atstart | svegliati $1 $atstart | ||||
svelaci $1 | svelaci $1 | ||||
svuotal $2 $alt2 | svuotal $2 $alt2 | ||||
tastal $1 | tastal $1 | ||||
tenutasi $2 | tenutasi $2 | ||||
tenutesi $2 | |||||
tenutisi $2 | tenutisi $2 | ||||
tenutosi $2 | tenutosi $2 | ||||
tornaci $1 | tornaci $1 | ||||
tornatene $1 | tornatene $1 | ||||
trasferirvisi $3 | trasferirvisi $3 | ||||
trasferitosi $3 | |||||
trattieniti $2 | trattieniti $2 | ||||
trattasi $1 | trattasi $1 | ||||
tuffati $1 $atstart | tuffati $1 $atstart |
achei $2 | achei $2 | ||||
achemene $2 | achemene $2 | ||||
acheni $alt | acheni $alt | ||||
achillea $2 | |||||
achillee $2 | |||||
achillea $3 | |||||
achillee $3 | |||||
acin $1 | acin $1 | ||||
acquafredd $alt2 | acquafredd $alt2 | ||||
acquaragia a/k:ua_R'adZa/ | acquaragia a/k:ua_R'adZa/ | ||||
agord $1 | agord $1 | ||||
agost $alt2 | agost $alt2 | ||||
agrifogli $alt | agrifogli $alt | ||||
agronomi $2 | |||||
agronom $2 | |||||
agrosistem $alt | agrosistem $alt | ||||
aikido $2 | aikido $2 | ||||
ailoche $alt | ailoche $alt | ||||
angol $1 | angol $1 | ||||
angor $1 | angor $1 | ||||
angoscia ang'OSa | angoscia ang'OSa | ||||
angustia $2 | |||||
angustie $2 | angustie $2 | ||||
anidr $1 | anidr $1 | ||||
anidrid anid@-*'Id | anidrid anid@-*'Id | ||||
asol $1 | asol $1 | ||||
asparag $2 | asparag $2 | ||||
asparagine $4 | asparagine $4 | ||||
aspecifici $3 | |||||
aspett $alt | aspett $alt | ||||
assaggini $3 | assaggini $3 | ||||
assedi $alt | assedi $alt | ||||
canterellio $4 | canterellio $4 | ||||
cantoria $3 | cantoria $3 | ||||
canzoncine $3 | canzoncine $3 | ||||
caorle $1 | |||||
capannori $2 | capannori $2 | ||||
capell $alt2 | capell $alt2 | ||||
capezzal kapets:'al | |||||
capifila $3 | capifila $3 | ||||
capiner $alt2 | capiner $alt2 | ||||
capocchia $alt | capocchia $alt | ||||
coprolalia $4 | coprolalia $4 | ||||
copt $alt | copt $alt | ||||
copti $alt | copti $alt | ||||
cordami $2 | |||||
cordenons $3 $alt | cordenons $3 $alt | ||||
cordob $1 $alt2 | cordob $1 $alt2 | ||||
cordogli $alt | cordogli $alt | ||||
domandone $3 | domandone $3 | ||||
domenic $alt2 | domenic $alt2 | ||||
domicili $3 | domicili $3 | ||||
domini $2 | |||||
domino $1 | |||||
domusnovas $alt | domusnovas $alt | ||||
don $alt2 | don $alt2 | ||||
dondolio $3 | dondolio $3 | ||||
ecate $1 $alt | ecate $1 $alt | ||||
eccentric $alt | eccentric $alt | ||||
ecceter $2 $alt | ecceter $2 $alt | ||||
Ecchimosi $2 | |||||
echo 'e:ko | echo 'e:ko | ||||
economy $2 | economy $2 | ||||
ecosistem $alt | ecosistem $alt | ||||
ferreo $1 | ferreo $1 | ||||
ferrovia $3 | ferrovia $3 | ||||
fes $alt | fes $alt | ||||
festicciol festitS:Ol | |||||
festival $1 | festival $1 | ||||
fet $alt | fet $alt | ||||
fettuccine $3 | fettuccine $3 | ||||
idrovor $2 | idrovor $2 | ||||
iempsale $1 $alt | iempsale $1 $alt | ||||
ifigenia $4 | ifigenia $4 | ||||
ifit $1 | |||||
ignifughe $2 | |||||
ignifughi $2 | |||||
ignifug $2 | |||||
ignitor $1 | ignitor $1 | ||||
ignot $alt | ignot $alt | ||||
ileo $1 | ileo $1 | ||||
jesol $alt | jesol $alt | ||||
joppol $alt | joppol $alt | ||||
juazeir $1 | juazeir $1 | ||||
juta j'uta | |||||
juventin juvent'in | juventin juvent'in | ||||
kairos $2 | kairos $2 | ||||
kampuchea $alt2 | kampuchea $alt2 | ||||
scherm $alt2 | scherm $alt2 | ||||
schern $alt2 | schern $alt2 | ||||
scherz $alt2 | scherz $alt2 | ||||
schettin $1 $alt2 | |||||
schiaccine $2 | |||||
schiribizz skiRib'its2: | schiribizz skiRib'its2: | ||||
schivenoglia $alt | schivenoglia $alt | ||||
schizofrenia $4 | schizofrenia $4 | ||||
schizoid skits'ojd | schizoid skits'ojd | ||||
schizzati skits2:'ati | schizzati skits2:'ati | ||||
sciabol $1 | sciabol $1 | ||||
sciliar $3 | |||||
sciabordio Sabo@-*d'i:o | |||||
scioper $1 | scioper $1 | ||||
sciovia $2 | sciovia $2 | ||||
sclerodermia $4 | sclerodermia $4 | ||||
terranov $alt | terranov $alt | ||||
terremot $alt | terremot $alt | ||||
terren $alt2 | terren $alt2 | ||||
terreo $1 | |||||
terzogenit $3 | terzogenit $3 | ||||
teschi $alt | teschi $alt | ||||
teser $1 | teser $1 |
// Italian translation rules | // Italian translation rules | ||||
// This file is UTF-8 encoded | // 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 | // letter groups | ||||
// A any vowel | // A any vowel | ||||
// C any consonant | // C any consonant | ||||
_ri) scola (L07_ sk'ola | _ri) scola (L07_ sk'ola | ||||
_) stacca (L07_ st'ak:a | _) stacca (L07_ st'ak:a | ||||
_) sazia (L07_ s'atsja | _) sazia (L07_ s'atsja | ||||
_) scuoter (L04_ sku'ote@-* | |||||
ri) scuoter (L04_ sku'ote@-* | |||||
L02) sei (_ _s'Ej // numbers | L02) sei (_ _s'Ej // numbers | ||||
.group t | .group t |
_ar) c (adią_ k | _ar) c (adią_ k | ||||
_ar) c (adię_ k | _ar) c (adię_ k | ||||
_) c (alend k | _) c (alend k | ||||
cal (l kO | |||||
cal (lA ka | |||||
c (alv k | |||||
caly (ps kali | caly (ps kali | ||||
_) ca (m kE | |||||
_) c (amembert ka | |||||
_) c (an k | |||||
cose) c (ans 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 | _) c (arv k | ||||
casc kask | casc kask | ||||
c (at_ k | |||||
c (ata_ k | |||||
c (atami_ k | c (atami_ k | ||||
c (atem_ k | c (atem_ k | ||||
c (ato_ k | c (ato_ k | ||||
skj (A S | skj (A S | ||||
.group sc | .group sc | ||||
sch S | |||||
pa) sch (a sx | pa) sch (a sx | ||||
sch (abA_ sx | sch (abA_ sx | ||||
sch (ab_ sx | sch (ab_ sx | ||||
.group th | .group th | ||||
_e) th (anak t | _e) th (anak t | ||||
_) the (_ dE | _) the (_ dE | ||||
th s | |||||
th (ie_ s; | th (ie_ s; | ||||
_) th t | _) th t | ||||
_) thank fENk | _) thank fENk |
а $u // and | а $u // and | ||||
и I $u // and | и I $u // and | ||||
или $u | или $u | ||||
при $u | |||||
при $atend | |||||
или $atend // stressed at the end | или $atend // stressed at the end | ||||
ибо $u $pause // for | ибо $u $pause // for | ||||
но $u $pause // but | но $u $pause // but | ||||
при $u | |||||
при $atend | |||||
хотя $2 $pause // although | хотя $2 $pause // although | ||||
чтобы $pause // in order that | чтобы $pause // in order that | ||||
(чему-то) tS;im'utV | (чему-то) tS;im'utV | ||||
(что б) St'op | (что б) St'op | ||||
(что ли) St'ol;i | (что ли) St'ol;i | ||||
?3 (что ли) St'ol^i | |||||
(что ж) St'oS | (что ж) St'oS | ||||
(что же) St'oZy | (что же) St'oZy | ||||
сша sE#SE#'A |
_мое) г (о_ v | _мое) г (о_ v | ||||
_намно) г (о_ g | _намно) г (о_ g | ||||
_ненамно) г (о_ g | _ненамно) г (о_ g | ||||
_примно) г (о_ g | |||||
(некое) г (о v | |||||
_убо) г (о_ g | _убо) г (о_ g | ||||
_настро) г (о_ g | _настро) г (о_ g | ||||
_нестро) г (о_ g | _нестро) г (о_ g | ||||
_недоро) г (о_ g | _недоро) г (о_ g | ||||
_занедоро) г (о_ g | _занедоро) г (о_ g | ||||
_немно) г (о_ g | _немно) г (о_ g | ||||
_примно) г (о_ g | |||||
_се) г (о v | _се) г (о v | ||||
_страте) г (о_ g // stratego board game | _страте) г (о_ g // stratego board game | ||||
_стро) г (о g | _стро) г (о g | ||||
д (B d; | д (B d; | ||||
д (Y d; | д (Y d; | ||||
д (_ t | д (_ t | ||||
д (вк- t | |||||
д (вк t | |||||
д (дY d; | д (дY d; | ||||
д (зY d; | д (зY d; | ||||
д (к t | д (к t | ||||
д (х t | д (х t | ||||
д (хкY t | д (хкY t | ||||
д (ш t | д (ш t | ||||
д (ч t | |||||
д (ц t | д (ц t | ||||
д (ч t | |||||
д (ь_ t; | д (ь_ t; | ||||
д (ьк t; | д (ьк t; | ||||
_бан) д (жо_ // silent д (непроизносимая д) | _бан) д (жо_ // silent д (непроизносимая д) | ||||
_мо) де (лир dE% | _мо) де (лир dE% | ||||
мо) де (льер dE% | мо) де (льер dE% | ||||
мо) де (лист dE% | мо) де (лист dE% | ||||
ше) де (вр dE | |||||
.group е | .group е | ||||
е e | е e | ||||
м (пY m; | м (пY m; | ||||
м (фY m; | м (фY m; | ||||
м (ффY m; | м (ффY m; | ||||
майоне (з mVjin'E | |||||
мене (дж mEnE# | |||||
майоне (з mVjin'E | |||||
.group н | .group н | ||||
н n | н n | ||||
_клар) не (т nE | _клар) не (т nE | ||||
клар) не (тист nE% | клар) не (тист nE% | ||||
э) не (рг nE | э) не (рг nE | ||||
н (_ n_ | н (_ n_ | ||||
.group о | .group о | ||||
с (щ s;s; | с (щ s;s; | ||||
сь (G z; | сь (G z; | ||||
.group т | .group т | ||||
т t | т t | ||||
Y) тс ts | Y) тс ts | ||||
т (нB t; | т (нB t; | ||||
т (нY t; | т (нY t; | ||||
т (сY t; | т (сY t; | ||||
т (тY t; | |||||
тьс (я ts | |||||
т (тY t; | |||||
тс (я ts | |||||
тьс (я ,ts | |||||
с) т (н // Silent t(Непроизносимая т) | с) т (н // Silent t(Непроизносимая т) | ||||
счас) т (лив // silent t | счас) т (лив // silent t | ||||
бак) те (р tE% // бактериальный, антибактериальный, ... | бак) те (р tE% // бактериальный, антибактериальный, ... | ||||
аль) те (рнатив tE# // альтернатива, альтернативный, альтернатив... | аль) те (рнатив tE# // альтернатива, альтернативный, альтернатив... | ||||
_ан) те (нн tE // антенна, антенны, антенн... | _ан) те (нн tE // антенна, антенны, антенн... | ||||
_кон) те (н tE // контент, контента, контенту... | _кон) те (н tE // контент, контента, контенту... | ||||
прин) те (р tV# // принтер, принтера, принтеров... | |||||
прин) те (р tE% // принтер, принтера, принтеров... | |||||
_пре) те (нз tE | _пре) те (нз tE | ||||
роу) те (р tV# // роутер, роутэр, router... | |||||
роу) те (р tE% // роутер, роутэр, router... | |||||
ин) те (рактив tE# // интерактив, интерактивный... | ин) те (рактив tE# // интерактив, интерактивный... | ||||
ин) те (рC tE% // интернет, интернационал, ... ?????????? | ин) те (рC tE% // интернет, интернационал, ... ?????????? | ||||
ин) те (рпункт tE# // интерпункт, интерпункта... | ин) те (рпункт tE# // интерпункт, интерпункта... | ||||
ин) терфе (йс tE#rf'E2 // интерфейс, интерфейса, ... ?????????? | ин) терфе (йс tE#rf'E2 // интерфейс, интерфейса, ... ?????????? | ||||
компью) те (р tO; | |||||
компью) те (р tE% | |||||
.group у | .group у | ||||
у u | у u | ||||
скворе)ч (н S | скворе)ч (н S | ||||
ску) ч (н S | ску) ч (н S | ||||
_ни) ч (то_ S | _ни) ч (то_ S | ||||
наро) ч (но S | |||||
никити) ч (н S | никити) ч (н S | ||||
ильини) ч (н S | ильини) ч (н S | ||||
подсве) ч (н S | |||||
савви) ч (н S | савви) ч (н S | ||||
_) ч (то S | _) ч (то S | ||||
яи) ч (ни S | яи) ч (ни S | ||||
.group ё | .group ё | ||||
ё '8 | ё '8 | ||||
A) ё 'j8 | |||||
?2 A) ё 'j8 | ?2 A) ё 'j8 | ||||
_) ё 'j8 | _) ё 'j8 | ||||
ж) ё 'O | ж) ё 'O |
// 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 | |||||
// 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 | |||||
and sets default values for "phonemes", "dictionary" and other | and sets default values for "phonemes", "dictionary" and other | ||||
attributes. | 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) | phonetic features of the voice and it can be used as a [...+variant](../src/espeak-ng.1.ronn) | ||||
option for any language. | option for any language. | ||||
name Tigrinya | |||||
language ti | |||||
maintainer Biniam Gebremichael <[email protected]> | |||||
status testing |
//==================================================== | |||||
// 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 |
phonemetable sw base1 | phonemetable sw base1 | ||||
include ph_swahili | include ph_swahili | ||||
phonemetable ti base1 | |||||
include ph_tigrinya | |||||
phonemetable tn base1 | phonemetable tn base1 | ||||
include ph_setswana | include ph_setswana | ||||
static const char consonant_types[16] = { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 }; | 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; | stressflags = tr->langopts.stress_flags; | ||||
if (dictionary_flags != NULL) | if (dictionary_flags != NULL) | ||||
*word_end = 'e'; | *word_end = 'e'; | ||||
} | } | ||||
i = word_end - word; | i = word_end - word; | ||||
if (i >= N_WORD_BYTES) i = N_WORD_BYTES-1; | |||||
if (word_copy != NULL) { | if (word_copy != NULL) { | ||||
memcpy(word_copy, word, i); | memcpy(word_copy, word, i); |
if (c2 != '1') { | if (c2 != '1') { | ||||
// a list of punctuation characters to be spoken, terminated by space | // a list of punctuation characters to be spoken, terminated by space | ||||
j = 0; | j = 0; | ||||
while (!Eof() && !iswspace(c2)) { | |||||
while (!Eof() && !iswspace(c2) && (j < N_PUNCTLIST-1)) { | |||||
option_punctlist[j++] = c2; | option_punctlist[j++] = c2; | ||||
c2 = GetC(); | c2 = GetC(); | ||||
buf[ix++] = ' '; | buf[ix++] = ' '; |
if ((f_in = fopen(buf, "rb")) == NULL) | if ((f_in = fopen(buf, "rb")) == NULL) | ||||
return create_file_error_context(context, errno, buf); | return create_file_error_context(context, errno, buf); | ||||
if (*ptr != NULL) | |||||
if (*ptr != NULL) { | |||||
free(*ptr); | free(*ptr); | ||||
*ptr = NULL; | |||||
} | |||||
if (length == 0) { | |||||
*ptr = NULL; | |||||
return 0; | |||||
} | |||||
if ((*ptr = malloc(length)) == NULL) { | if ((*ptr = malloc(length)) == NULL) { | ||||
fclose(f_in); | fclose(f_in); | ||||
int error = errno; | int error = errno; | ||||
fclose(f_in); | fclose(f_in); | ||||
free(*ptr); | free(*ptr); | ||||
*ptr = NULL; | |||||
return create_file_error_context(context, error, buf); | return create_file_error_context(context, error, buf); | ||||
} | } | ||||
// read the version number and sample rate from the first 8 bytes of phondata | // read the version number and sample rate from the first 8 bytes of phondata | ||||
version = 0; // bytes 0-3, version number | version = 0; // bytes 0-3, version number | ||||
rate = 0; // bytes 4-7, sample rate | 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) | if (version != version_phdata) |
if (dict_flags & FLAG_SPELLWORD) { | if (dict_flags & FLAG_SPELLWORD) { | ||||
// redo the word, speaking single letters | // redo the word, speaking single letters | ||||
for (pw = word; *pw != ' ';) { | for (pw = word; *pw != ' ';) { | ||||
memset(number_buf, 0, sizeof(number_buf)); | |||||
memset(number_buf, ' ', 9); | memset(number_buf, ' ', 9); | ||||
nx = utf8_in(&c_temp, pw); | nx = utf8_in(&c_temp, pw); | ||||
memcpy(&number_buf[2], pw, nx); | memcpy(&number_buf[2], pw, nx); |
int TranslateWord(Translator *tr, char *word1, WORD_TAB *wtab, char *word_out); | int TranslateWord(Translator *tr, char *word1, WORD_TAB *wtab, char *word_out); | ||||
void TranslateClause(Translator *tr, int *tone, char **voice_change); | 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); | void SetVoiceStack(espeak_VOICE *v, const char *variant_name); | ||||
MAKE_MEM_UNDEFINED(&voice_languages, sizeof(voice_languages)); | MAKE_MEM_UNDEFINED(&voice_languages, sizeof(voice_languages)); | ||||
} | } | ||||
if ((vname == NULL || vname[0] == 0) && !(control & 8)) { | |||||
return NULL; | |||||
} | |||||
strncpy0(voicename, vname, sizeof(voicename)); | strncpy0(voicename, vname, sizeof(voicename)); | ||||
if (control & 0x10) { | if (control & 0x10) { | ||||
strcpy(buf, vname); | strcpy(buf, vname); | ||||
if (!tone_only) { | if (!tone_only) { | ||||
if (!!(control & 8/*compiling phonemes*/)) { | 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); | fprintf(stderr, "Unknown phoneme table: '%s'\n", phonemes_name); | ||||
ix = 0; | ix = 0; | ||||
} | } |
if (wvoice == NULL) | if (wvoice == NULL) | ||||
return; | return; | ||||
int x; | |||||
int x = 0; | |||||
int ix; | int ix; | ||||
static int Flutter_ix = 0; | static int Flutter_ix = 0; | ||||
// advance the pitch | // advance the pitch | ||||
wdata.pitch_ix += wdata.pitch_inc; | wdata.pitch_ix += wdata.pitch_inc; | ||||
if ((ix = wdata.pitch_ix>>8) > 127) ix = 127; | 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; | wdata.pitch = (x>>8) + wdata.pitch_base; | ||||
if(const_f0) | if(const_f0) | ||||
wdata.pitch = (const_f0<<12); | wdata.pitch = (const_f0<<12); | ||||
if (wdata.pitch < 102400) | if (wdata.pitch < 102400) | ||||
wdata.pitch = 102400; // min pitch, 25 Hz (25 << 12) | wdata.pitch = 102400; // min pitch, 25 Hz (25 << 12) | ||||
static bool resume = false; | static bool resume = false; | ||||
static int echo_complete = 0; | static int echo_complete = 0; | ||||
if (wdata.pitch < 102400) | |||||
wdata.pitch = 102400; // min pitch, 25 Hz (25 << 12) | |||||
while (out_ptr < out_end) { | while (out_ptr < out_end) { | ||||
if (WcmdqUsed() <= 0) { | if (WcmdqUsed() <= 0) { | ||||
if (echo_complete > 0) { | if (echo_complete > 0) { |
shell_test(translate) | shell_test(translate) | ||||
shell_test(variants) | shell_test(variants) | ||||
shell_test(voices) | shell_test(voices) | ||||
shell_test(crash) | |||||
# shell_test(windows-data) | # shell_test(windows-data) | ||||
# shell_test(windows-installer) | # shell_test(windows-installer) |
#!/bin/sh | #!/bin/sh | ||||
# Test a command for presence and ability to output the sha1 hash of a file | # Test a command for presence and ability to output the sha1 hash of a file | ||||
is_hash() { | 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() { | 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 | # test if MBROLA synthesizer is installed | ||||
fi | fi | ||||
echo "testing ${TEST_LANG} $MESSAGE" | 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 | fi | ||||
} | } | ||||
# Check generated wav file from processed text | # Check generated wav file from processed text | ||||
test_wav () { | 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} \ | 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 | if [ "$MESSAGE" = "Ignore" ] ; then | ||||
diff expected.txt sum.txt || (echo "... ignoring error" && true) | |||||
echo "... ignoring error" | |||||
else | else | ||||
diff expected.txt sum.txt || exit 1 | |||||
exit 1 | |||||
fi | fi | ||||
fi | |||||
} | } | ||||
# Check generated wav file from processed text, where $EXPECTED is grep string | # Check generated wav file from processed text, where $EXPECTED is grep string | ||||
test_wav_grep () { | 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 | # Check generated wav file from list of phonemes | ||||
TEST_LANG=$1 | TEST_LANG=$1 | ||||
EXPECTED=$2 | EXPECTED=$2 | ||||
TEST_TEXT=$3 | TEST_TEXT=$3 | ||||
test_wav $TEST_LANG $EXPECTED "[[$TEST_TEXT]]" | |||||
test_wav $TEST_LANG $EXPECTED "[[$TEST_TEXT]]" | |||||
} | } | ||||
test_replace() { | test_replace() { | ||||
TEST_LANG=$1 | TEST_LANG=$1 | ||||
TEST_TEXT=$2 | TEST_TEXT=$2 | ||||
MESSAGE=$3 | |||||
EXPECTED=$3 | |||||
MESSAGE=$4 | |||||
if [ "$MESSAGE" = "" ] ; then | if [ "$MESSAGE" = "" ] ; then | ||||
MESSAGE=$TEST_TEXT | MESSAGE=$TEST_TEXT | ||||
fi | fi | ||||
echo "testing ${TEST_LANG}" | 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 | fi | ||||
} | } | ||||
#!/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 |
ã¦à»Vñ€¦ñ €¦V €äVñ€ãÂà¦æsññâñþâññà¶æØØsññâñþâññeeeeeeeeseee€ññûñ |
€¦Vń €ńVđŐhńůâ˙ńVDíZ»»ŐöÖÖÖÖÖÖÖÖÖě»»ş»ÖľÖÖÖÖÖÖ´ÖÖÖ»ţţ÷ÜÖÖÖ»»ş»ŐŞ»»®î˙˙€ę`v |
"[[-#,- -1-2. r--Ş#--O)C--!˙E-1‹@5-!-V-1-- |
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 "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-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-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" | 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 | echo "... lv (Latvian)" # short scale |
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 "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-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-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 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 | test_phon lv "p'iRmais g'ads | ||||
'uotRais g'ads | 'uotRais g'ads |
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 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 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 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 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 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@" | 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@" |
##### bs: Bosnian | ##### bs: Bosnian | ||||
# Ljubazni fenjerdžija čađavog lica hoće da mi pokaže štos. | # 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 'fenjerdžija' | ||||
Translate 'čađavog' | Translate 'čađavog' | ||||
Translate 'lica' | Translate 'lica' | ||||
Translate 'da' | Translate 'da' | ||||
Translate 'mi' | Translate 'mi' | ||||
Translate 'pokaže' | Translate 'pokaže' | ||||
Translate 'štos' | |||||
EOF | |||||
test_replace bs "Љубазни фењерџија чађавог лица хоће да ми покаже штос." | |||||
Translate 'štos'" | |||||
##### en: English | ##### en: English | ||||
cat > expected.txt <<EOF | |||||
Translate 'aeon' | |||||
test_replace en "Æon mediæval. Œconomy phœnix. Loſt history." "Translate 'aeon' | |||||
Found: 'mediaeval' | Found: 'mediaeval' | ||||
Translate 'oeconomy' | Translate 'oeconomy' | ||||
Found: 'phoenix' | Found: 'phoenix' | ||||
Found: 'lost' | Found: 'lost' | ||||
Translate 'history' | |||||
EOF | |||||
test_replace en "Æon mediæval. Œconomy phœnix. Loſt history." | |||||
Translate 'history'" | |||||
##### hr: Croatian | ##### hr: Croatian | ||||
# Ljubazni fenjerdžija čađavog lica hoće da mi pokaže štos. | # 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 'fenjerdžija' | ||||
Translate 'čađavog' | Translate 'čađavog' | ||||
Translate 'lica' | Translate 'lica' | ||||
Translate 'da' | Translate 'da' | ||||
Translate 'mi' | Translate 'mi' | ||||
Translate 'pokaže' | Translate 'pokaže' | ||||
Translate 'štos' | |||||
EOF | |||||
test_replace hr "Љубазни фењерџија чађавог лица хоће да ми покаже штос." | |||||
Translate 'štos'" | |||||
##### ja: Japanese | ##### ja: Japanese | ||||
# いろはにほへと. ちりぬるを. わかよたれそ. つねならむ. うゐのおくやま. けふこえて. あさきゆめみし. ゑひもせすん. | # いろはにほへと. ちりぬるを. わかよたれそ. つねならむ. うゐのおくやま. けふこえて. あさきゆめみし. ゑひもせすん. | ||||
cat > expected.txt <<EOF | |||||
Translate 'いろはにほへと' | |||||
test_replace ja "イロハニホヘト. チリヌルヲ. ワカヨタレソ. ツネナラム. ウヰノオクヤマ. ケフコエテ. アサキユメミシ. ヱヒモセスン." "Translate 'いろはにほへと' | |||||
Translate 'ちりぬるを' | Translate 'ちりぬるを' | ||||
Translate 'わかよたれそ' | Translate 'わかよたれそ' | ||||
Translate 'つねならむ' | Translate 'つねならむ' | ||||
Translate 'うゐのおくやま' | Translate 'うゐのおくやま' | ||||
Translate 'けふこえて' | Translate 'けふこえて' | ||||
Translate 'あさきゆめみし' | Translate 'あさきゆめみし' | ||||
Translate 'ゑひもせすん' | |||||
EOF | |||||
test_replace ja "イロハニホヘト. チリヌルヲ. ワカヨタレソ. ツネナラム. ウヰノオクヤマ. ケフコエテ. アサキユメミシ. ヱヒモセスン." | |||||
Translate 'ゑひもせすん'" | |||||
##### mk: Macedonian | ##### 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 'шугав' | Translate 'шугав' | ||||
Translate 'билмез' | Translate 'билмез' | ||||
Translate 'кељ' | Translate 'кељ' | ||||
Translate 'на' | 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 | ##### sr: Serbian | ||||
# Ljubazni fenjerdžija čađavog lica hoće da mi pokaže štos. | # 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 'fenjerdžija' | ||||
Translate 'čađavog' | Translate 'čađavog' | ||||
Translate 'lica' | Translate 'lica' | ||||
Translate 'da' | Translate 'da' | ||||
Translate 'mi' | Translate 'mi' | ||||
Translate 'pokaže' | Translate 'pokaže' | ||||
Translate 'štos' | |||||
EOF | |||||
test_replace sr "Љубазни фењерџија чађавог лица хоће да ми покаже штос." | |||||
Translate 'štos'" |
OPTS=$4 | OPTS=$4 | ||||
echo "testing ${TEST_NAME}" | 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() { | test_ssml() { | ||||
fi | fi | ||||
echo "testing ${INPUT}" | 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 | for i in `dirname $0`/ssml/*.ssml ; do test_ssml $i; done |
# https://github.com/espeak-ng/espeak-ng/issues/706 | # 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 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 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 | # bug: https://github.com/nvaccess/nvda/issues/7740 | ||||
test_phon ta "'il." "ள்" | test_phon ta "'il." "ள்" |