diff --git a/.gitattributes b/.gitattributes
index 5429a9f44ee96d29177a5d8efb82717db2cbb1dc..dd354f53c223dbaaa1501bd857ec75658a64edf3 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -157,3 +157,56 @@ ios-arm64/ESpeakNG.framework/espeak-ng-data.bundle/espeak-ng-data/ta_dict filter
ios-arm64/ESpeakNG.framework/espeak-ng-data.bundle/espeak-ng-data/ur_dict filter=lfs diff=lfs merge=lfs -text
ios-arm64/ESpeakNG.framework/espeak-ng-data.bundle/espeak-ng-data/yue_dict filter=lfs diff=lfs merge=lfs -text
ios-arm64/ESpeakNG.framework/ESpeakNG filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/ios-arm64/ESpeakNG.framework/espeak-ng-data.bundle/espeak-ng-data/af_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/ios-arm64/ESpeakNG.framework/espeak-ng-data.bundle/espeak-ng-data/ar_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/ios-arm64/ESpeakNG.framework/espeak-ng-data.bundle/espeak-ng-data/ca_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/ios-arm64/ESpeakNG.framework/espeak-ng-data.bundle/espeak-ng-data/cmn_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/ios-arm64/ESpeakNG.framework/espeak-ng-data.bundle/espeak-ng-data/da_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/ios-arm64/ESpeakNG.framework/espeak-ng-data.bundle/espeak-ng-data/en_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/ios-arm64/ESpeakNG.framework/espeak-ng-data.bundle/espeak-ng-data/fa_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/ios-arm64/ESpeakNG.framework/espeak-ng-data.bundle/espeak-ng-data/fo_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/ios-arm64/ESpeakNG.framework/espeak-ng-data.bundle/espeak-ng-data/hu_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/ios-arm64/ESpeakNG.framework/espeak-ng-data.bundle/espeak-ng-data/ia_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/ios-arm64/ESpeakNG.framework/espeak-ng-data.bundle/espeak-ng-data/it_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/ios-arm64/ESpeakNG.framework/espeak-ng-data.bundle/espeak-ng-data/lb_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/ios-arm64/ESpeakNG.framework/espeak-ng-data.bundle/espeak-ng-data/phondata filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/ios-arm64/ESpeakNG.framework/espeak-ng-data.bundle/espeak-ng-data/ru_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/ios-arm64/ESpeakNG.framework/espeak-ng-data.bundle/espeak-ng-data/ta_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/ios-arm64/ESpeakNG.framework/espeak-ng-data.bundle/espeak-ng-data/ur_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/ios-arm64/ESpeakNG.framework/espeak-ng-data.bundle/espeak-ng-data/yue_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/ios-arm64/ESpeakNG.framework/ESpeakNG filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/macos-arm64_x86_64/ESpeakNG.framework/espeak-ng-data.bundle/espeak-ng-data/af_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/macos-arm64_x86_64/ESpeakNG.framework/espeak-ng-data.bundle/espeak-ng-data/ar_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/macos-arm64_x86_64/ESpeakNG.framework/espeak-ng-data.bundle/espeak-ng-data/ca_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/macos-arm64_x86_64/ESpeakNG.framework/espeak-ng-data.bundle/espeak-ng-data/cmn_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/macos-arm64_x86_64/ESpeakNG.framework/espeak-ng-data.bundle/espeak-ng-data/da_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/macos-arm64_x86_64/ESpeakNG.framework/espeak-ng-data.bundle/espeak-ng-data/en_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/macos-arm64_x86_64/ESpeakNG.framework/espeak-ng-data.bundle/espeak-ng-data/fa_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/macos-arm64_x86_64/ESpeakNG.framework/espeak-ng-data.bundle/espeak-ng-data/fo_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/macos-arm64_x86_64/ESpeakNG.framework/espeak-ng-data.bundle/espeak-ng-data/hu_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/macos-arm64_x86_64/ESpeakNG.framework/espeak-ng-data.bundle/espeak-ng-data/ia_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/macos-arm64_x86_64/ESpeakNG.framework/espeak-ng-data.bundle/espeak-ng-data/it_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/macos-arm64_x86_64/ESpeakNG.framework/espeak-ng-data.bundle/espeak-ng-data/lb_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/macos-arm64_x86_64/ESpeakNG.framework/espeak-ng-data.bundle/espeak-ng-data/phondata filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/macos-arm64_x86_64/ESpeakNG.framework/espeak-ng-data.bundle/espeak-ng-data/ru_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/macos-arm64_x86_64/ESpeakNG.framework/espeak-ng-data.bundle/espeak-ng-data/ta_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/macos-arm64_x86_64/ESpeakNG.framework/espeak-ng-data.bundle/espeak-ng-data/ur_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/macos-arm64_x86_64/ESpeakNG.framework/espeak-ng-data.bundle/espeak-ng-data/yue_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/macos-arm64_x86_64/ESpeakNG.framework/Versions/A/ESpeakNG filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/macos-arm64_x86_64/ESpeakNG.framework/Versions/A/Resources/espeak-ng-data.bundle/espeak-ng-data/af_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/macos-arm64_x86_64/ESpeakNG.framework/Versions/A/Resources/espeak-ng-data.bundle/espeak-ng-data/ar_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/macos-arm64_x86_64/ESpeakNG.framework/Versions/A/Resources/espeak-ng-data.bundle/espeak-ng-data/ca_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/macos-arm64_x86_64/ESpeakNG.framework/Versions/A/Resources/espeak-ng-data.bundle/espeak-ng-data/cmn_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/macos-arm64_x86_64/ESpeakNG.framework/Versions/A/Resources/espeak-ng-data.bundle/espeak-ng-data/da_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/macos-arm64_x86_64/ESpeakNG.framework/Versions/A/Resources/espeak-ng-data.bundle/espeak-ng-data/en_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/macos-arm64_x86_64/ESpeakNG.framework/Versions/A/Resources/espeak-ng-data.bundle/espeak-ng-data/fa_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/macos-arm64_x86_64/ESpeakNG.framework/Versions/A/Resources/espeak-ng-data.bundle/espeak-ng-data/fo_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/macos-arm64_x86_64/ESpeakNG.framework/Versions/A/Resources/espeak-ng-data.bundle/espeak-ng-data/hu_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/macos-arm64_x86_64/ESpeakNG.framework/Versions/A/Resources/espeak-ng-data.bundle/espeak-ng-data/ia_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/macos-arm64_x86_64/ESpeakNG.framework/Versions/A/Resources/espeak-ng-data.bundle/espeak-ng-data/it_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/macos-arm64_x86_64/ESpeakNG.framework/Versions/A/Resources/espeak-ng-data.bundle/espeak-ng-data/lb_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/macos-arm64_x86_64/ESpeakNG.framework/Versions/A/Resources/espeak-ng-data.bundle/espeak-ng-data/phondata filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/macos-arm64_x86_64/ESpeakNG.framework/Versions/A/Resources/espeak-ng-data.bundle/espeak-ng-data/ru_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/macos-arm64_x86_64/ESpeakNG.framework/Versions/A/Resources/espeak-ng-data.bundle/espeak-ng-data/ta_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/macos-arm64_x86_64/ESpeakNG.framework/Versions/A/Resources/espeak-ng-data.bundle/espeak-ng-data/ur_dict filter=lfs diff=lfs merge=lfs -text
+ESpeakNG.xcframework/macos-arm64_x86_64/ESpeakNG.framework/Versions/A/Resources/espeak-ng-data.bundle/espeak-ng-data/yue_dict filter=lfs diff=lfs merge=lfs -text
diff --git a/ESpeakNG.xcframework/.DS_Store b/ESpeakNG.xcframework/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..d52f482b08a9ef3f4b860269ce50a76a34d00001
Binary files /dev/null and b/ESpeakNG.xcframework/.DS_Store differ
diff --git a/ESpeakNG.xcframework/Info.plist b/ESpeakNG.xcframework/Info.plist
new file mode 100644
index 0000000000000000000000000000000000000000..586f5dcc8512cd52f19361ebb471c7ec7deedbcf
--- /dev/null
+++ b/ESpeakNG.xcframework/Info.plist
@@ -0,0 +1,42 @@
+
+
+
+
+ AvailableLibraries
+
+
+ BinaryPath
+ ESpeakNG.framework/Versions/A/ESpeakNG
+ LibraryIdentifier
+ macos-arm64_x86_64
+ LibraryPath
+ ESpeakNG.framework
+ SupportedArchitectures
+
+ arm64
+ x86_64
+
+ SupportedPlatform
+ macos
+
+
+ BinaryPath
+ ESpeakNG.framework/ESpeakNG
+ LibraryIdentifier
+ ios-arm64
+ LibraryPath
+ ESpeakNG.framework
+ SupportedArchitectures
+
+ arm64
+
+ SupportedPlatform
+ ios
+
+
+ CFBundlePackageType
+ XFWK
+ XCFrameworkFormatVersion
+ 1.0
+
+
diff --git a/ESpeakNG.xcframework/ios-arm64/.DS_Store b/ESpeakNG.xcframework/ios-arm64/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..fdf4b93e1a38ec8450d8aef49e262ac6b0e19aee
Binary files /dev/null and b/ESpeakNG.xcframework/ios-arm64/.DS_Store differ
diff --git a/ESpeakNG.xcframework/ios-arm64/ESpeakNG.framework/.DS_Store b/ESpeakNG.xcframework/ios-arm64/ESpeakNG.framework/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..8084b28cc5bd94bbebca477b6be490189c3f11b4
Binary files /dev/null and b/ESpeakNG.xcframework/ios-arm64/ESpeakNG.framework/.DS_Store differ
diff --git a/ESpeakNG.xcframework/ios-arm64/ESpeakNG.framework/ESpeakNG b/ESpeakNG.xcframework/ios-arm64/ESpeakNG.framework/ESpeakNG
new file mode 100644
index 0000000000000000000000000000000000000000..2a66897acca70e7986faac442db8ac54e3053a44
--- /dev/null
+++ b/ESpeakNG.xcframework/ios-arm64/ESpeakNG.framework/ESpeakNG
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:595aeda23d1addc9536805e5ca063a58330a87389b59b5ebd4cc5742816f8735
+size 524560
diff --git a/ESpeakNG.xcframework/ios-arm64/ESpeakNG.framework/ESpeakNG.h b/ESpeakNG.xcframework/ios-arm64/ESpeakNG.framework/ESpeakNG.h
new file mode 100644
index 0000000000000000000000000000000000000000..542cdffc6af901db2c9b93f3d3d92960ebae68d4
--- /dev/null
+++ b/ESpeakNG.xcframework/ios-arm64/ESpeakNG.framework/ESpeakNG.h
@@ -0,0 +1,2 @@
+#include
+#include
diff --git a/ESpeakNG.xcframework/ios-arm64/ESpeakNG.framework/Headers/ESpeakNG.h b/ESpeakNG.xcframework/ios-arm64/ESpeakNG.framework/Headers/ESpeakNG.h
new file mode 100644
index 0000000000000000000000000000000000000000..542cdffc6af901db2c9b93f3d3d92960ebae68d4
--- /dev/null
+++ b/ESpeakNG.xcframework/ios-arm64/ESpeakNG.framework/Headers/ESpeakNG.h
@@ -0,0 +1,2 @@
+#include
+#include
diff --git a/ESpeakNG.xcframework/ios-arm64/ESpeakNG.framework/Headers/espeak_ng.h b/ESpeakNG.xcframework/ios-arm64/ESpeakNG.framework/Headers/espeak_ng.h
new file mode 100644
index 0000000000000000000000000000000000000000..e6025e7c7e1df7023e46f144bb5c157602a53d6d
--- /dev/null
+++ b/ESpeakNG.xcframework/ios-arm64/ESpeakNG.framework/Headers/espeak_ng.h
@@ -0,0 +1,223 @@
+/* eSpeak NG API.
+ *
+ * Copyright (C) 2015-2017 Reece H. Dunn
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#ifndef ESPEAK_NG_H
+#define ESPEAK_NG_H
+
+#include
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#if defined(_WIN32) || defined(_WIN64)
+#ifdef LIBESPEAK_NG_EXPORT
+#define ESPEAK_NG_API __declspec(dllexport)
+#else
+#define ESPEAK_NG_API __declspec(dllimport)
+#endif
+#else
+#define ESPEAK_NG_API
+#endif
+
+#define ESPEAKNG_DEFAULT_VOICE "en"
+
+typedef enum {
+ ENS_GROUP_MASK = 0x70000000,
+ ENS_GROUP_ERRNO = 0x00000000, /* Values 0-255 map to errno error codes. */
+ ENS_GROUP_ESPEAK_NG = 0x10000000, /* eSpeak NG error codes. */
+
+ /* eSpeak NG 1.49.0 */
+ ENS_OK = 0,
+ ENS_COMPILE_ERROR = 0x100001FF,
+ ENS_VERSION_MISMATCH = 0x100002FF,
+ ENS_FIFO_BUFFER_FULL = 0x100003FF,
+ ENS_NOT_INITIALIZED = 0x100004FF,
+ ENS_AUDIO_ERROR = 0x100005FF,
+ ENS_VOICE_NOT_FOUND = 0x100006FF,
+ ENS_MBROLA_NOT_FOUND = 0x100007FF,
+ ENS_MBROLA_VOICE_NOT_FOUND = 0x100008FF,
+ ENS_EVENT_BUFFER_FULL = 0x100009FF,
+ ENS_NOT_SUPPORTED = 0x10000AFF,
+ ENS_UNSUPPORTED_PHON_FORMAT = 0x10000BFF,
+ ENS_NO_SPECT_FRAMES = 0x10000CFF,
+ ENS_EMPTY_PHONEME_MANIFEST = 0x10000DFF,
+ ENS_SPEECH_STOPPED = 0x10000EFF,
+
+ /* eSpeak NG 1.49.2 */
+ ENS_UNKNOWN_PHONEME_FEATURE = 0x10000FFF,
+ ENS_UNKNOWN_TEXT_ENCODING = 0x100010FF,
+} espeak_ng_STATUS;
+
+typedef enum {
+ ENOUTPUT_MODE_SYNCHRONOUS = 0x0001,
+ ENOUTPUT_MODE_SPEAK_AUDIO = 0x0002,
+} espeak_ng_OUTPUT_MODE;
+
+typedef enum {
+ ENGENDER_UNKNOWN = 0,
+ ENGENDER_MALE = 1,
+ ENGENDER_FEMALE = 2,
+ ENGENDER_NEUTRAL = 3,
+} espeak_ng_VOICE_GENDER;
+
+typedef struct
+{
+ void (*outputPhoSymbol)(char* pho_code,int pho_type);
+ void (*outputSilence)(short echo_tail);
+ void (*outputVoiced)(short sample);
+ void (*outputUnvoiced)(short sample);
+} espeak_ng_OUTPUT_HOOKS;
+
+/* eSpeak NG 1.49.0 */
+
+typedef struct espeak_ng_ERROR_CONTEXT_ *espeak_ng_ERROR_CONTEXT;
+
+ESPEAK_NG_API void
+espeak_ng_ClearErrorContext(espeak_ng_ERROR_CONTEXT *context);
+
+ESPEAK_NG_API void
+espeak_ng_GetStatusCodeMessage(espeak_ng_STATUS status,
+ char *buffer,
+ size_t length);
+
+ESPEAK_NG_API void
+espeak_ng_PrintStatusCodeMessage(espeak_ng_STATUS status,
+ FILE *out,
+ espeak_ng_ERROR_CONTEXT context);
+
+ESPEAK_NG_API void
+espeak_ng_InitializePath(const char *path);
+
+ESPEAK_NG_API espeak_ng_STATUS
+espeak_ng_Initialize(espeak_ng_ERROR_CONTEXT *context);
+
+ESPEAK_NG_API espeak_ng_STATUS
+espeak_ng_InitializeOutput(espeak_ng_OUTPUT_MODE output_mode,
+ int buffer_length,
+ const char *device);
+
+ESPEAK_NG_API int
+espeak_ng_GetSampleRate(void);
+
+ESPEAK_NG_API espeak_ng_STATUS
+espeak_ng_SetParameter(espeak_PARAMETER parameter,
+ int value,
+ int relative);
+
+ESPEAK_NG_API espeak_ng_STATUS
+espeak_ng_SetPhonemeEvents(int enable, int ipa);
+
+ESPEAK_NG_API espeak_ng_STATUS
+espeak_ng_SetPunctuationList(const wchar_t *punctlist);
+
+ESPEAK_NG_API espeak_ng_STATUS
+espeak_ng_SetVoiceByName(const char *name);
+
+ESPEAK_NG_API espeak_ng_STATUS
+espeak_ng_SetVoiceByFile(const char *filename);
+
+ESPEAK_NG_API espeak_ng_STATUS
+espeak_ng_SetVoiceByProperties(espeak_VOICE *voice_selector);
+
+ESPEAK_NG_API espeak_ng_STATUS
+espeak_ng_Synthesize(const void *text,
+ size_t size,
+ unsigned int position,
+ espeak_POSITION_TYPE position_type,
+ unsigned int end_position,
+ unsigned int flags,
+ unsigned int *unique_identifier,
+ void *user_data);
+
+ESPEAK_NG_API espeak_ng_STATUS
+espeak_ng_SynthesizeMark(const void *text,
+ size_t size,
+ const char *index_mark,
+ unsigned int end_position,
+ unsigned int flags,
+ unsigned int *unique_identifier,
+ void *user_data);
+
+ESPEAK_NG_API espeak_ng_STATUS
+espeak_ng_SpeakKeyName(const char *key_name);
+
+ESPEAK_NG_API espeak_ng_STATUS
+espeak_ng_SpeakCharacter(wchar_t character);
+
+ESPEAK_NG_API espeak_ng_STATUS
+espeak_ng_Cancel(void);
+
+ESPEAK_NG_API espeak_ng_STATUS
+espeak_ng_Synchronize(void);
+
+ESPEAK_NG_API espeak_ng_STATUS
+espeak_ng_Terminate(void);
+
+ESPEAK_NG_API espeak_ng_STATUS
+espeak_ng_CompileDictionary(const char *dsource,
+ const char *dict_name,
+ FILE *log,
+ int flags,
+ espeak_ng_ERROR_CONTEXT *context);
+
+ESPEAK_NG_API espeak_ng_STATUS
+espeak_ng_CompileMbrolaVoice(const char *path,
+ FILE *log,
+ espeak_ng_ERROR_CONTEXT *context);
+
+ESPEAK_NG_API espeak_ng_STATUS
+espeak_ng_CompilePhonemeData(long rate,
+ FILE *log,
+ espeak_ng_ERROR_CONTEXT *context);
+
+ESPEAK_NG_API espeak_ng_STATUS
+espeak_ng_CompileIntonation(FILE *log,
+ espeak_ng_ERROR_CONTEXT *context);
+
+
+ESPEAK_NG_API espeak_ng_STATUS
+espeak_ng_CompileIntonationPath(const char *source_path,
+ const char *destination_path,
+ FILE *log,
+ espeak_ng_ERROR_CONTEXT *context);
+
+/* eSpeak NG 1.49.1 */
+
+ESPEAK_NG_API espeak_ng_STATUS
+espeak_ng_CompilePhonemeDataPath(long rate,
+ const char *source_path,
+ const char *destination_path,
+ FILE *log,
+ espeak_ng_ERROR_CONTEXT *context);
+
+ESPEAK_NG_API espeak_ng_STATUS
+espeak_ng_SetOutputHooks(espeak_ng_OUTPUT_HOOKS* hooks);
+ESPEAK_NG_API espeak_ng_STATUS
+espeak_ng_SetConstF0(int f0);
+
+ESPEAK_NG_API espeak_ng_STATUS
+espeak_ng_SetRandSeed(long seed);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/ESpeakNG.xcframework/ios-arm64/ESpeakNG.framework/Headers/speak_lib.h b/ESpeakNG.xcframework/ios-arm64/ESpeakNG.framework/Headers/speak_lib.h
new file mode 100644
index 0000000000000000000000000000000000000000..9c0e2739bdee8cff2fe7e4e422378d01f9624665
--- /dev/null
+++ b/ESpeakNG.xcframework/ios-arm64/ESpeakNG.framework/Headers/speak_lib.h
@@ -0,0 +1,709 @@
+#ifndef SPEAK_LIB_H
+#define SPEAK_LIB_H
+/***************************************************************************
+ * Copyright (C) 2005 to 2012 by Jonathan Duddington *
+ * email: jonsd@users.sourceforge.net *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 3 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, see: *
+ * . *
+ ***************************************************************************/
+
+
+/*************************************************************/
+/* This is the header file for the library version of espeak */
+/* */
+/*************************************************************/
+
+#include
+#include
+
+#if defined(_WIN32) || defined(_WIN64)
+#ifdef LIBESPEAK_NG_EXPORT
+#define ESPEAK_API __declspec(dllexport)
+#else
+#define ESPEAK_API __declspec(dllimport)
+#endif
+#else
+#define ESPEAK_API
+#endif
+
+#define ESPEAK_API_REVISION 12
+/*
+Revision 2
+ Added parameter "options" to eSpeakInitialize()
+
+Revision 3
+ Added espeakWORDGAP to espeak_PARAMETER
+
+Revision 4
+ Added flags parameter to espeak_CompileDictionary()
+
+Revision 5
+ Added espeakCHARS_16BIT
+
+Revision 6
+ Added macros: espeakRATE_MINIMUM, espeakRATE_MAXIMUM, espeakRATE_NORMAL
+
+Revision 7 24.Dec.2011
+ Changed espeak_EVENT structure to add id.string[] for phoneme mnemonics.
+ Added espeakINITIALIZE_PHONEME_IPA option for espeak_Initialize() to report phonemes as IPA names.
+
+Revision 8 26.Apr.2013
+ Added function espeak_TextToPhonemes().
+
+Revision 9 30.May.2013
+ Changed function espeak_TextToPhonemes().
+
+Revision 10 29.Aug.2014
+ Changed phonememode parameter to espeak_TextToPhonemes() and espeak_SetPhonemeTrace
+
+Revision 11 (espeak-ng)
+ Made ESPEAK_API import/export symbols correctly on Windows.
+
+Revision 12 (espeak-ng)
+ Exposed espeak_SetPhonemeCallback. This is available in eSpeak, but was not exposed in this header.
+
+*/
+ /********************/
+ /* Initialization */
+ /********************/
+
+// values for 'value' in espeak_SetParameter(espeakRATE, value, 0), nominally in words-per-minute
+#define espeakRATE_MINIMUM 80
+#define espeakRATE_MAXIMUM 450
+#define espeakRATE_NORMAL 175
+
+
+typedef enum {
+ espeakEVENT_LIST_TERMINATED = 0, // Retrieval mode: terminates the event list.
+ espeakEVENT_WORD = 1, // Start of word
+ espeakEVENT_SENTENCE = 2, // Start of sentence
+ espeakEVENT_MARK = 3, // Mark
+ espeakEVENT_PLAY = 4, // Audio element
+ espeakEVENT_END = 5, // End of sentence or clause
+ espeakEVENT_MSG_TERMINATED = 6, // End of message
+ espeakEVENT_PHONEME = 7, // Phoneme, if enabled in espeak_Initialize()
+ espeakEVENT_SAMPLERATE = 8 // Set sample rate
+} espeak_EVENT_TYPE;
+
+
+
+typedef struct {
+ espeak_EVENT_TYPE type;
+ unsigned int unique_identifier; // message identifier (or 0 for key or character)
+ int text_position; // the number of characters from the start of the text
+ int length; // word length, in characters (for espeakEVENT_WORD)
+ int audio_position; // the time in mS within the generated speech output data
+ int sample; // sample id (internal use)
+ void* user_data; // pointer supplied by the calling program
+ union {
+ int number; // used for WORD and SENTENCE events.
+ const char *name; // used for MARK and PLAY events. UTF8 string
+ char string[8]; // used for phoneme names (UTF8). Terminated by a zero byte unless the name needs the full 8 bytes.
+ } id;
+} espeak_EVENT;
+/*
+ When a message is supplied to espeak_synth, the request is buffered and espeak_synth returns. When the message is really processed, the callback function will be repetedly called.
+
+
+ In RETRIEVAL mode, the callback function supplies to the calling program the audio data and an event list terminated by 0 (LIST_TERMINATED).
+
+ In PLAYBACK mode, the callback function is called as soon as an event happens.
+
+ For example suppose that the following message is supplied to espeak_Synth:
+ "hello, hello."
+
+
+ * Once processed in RETRIEVAL mode, it could lead to 3 calls of the callback function :
+
+ ** Block 1:
+