diff --git a/Assets/Cryville.EEW.Unity/Cryville.EEW.Unity.asmdef b/Assets/Cryville.EEW.Unity/Cryville.EEW.Unity.asmdef
index ffbcdd6..0984092 100644
--- a/Assets/Cryville.EEW.Unity/Cryville.EEW.Unity.asmdef
+++ b/Assets/Cryville.EEW.Unity/Cryville.EEW.Unity.asmdef
@@ -3,6 +3,7 @@
"rootNamespace": "",
"references": [
"GUID:b92f9c7ac10b1c04e86fc48210f62ab1",
+ "GUID:1e0937e40dadba24a97b7342c4559580",
"GUID:e5b7e7f40a80a814ba706299d68f9213",
"GUID:da293eebbcb9a4947a212534c52d1a32"
],
diff --git a/Assets/Cryville.EEW.Unity/TTSWorker.cs b/Assets/Cryville.EEW.Unity/TTSWorker.cs
index 667c19d..7c3e1f3 100644
--- a/Assets/Cryville.EEW.Unity/TTSWorker.cs
+++ b/Assets/Cryville.EEW.Unity/TTSWorker.cs
@@ -6,7 +6,7 @@ using System.Threading.Tasks;
namespace Cryville.EEW.Unity {
class TTSWorker : Core.Audio.TTSWorker {
- readonly SpVoiceClass _voice;
+ readonly ISpVoice _voice;
public TTSWorker() : base(CreateSoundPlayer()) {
try {
@@ -34,14 +34,15 @@ namespace Cryville.EEW.Unity {
if (_voice == null) return Task.CompletedTask;
_voice.Speak(
string.Format(CultureInfo.InvariantCulture, "{1}", culture.LCID, content),
- SpeechVoiceSpeakFlags.SVSFlagsAsync | SpeechVoiceSpeakFlags.SVSFPurgeBeforeSpeak
+ (uint)(SpeechVoiceSpeakFlags.SVSFlagsAsync | SpeechVoiceSpeakFlags.SVSFPurgeBeforeSpeak),
+ out _
);
return Task.CompletedTask;
}
protected override void StopCurrent() {
if (_voice == null) return;
- _voice.Skip("SENTENCE", int.MaxValue);
+ _voice.Skip("SENTENCE", int.MaxValue, out _);
}
}
}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib.dll b/Assets/Plugins/Windows/Interop.SpeechLib.dll
deleted file mode 100644
index c5c5fc2..0000000
Binary files a/Assets/Plugins/Windows/Interop.SpeechLib.dll and /dev/null differ
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib.dll.meta b/Assets/Plugins/Windows/Interop.SpeechLib.dll.meta
deleted file mode 100644
index 9ac294d..0000000
--- a/Assets/Plugins/Windows/Interop.SpeechLib.dll.meta
+++ /dev/null
@@ -1,76 +0,0 @@
-fileFormatVersion: 2
-guid: 17df7db50754b8f459aa29934b507000
-PluginImporter:
- externalObjects: {}
- serializedVersion: 2
- iconMap: {}
- executionOrder: {}
- defineConstraints: []
- isPreloaded: 0
- isOverridable: 0
- isExplicitlyReferenced: 0
- validateReferences: 1
- platformData:
- - first:
- : Any
- second:
- enabled: 0
- settings:
- Exclude Android: 1
- Exclude Editor: 0
- Exclude Linux64: 1
- Exclude OSXUniversal: 1
- Exclude Win: 0
- Exclude Win64: 0
- - first:
- Android: Android
- second:
- enabled: 0
- settings:
- CPU: ARMv7
- - first:
- Any:
- second:
- enabled: 0
- settings: {}
- - first:
- Editor: Editor
- second:
- enabled: 1
- settings:
- CPU: AnyCPU
- DefaultValueInitialized: true
- OS: AnyOS
- - first:
- Standalone: Linux64
- second:
- enabled: 0
- settings:
- CPU: None
- - first:
- Standalone: OSXUniversal
- second:
- enabled: 0
- settings:
- CPU: None
- - first:
- Standalone: Win
- second:
- enabled: 1
- settings:
- CPU: x86
- - first:
- Standalone: Win64
- second:
- enabled: 1
- settings:
- CPU: x86_64
- - first:
- Windows Store Apps: WindowsStoreApps
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib.meta b/Assets/Plugins/Windows/Interop.SpeechLib.meta
new file mode 100644
index 0000000..466a23d
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 33ce0e71590119e4f803932e358b4593
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/EnumeratorToEnumVariantMarshaler.cs b/Assets/Plugins/Windows/Interop.SpeechLib/EnumeratorToEnumVariantMarshaler.cs
new file mode 100644
index 0000000..ae9f07d
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/EnumeratorToEnumVariantMarshaler.cs
@@ -0,0 +1,102 @@
+using System;
+using System.Collections;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+namespace SpeechLib {
+ /// Marshals the COM interface to the .NET Framework interface, and vice versa.
+ public class EnumeratorToEnumVariantMarshaler : ICustomMarshaler {
+ [ComImport]
+ [Guid("00020404-0000-0000-C000-000000000046")]
+ [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
+ private interface IEnumVARIANT {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void Next(int celt, [MarshalAs(UnmanagedType.Struct)] out object rgvar, out uint pceltFetched);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void Skip(uint celt);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void Reset();
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [return: MarshalAs(UnmanagedType.Interface)]
+ IEnumVARIANT Clone();
+ }
+
+ private class VARIANTEnumerator : IEnumerator {
+ private IEnumVARIANT com_enum;
+
+ private object current;
+
+ public object Current => current;
+
+ public VARIANTEnumerator(IEnumVARIANT com_enum) {
+ this.com_enum = com_enum;
+ }
+
+ public bool MoveNext() {
+ uint pceltFetched = 0u;
+ com_enum.Next(1, out var rgvar, out pceltFetched);
+ if (pceltFetched == 0) {
+ return false;
+ }
+ current = rgvar;
+ return true;
+ }
+
+ public void Reset() {
+ com_enum.Reset();
+ }
+ }
+
+ private static EnumeratorToEnumVariantMarshaler instance;
+
+ /// Performs necessary cleanup of the managed data when it is no longer needed.
+ /// The managed object to be destroyed.
+ public void CleanUpManagedData(object pManagedObj) {
+ throw new NotImplementedException();
+ }
+
+ /// Performs necessary cleanup of the unmanaged data when it is no longer needed.
+ /// A pointer to the unmanaged data to be destroyed.
+ public void CleanUpNativeData(IntPtr pNativeData) {
+ Marshal.Release(pNativeData);
+ }
+
+ /// Returns an instance of the custom marshaler.
+ /// String "cookie" parameter that can be used by the custom marshaler.
+ /// An instance of the custom marshaler.
+ public static ICustomMarshaler GetInstance(string pstrCookie) {
+ if (instance == null) {
+ instance = new EnumeratorToEnumVariantMarshaler();
+ }
+ return instance;
+ }
+
+ /// Returns the size in bytes of the unmanaged data to be marshaled.
+ /// -1 to indicate the type this marshaler handles is not a value type.
+ public int GetNativeDataSize() {
+ throw new NotImplementedException();
+ }
+
+ /// Marshals an object from managed code to unmanaged code.
+ /// The managed object to be converted.
+ /// A pointer to the unmanaged object.
+ ///
+ /// is .
+ public IntPtr MarshalManagedToNative(object pManagedObj) {
+ throw new NotImplementedException();
+ }
+
+ /// Marshals an object from unmanaged code to managed code.
+ /// A pointer to the unmanaged object to be converted.
+ /// A managed object.
+ ///
+ /// is .
+ /// The unmanaged object that points to could not be converted.
+ public object MarshalNativeToManaged(IntPtr pNativeData) {
+ return new VARIANTEnumerator((IEnumVARIANT)Marshal.GetObjectForIUnknown(pNativeData));
+ }
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/EnumeratorToEnumVariantMarshaler.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/EnumeratorToEnumVariantMarshaler.cs.meta
new file mode 100644
index 0000000..78ead31
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/EnumeratorToEnumVariantMarshaler.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 57f24b2017eba4d4eb634cf86ae099af
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/IEnumSpObjectTokens.cs b/Assets/Plugins/Windows/Interop.SpeechLib/IEnumSpObjectTokens.cs
new file mode 100644
index 0000000..f768d79
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/IEnumSpObjectTokens.cs
@@ -0,0 +1,29 @@
+using System;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+namespace SpeechLib {
+ [ComImport]
+ [InterfaceType(1)]
+ [Guid("06B64F9E-7FDA-11D2-B4F2-00C04F797396")]
+ [TypeLibType(512)]
+ public interface IEnumSpObjectTokens {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void Next([In] uint celt, [MarshalAs(UnmanagedType.Interface)] out ISpObjectToken pelt, out uint pceltFetched);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void Skip([In] uint celt);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void Reset();
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void Clone([MarshalAs(UnmanagedType.Interface)] out SpMMAudioEnum ppEnum);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void Item([In] uint Index, [MarshalAs(UnmanagedType.Interface)] out ISpObjectToken ppToken);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void GetCount(out uint pCount);
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/IEnumSpObjectTokens.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/IEnumSpObjectTokens.cs.meta
new file mode 100644
index 0000000..7ff11d5
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/IEnumSpObjectTokens.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b8d9b83debeb9c244a52757c270bd3ff
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/ISpDataKey.cs b/Assets/Plugins/Windows/Interop.SpeechLib/ISpDataKey.cs
new file mode 100644
index 0000000..e0ed789
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/ISpDataKey.cs
@@ -0,0 +1,47 @@
+using System;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+namespace SpeechLib {
+ [ComImport]
+ [TypeLibType(512)]
+ [Guid("14056581-E16C-11D2-BB90-00C04F8EE6C0")]
+ [InterfaceType(1)]
+ public interface ISpDataKey {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void SetData([In][MarshalAs(UnmanagedType.LPWStr)] string pszValueName, [In] uint cbData, [In] ref byte pData);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void GetData([In][MarshalAs(UnmanagedType.LPWStr)] string pszValueName, [In] ref uint pcbData, out byte pData);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void SetStringValue([In][MarshalAs(UnmanagedType.LPWStr)] string pszValueName, [In][MarshalAs(UnmanagedType.LPWStr)] string pszValue);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void GetStringValue([In][MarshalAs(UnmanagedType.LPWStr)] string pszValueName, [MarshalAs(UnmanagedType.LPWStr)] out string ppszValue);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void SetDWORD([In][MarshalAs(UnmanagedType.LPWStr)] string pszValueName, [In] uint dwValue);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void GetDWORD([In][MarshalAs(UnmanagedType.LPWStr)] string pszValueName, out uint pdwValue);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void OpenKey([In][MarshalAs(UnmanagedType.LPWStr)] string pszSubKeyName, [MarshalAs(UnmanagedType.Interface)] out ISpDataKey ppSubKey);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void CreateKey([In][MarshalAs(UnmanagedType.LPWStr)] string pszSubKey, [MarshalAs(UnmanagedType.Interface)] out ISpDataKey ppSubKey);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void DeleteKey([In][MarshalAs(UnmanagedType.LPWStr)] string pszSubKey);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void DeleteValue([In][MarshalAs(UnmanagedType.LPWStr)] string pszValueName);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void EnumKeys([In] uint Index, [MarshalAs(UnmanagedType.LPWStr)] out string ppszSubKeyName);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void EnumValues([In] uint Index, [MarshalAs(UnmanagedType.LPWStr)] out string ppszValueName);
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/ISpDataKey.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/ISpDataKey.cs.meta
new file mode 100644
index 0000000..b6f8843
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/ISpDataKey.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 53c599adb0888ca488c429446e094a6e
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/ISpEventSource.cs b/Assets/Plugins/Windows/Interop.SpeechLib/ISpEventSource.cs
new file mode 100644
index 0000000..3081592
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/ISpEventSource.cs
@@ -0,0 +1,41 @@
+using System;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+namespace SpeechLib {
+ [ComImport]
+ [InterfaceType(1)]
+ [Guid("BE7A9CCE-5F9E-11D2-960F-00C04F8EE628")]
+ [TypeLibType(512)]
+ public interface ISpEventSource : ISpNotifySource {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new void SetNotifySink([In][MarshalAs(UnmanagedType.Interface)] ISpNotifySink pNotifySink);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new void SetNotifyWindowMessage([In][ComAliasName("SpeechLib.wireHWND")] ref _RemotableHandle hWnd, [In] uint Msg, [In][ComAliasName("SpeechLib.UINT_PTR")] ulong wParam, [In][ComAliasName("SpeechLib.LONG_PTR")] long lParam);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new void SetNotifyCallbackFunction([In] ref IntPtr pfnCallback, [In][ComAliasName("SpeechLib.UINT_PTR")] ulong wParam, [In][ComAliasName("SpeechLib.LONG_PTR")] long lParam);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new void SetNotifyCallbackInterface([In] ref IntPtr pSpCallback, [In][ComAliasName("SpeechLib.UINT_PTR")] ulong wParam, [In][ComAliasName("SpeechLib.LONG_PTR")] long lParam);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new void SetNotifyWin32Event();
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new void WaitForNotifyEvent([In] uint dwMilliseconds);
+
+ [MethodImpl(MethodImplOptions.PreserveSig | MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new IntPtr GetNotifyEventHandle();
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void SetInterest([In] ulong ullEventInterest, [In] ulong ullQueuedInterest);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void GetEvents([In] uint ulCount, out SPEVENT pEventArray, out uint pulFetched);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void GetInfo(out SPEVENTSOURCEINFO pInfo);
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/ISpEventSource.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/ISpEventSource.cs.meta
new file mode 100644
index 0000000..db29bb4
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/ISpEventSource.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 956b9cc3f6ea4e848971f63146675fca
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/ISpNotifySink.cs b/Assets/Plugins/Windows/Interop.SpeechLib/ISpNotifySink.cs
new file mode 100644
index 0000000..8db4ee9
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/ISpNotifySink.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+namespace SpeechLib {
+ [ComImport]
+ [TypeLibType(512)]
+ [Guid("259684DC-37C3-11D2-9603-00C04F8EE628")]
+ [InterfaceType(1)]
+ public interface ISpNotifySink {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void Notify();
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/ISpNotifySink.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/ISpNotifySink.cs.meta
new file mode 100644
index 0000000..83d6d28
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/ISpNotifySink.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: a8f6204837b45824b8513ceb242f9ec1
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/ISpNotifySource.cs b/Assets/Plugins/Windows/Interop.SpeechLib/ISpNotifySource.cs
new file mode 100644
index 0000000..873680a
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/ISpNotifySource.cs
@@ -0,0 +1,32 @@
+using System;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+namespace SpeechLib {
+ [ComImport]
+ [TypeLibType(512)]
+ [InterfaceType(1)]
+ [Guid("5EFF4AEF-8487-11D2-961C-00C04F8EE628")]
+ public interface ISpNotifySource {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void SetNotifySink([In][MarshalAs(UnmanagedType.Interface)] ISpNotifySink pNotifySink);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void SetNotifyWindowMessage([In][ComAliasName("SpeechLib.wireHWND")] ref _RemotableHandle hWnd, [In] uint Msg, [In][ComAliasName("SpeechLib.UINT_PTR")] ulong wParam, [In][ComAliasName("SpeechLib.LONG_PTR")] long lParam);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void SetNotifyCallbackFunction([In] ref IntPtr pfnCallback, [In][ComAliasName("SpeechLib.UINT_PTR")] ulong wParam, [In][ComAliasName("SpeechLib.LONG_PTR")] long lParam);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void SetNotifyCallbackInterface([In] ref IntPtr pSpCallback, [In][ComAliasName("SpeechLib.UINT_PTR")] ulong wParam, [In][ComAliasName("SpeechLib.LONG_PTR")] long lParam);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void SetNotifyWin32Event();
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void WaitForNotifyEvent([In] uint dwMilliseconds);
+
+ [MethodImpl(MethodImplOptions.PreserveSig | MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ IntPtr GetNotifyEventHandle();
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/ISpNotifySource.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/ISpNotifySource.cs.meta
new file mode 100644
index 0000000..8b1cff1
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/ISpNotifySource.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: dc0e801e79d02c0419ef4ce756d894e8
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/ISpObjectToken.cs b/Assets/Plugins/Windows/Interop.SpeechLib/ISpObjectToken.cs
new file mode 100644
index 0000000..5de2a12
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/ISpObjectToken.cs
@@ -0,0 +1,77 @@
+using System;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+namespace SpeechLib {
+ [ComImport]
+ [Guid("14056589-E16C-11D2-BB90-00C04F8EE6C0")]
+ [TypeLibType(512)]
+ [InterfaceType(1)]
+ public interface ISpObjectToken : ISpDataKey {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new void SetData([In][MarshalAs(UnmanagedType.LPWStr)] string pszValueName, [In] uint cbData, [In] ref byte pData);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new void GetData([In][MarshalAs(UnmanagedType.LPWStr)] string pszValueName, [In] ref uint pcbData, out byte pData);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new void SetStringValue([In][MarshalAs(UnmanagedType.LPWStr)] string pszValueName, [In][MarshalAs(UnmanagedType.LPWStr)] string pszValue);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new void GetStringValue([In][MarshalAs(UnmanagedType.LPWStr)] string pszValueName, [MarshalAs(UnmanagedType.LPWStr)] out string ppszValue);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new void SetDWORD([In][MarshalAs(UnmanagedType.LPWStr)] string pszValueName, [In] uint dwValue);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new void GetDWORD([In][MarshalAs(UnmanagedType.LPWStr)] string pszValueName, out uint pdwValue);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new void OpenKey([In][MarshalAs(UnmanagedType.LPWStr)] string pszSubKeyName, [MarshalAs(UnmanagedType.Interface)] out ISpDataKey ppSubKey);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new void CreateKey([In][MarshalAs(UnmanagedType.LPWStr)] string pszSubKey, [MarshalAs(UnmanagedType.Interface)] out ISpDataKey ppSubKey);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new void DeleteKey([In][MarshalAs(UnmanagedType.LPWStr)] string pszSubKey);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new void DeleteValue([In][MarshalAs(UnmanagedType.LPWStr)] string pszValueName);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new void EnumKeys([In] uint Index, [MarshalAs(UnmanagedType.LPWStr)] out string ppszSubKeyName);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new void EnumValues([In] uint Index, [MarshalAs(UnmanagedType.LPWStr)] out string ppszValueName);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void SetId([MarshalAs(UnmanagedType.LPWStr)] string pszCategoryId, [In][MarshalAs(UnmanagedType.LPWStr)] string pszTokenId, [In] int fCreateIfNotExist);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void GetId([MarshalAs(UnmanagedType.LPWStr)] out string ppszCoMemTokenId);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void GetCategory([MarshalAs(UnmanagedType.Interface)] out ISpObjectTokenCategory ppTokenCategory);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void CreateInstance([In][MarshalAs(UnmanagedType.IUnknown)] object pUnkOuter, [In] uint dwClsContext, [In] ref Guid riid, out IntPtr ppvObject);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void GetStorageFileName([In] ref Guid clsidCaller, [In][MarshalAs(UnmanagedType.LPWStr)] string pszValueName, [In][MarshalAs(UnmanagedType.LPWStr)] string pszFileNameSpecifier, [In] uint nFolder, [MarshalAs(UnmanagedType.LPWStr)] out string ppszFilePath);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void RemoveStorageFileName([In] ref Guid clsidCaller, [In][MarshalAs(UnmanagedType.LPWStr)] string pszKeyName, [In] int fDeleteFile);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void Remove(ref Guid pclsidCaller);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void IsUISupported([In][MarshalAs(UnmanagedType.LPWStr)] string pszTypeOfUI, [In] IntPtr pvExtraData, [In] uint cbExtraData, [In][MarshalAs(UnmanagedType.IUnknown)] object punkObject, out int pfSupported);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void DisplayUI([In][ComAliasName("SpeechLib.wireHWND")] ref _RemotableHandle hWndParent, [In][MarshalAs(UnmanagedType.LPWStr)] string pszTitle, [In][MarshalAs(UnmanagedType.LPWStr)] string pszTypeOfUI, [In] IntPtr pvExtraData, [In] uint cbExtraData, [In][MarshalAs(UnmanagedType.IUnknown)] object punkObject);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void MatchesAttributes([In][MarshalAs(UnmanagedType.LPWStr)] string pszAttributes, out int pfMatches);
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/ISpObjectToken.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/ISpObjectToken.cs.meta
new file mode 100644
index 0000000..f925bb7
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/ISpObjectToken.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 9dbe636fbecc6d246ac06f0111e1b644
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/ISpObjectTokenCategory.cs b/Assets/Plugins/Windows/Interop.SpeechLib/ISpObjectTokenCategory.cs
new file mode 100644
index 0000000..4224912
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/ISpObjectTokenCategory.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+namespace SpeechLib {
+ [ComImport]
+ [Guid("2D3D3845-39AF-4850-BBF9-40B49780011D")]
+ [TypeLibType(512)]
+ [InterfaceType(1)]
+ public interface ISpObjectTokenCategory : ISpDataKey {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new void SetData([In][MarshalAs(UnmanagedType.LPWStr)] string pszValueName, [In] uint cbData, [In] ref byte pData);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new void GetData([In][MarshalAs(UnmanagedType.LPWStr)] string pszValueName, [In] ref uint pcbData, out byte pData);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new void SetStringValue([In][MarshalAs(UnmanagedType.LPWStr)] string pszValueName, [In][MarshalAs(UnmanagedType.LPWStr)] string pszValue);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new void GetStringValue([In][MarshalAs(UnmanagedType.LPWStr)] string pszValueName, [MarshalAs(UnmanagedType.LPWStr)] out string ppszValue);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new void SetDWORD([In][MarshalAs(UnmanagedType.LPWStr)] string pszValueName, [In] uint dwValue);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new void GetDWORD([In][MarshalAs(UnmanagedType.LPWStr)] string pszValueName, out uint pdwValue);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new void OpenKey([In][MarshalAs(UnmanagedType.LPWStr)] string pszSubKeyName, [MarshalAs(UnmanagedType.Interface)] out ISpDataKey ppSubKey);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new void CreateKey([In][MarshalAs(UnmanagedType.LPWStr)] string pszSubKey, [MarshalAs(UnmanagedType.Interface)] out ISpDataKey ppSubKey);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new void DeleteKey([In][MarshalAs(UnmanagedType.LPWStr)] string pszSubKey);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new void DeleteValue([In][MarshalAs(UnmanagedType.LPWStr)] string pszValueName);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new void EnumKeys([In] uint Index, [MarshalAs(UnmanagedType.LPWStr)] out string ppszSubKeyName);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new void EnumValues([In] uint Index, [MarshalAs(UnmanagedType.LPWStr)] out string ppszValueName);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void SetId([In][MarshalAs(UnmanagedType.LPWStr)] string pszCategoryId, [In] int fCreateIfNotExist);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void GetId([MarshalAs(UnmanagedType.LPWStr)] out string ppszCoMemCategoryId);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void GetDataKey([In] SPDATAKEYLOCATION spdkl, [MarshalAs(UnmanagedType.Interface)] out ISpDataKey ppDataKey);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void EnumTokens([In][MarshalAs(UnmanagedType.LPWStr)] string pzsReqAttribs, [In][MarshalAs(UnmanagedType.LPWStr)] string pszOptAttribs, [MarshalAs(UnmanagedType.Interface)] out SpMMAudioEnum ppEnum);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void SetDefaultTokenId([In][MarshalAs(UnmanagedType.LPWStr)] string pszTokenId);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void GetDefaultTokenId([MarshalAs(UnmanagedType.LPWStr)] out string ppszCoMemTokenId);
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/ISpObjectTokenCategory.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/ISpObjectTokenCategory.cs.meta
new file mode 100644
index 0000000..4352967
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/ISpObjectTokenCategory.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 15623e252a155a848a97cf37f60268e8
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/ISpPhoneticAlphabetSelection.cs b/Assets/Plugins/Windows/Interop.SpeechLib/ISpPhoneticAlphabetSelection.cs
new file mode 100644
index 0000000..0f354ad
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/ISpPhoneticAlphabetSelection.cs
@@ -0,0 +1,17 @@
+using System;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+namespace SpeechLib {
+ [ComImport]
+ [TypeLibType(512)]
+ [InterfaceType(1)]
+ [Guid("B2745EFD-42CE-48CA-81F1-A96E02538A90")]
+ public interface ISpPhoneticAlphabetSelection {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void IsAlphabetUPS(out int pfIsUPS);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void SetAlphabetToUPS([In] int fForceUPS);
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/ISpPhoneticAlphabetSelection.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/ISpPhoneticAlphabetSelection.cs.meta
new file mode 100644
index 0000000..e0abf26
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/ISpPhoneticAlphabetSelection.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d029aee7bdb974547abcc71e4b1d5c0e
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/ISpStreamFormat.cs b/Assets/Plugins/Windows/Interop.SpeechLib/ISpStreamFormat.cs
new file mode 100644
index 0000000..c3e03fc
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/ISpStreamFormat.cs
@@ -0,0 +1,49 @@
+using System;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Runtime.InteropServices.ComTypes;
+
+namespace SpeechLib {
+ [ComImport]
+ [ComConversionLoss]
+ [InterfaceType(1)]
+ [Guid("BED530BE-2606-4F4D-A1C0-54C5CDA5566F")]
+ [TypeLibType(512)]
+ public interface ISpStreamFormat : IStream {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void RemoteRead(out byte pv, [In] uint cb, out uint pcbRead);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void RemoteWrite([In] ref byte pv, [In] uint cb, out uint pcbWritten);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void RemoteSeek([In] _LARGE_INTEGER dlibMove, [In] uint dwOrigin, out _ULARGE_INTEGER plibNewPosition);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void SetSize([In] _ULARGE_INTEGER libNewSize);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void RemoteCopyTo([In][MarshalAs(UnmanagedType.Interface)] IStream pstm, [In] _ULARGE_INTEGER cb, out _ULARGE_INTEGER pcbRead, out _ULARGE_INTEGER pcbWritten);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void Commit([In] uint grfCommitFlags);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new void Revert();
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void LockRegion([In] _ULARGE_INTEGER libOffset, [In] _ULARGE_INTEGER cb, [In] uint dwLockType);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void UnlockRegion([In] _ULARGE_INTEGER libOffset, [In] _ULARGE_INTEGER cb, [In] uint dwLockType);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void Stat(out tagSTATSTG pstatstg, [In] uint grfStatFlag);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new void Clone([MarshalAs(UnmanagedType.Interface)] out IStream ppstm);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void GetFormat([In] ref Guid pguidFormatId, [Out] IntPtr ppCoMemWaveFormatEx);
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/ISpStreamFormat.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/ISpStreamFormat.cs.meta
new file mode 100644
index 0000000..dc40632
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/ISpStreamFormat.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 3757bf8ef8a3f324896a9d3712a52c0d
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/ISpVoice.cs b/Assets/Plugins/Windows/Interop.SpeechLib/ISpVoice.cs
new file mode 100644
index 0000000..9a9c3ad
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/ISpVoice.cs
@@ -0,0 +1,117 @@
+using System;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Runtime.InteropServices.ComTypes;
+
+namespace SpeechLib {
+ [ComImport]
+ [InterfaceType(1)]
+ [Guid("6C44DF74-72B9-4992-A1EC-EF996E0422D4")]
+ [TypeLibType(512)]
+ public interface ISpVoice : ISpEventSource {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new void SetNotifySink([In][MarshalAs(UnmanagedType.Interface)] ISpNotifySink pNotifySink);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new void SetNotifyWindowMessage([In][ComAliasName("SpeechLib.wireHWND")] ref _RemotableHandle hWnd, [In] uint Msg, [In][ComAliasName("SpeechLib.UINT_PTR")] ulong wParam, [In][ComAliasName("SpeechLib.LONG_PTR")] long lParam);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new void SetNotifyCallbackFunction([In] ref IntPtr pfnCallback, [In][ComAliasName("SpeechLib.UINT_PTR")] ulong wParam, [In][ComAliasName("SpeechLib.LONG_PTR")] long lParam);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new void SetNotifyCallbackInterface([In] ref IntPtr pSpCallback, [In][ComAliasName("SpeechLib.UINT_PTR")] ulong wParam, [In][ComAliasName("SpeechLib.LONG_PTR")] long lParam);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new void SetNotifyWin32Event();
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new void WaitForNotifyEvent([In] uint dwMilliseconds);
+
+ [MethodImpl(MethodImplOptions.PreserveSig | MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new IntPtr GetNotifyEventHandle();
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new void SetInterest([In] ulong ullEventInterest, [In] ulong ullQueuedInterest);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new void GetEvents([In] uint ulCount, out SPEVENT pEventArray, out uint pulFetched);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ new void GetInfo(out SPEVENTSOURCEINFO pInfo);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void SetOutput([In][MarshalAs(UnmanagedType.IUnknown)] object pUnkOutput, [In] int fAllowFormatChanges);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void GetOutputObjectToken([MarshalAs(UnmanagedType.Interface)] out ISpObjectToken ppObjectToken);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void GetOutputStream([MarshalAs(UnmanagedType.Interface)] out ISpStreamFormat ppStream);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void Pause();
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void Resume();
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void SetVoice([In][MarshalAs(UnmanagedType.Interface)] ISpObjectToken pToken);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void GetVoice([MarshalAs(UnmanagedType.Interface)] out ISpObjectToken ppToken);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void Speak([In][MarshalAs(UnmanagedType.LPWStr)] string pwcs, [In] uint dwFlags, out uint pulStreamNumber);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void SpeakStream([In][MarshalAs(UnmanagedType.Interface)] IStream pStream, [In] uint dwFlags, out uint pulStreamNumber);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void GetStatus(out SPVOICESTATUS pStatus, [MarshalAs(UnmanagedType.LPWStr)] out string ppszLastBookmark);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void Skip([In][MarshalAs(UnmanagedType.LPWStr)] string pItemType, [In] int lNumItems, out uint pulNumSkipped);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void SetPriority([In] SPVPRIORITY ePriority);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void GetPriority(out SPVPRIORITY pePriority);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void SetAlertBoundary([In] SPEVENTENUM eBoundary);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void GetAlertBoundary(out SPEVENTENUM peBoundary);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void SetRate([In] int RateAdjust);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void GetRate(out int pRateAdjust);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void SetVolume([In] ushort usVolume);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void GetVolume(out ushort pusVolume);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void WaitUntilDone([In] uint msTimeout);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void SetSyncSpeakTimeout([In] uint msTimeout);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void GetSyncSpeakTimeout(out uint pmsTimeout);
+
+ [MethodImpl(MethodImplOptions.PreserveSig | MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ IntPtr SpeakCompleteEvent();
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void IsUISupported([In][MarshalAs(UnmanagedType.LPWStr)] string pszTypeOfUI, [In] IntPtr pvExtraData, [In] uint cbExtraData, out int pfSupported);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ void DisplayUI([In][ComAliasName("SpeechLib.wireHWND")] ref _RemotableHandle hWndParent, [In][MarshalAs(UnmanagedType.LPWStr)] string pszTitle, [In][MarshalAs(UnmanagedType.LPWStr)] string pszTypeOfUI, [In] IntPtr pvExtraData, [In] uint cbExtraData);
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/ISpVoice.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/ISpVoice.cs.meta
new file mode 100644
index 0000000..1e7c9ae
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/ISpVoice.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 272a8c831aaf44a4d94da0a8f2f29199
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechAudioFormat.cs b/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechAudioFormat.cs
new file mode 100644
index 0000000..642ea30
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechAudioFormat.cs
@@ -0,0 +1,47 @@
+using System;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+namespace SpeechLib {
+ [ComImport]
+ [TypeLibType(4160)]
+ [Guid("E6E9C590-3E18-40E3-8299-061F98BDE7C7")]
+ public interface ISpeechAudioFormat {
+ [DispId(1)]
+ SpeechAudioFormatType Type {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(1)]
+ get;
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(1)]
+ [param: In]
+ set;
+ }
+
+ [DispId(2)]
+ string Guid {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(2)]
+ [TypeLibFunc(64)]
+ [return: MarshalAs(UnmanagedType.BStr)]
+ get;
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(2)]
+ [TypeLibFunc(64)]
+ [param: In]
+ [param: MarshalAs(UnmanagedType.BStr)]
+ set;
+ }
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(3)]
+ [TypeLibFunc(64)]
+ [return: MarshalAs(UnmanagedType.Interface)]
+ SpWaveFormatEx GetWaveFormatEx();
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(4)]
+ [TypeLibFunc(64)]
+ void SetWaveFormatEx([In][MarshalAs(UnmanagedType.Interface)] SpWaveFormatEx SpeechWaveFormatEx);
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechAudioFormat.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechAudioFormat.cs.meta
new file mode 100644
index 0000000..c5acdfa
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechAudioFormat.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 0121f963d2ad3124f93d8b901dea2ef2
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechBaseStream.cs b/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechBaseStream.cs
new file mode 100644
index 0000000..d4e4822
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechBaseStream.cs
@@ -0,0 +1,36 @@
+using System;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+namespace SpeechLib {
+ [ComImport]
+ [TypeLibType(4160)]
+ [Guid("6450336F-7D49-4CED-8097-49D6DEE37294")]
+ public interface ISpeechBaseStream {
+ [DispId(1)]
+ SpAudioFormat Format {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(1)]
+ [return: MarshalAs(UnmanagedType.Interface)]
+ get;
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(1)]
+ [param: In]
+ [param: MarshalAs(UnmanagedType.Interface)]
+ set;
+ }
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(2)]
+ int Read([MarshalAs(UnmanagedType.Struct)] out object Buffer, [In] int NumberOfBytes);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(3)]
+ int Write([In][MarshalAs(UnmanagedType.Struct)] object Buffer);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(4)]
+ [return: MarshalAs(UnmanagedType.Struct)]
+ object Seek([In][MarshalAs(UnmanagedType.Struct)] object Position, [In] SpeechStreamSeekPositionType Origin = SpeechStreamSeekPositionType.SSSPTRelativeToStart);
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechBaseStream.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechBaseStream.cs.meta
new file mode 100644
index 0000000..349ab15
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechBaseStream.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b47a20305f9457d4a9178de9ed11508a
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechDataKey.cs b/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechDataKey.cs
new file mode 100644
index 0000000..874025d
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechDataKey.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+namespace SpeechLib {
+ [ComImport]
+ [TypeLibType(4160)]
+ [Guid("CE17C09B-4EFA-44D5-A4C9-59D9585AB0CD")]
+ public interface ISpeechDataKey {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(1)]
+ void SetBinaryValue([In][MarshalAs(UnmanagedType.BStr)] string ValueName, [In][MarshalAs(UnmanagedType.Struct)] object Value);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(2)]
+ [return: MarshalAs(UnmanagedType.Struct)]
+ object GetBinaryValue([In][MarshalAs(UnmanagedType.BStr)] string ValueName);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(3)]
+ void SetStringValue([In][MarshalAs(UnmanagedType.BStr)] string ValueName, [In][MarshalAs(UnmanagedType.BStr)] string Value);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(4)]
+ [return: MarshalAs(UnmanagedType.BStr)]
+ string GetStringValue([In][MarshalAs(UnmanagedType.BStr)] string ValueName);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(5)]
+ void SetLongValue([In][MarshalAs(UnmanagedType.BStr)] string ValueName, [In] int Value);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(6)]
+ int GetLongValue([In][MarshalAs(UnmanagedType.BStr)] string ValueName);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(7)]
+ [return: MarshalAs(UnmanagedType.Interface)]
+ ISpeechDataKey OpenKey([In][MarshalAs(UnmanagedType.BStr)] string SubKeyName);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(8)]
+ [return: MarshalAs(UnmanagedType.Interface)]
+ ISpeechDataKey CreateKey([In][MarshalAs(UnmanagedType.BStr)] string SubKeyName);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(9)]
+ void DeleteKey([In][MarshalAs(UnmanagedType.BStr)] string SubKeyName);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(10)]
+ void DeleteValue([In][MarshalAs(UnmanagedType.BStr)] string ValueName);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(11)]
+ [return: MarshalAs(UnmanagedType.BStr)]
+ string EnumKeys([In] int Index);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(12)]
+ [return: MarshalAs(UnmanagedType.BStr)]
+ string EnumValues([In] int Index);
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechDataKey.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechDataKey.cs.meta
new file mode 100644
index 0000000..6f3b64c
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechDataKey.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 67d9e05beeee4594688ea5fff1341d30
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechObjectToken.cs b/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechObjectToken.cs
new file mode 100644
index 0000000..b93232f
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechObjectToken.cs
@@ -0,0 +1,85 @@
+using System;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+namespace SpeechLib {
+ [ComImport]
+ [TypeLibType(4160)]
+ [Guid("C74A3ADC-B727-4500-A84A-B526721C8B8C")]
+ public interface ISpeechObjectToken {
+ [DispId(1)]
+ string Id {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(1)]
+ [return: MarshalAs(UnmanagedType.BStr)]
+ get;
+ }
+
+ [DispId(2)]
+ ISpeechDataKey DataKey {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [TypeLibFunc(64)]
+ [DispId(2)]
+ [return: MarshalAs(UnmanagedType.Interface)]
+ get;
+ }
+
+ [DispId(3)]
+ SpObjectTokenCategory Category {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(3)]
+ [return: MarshalAs(UnmanagedType.Interface)]
+ get;
+ }
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(4)]
+ [return: MarshalAs(UnmanagedType.BStr)]
+ string GetDescription([In] int Locale = 0);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(5)]
+ [TypeLibFunc(64)]
+ void SetId([In][MarshalAs(UnmanagedType.BStr)] string Id, [In][MarshalAs(UnmanagedType.BStr)] string CategoryID = "", [In] bool CreateIfNotExist = false);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(6)]
+ [return: MarshalAs(UnmanagedType.BStr)]
+ string GetAttribute([In][MarshalAs(UnmanagedType.BStr)] string AttributeName);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(7)]
+ [return: MarshalAs(UnmanagedType.IUnknown)]
+ object CreateInstance([Optional][In][IUnknownConstant][MarshalAs(UnmanagedType.IUnknown)] object pUnkOuter, [In] SpeechTokenContext ClsContext = SpeechTokenContext.STCAll);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [TypeLibFunc(64)]
+ [DispId(8)]
+ void Remove([In][MarshalAs(UnmanagedType.BStr)] string ObjectStorageCLSID);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [TypeLibFunc(64)]
+ [DispId(9)]
+ [return: MarshalAs(UnmanagedType.BStr)]
+ string GetStorageFileName([In][MarshalAs(UnmanagedType.BStr)] string ObjectStorageCLSID, [In][MarshalAs(UnmanagedType.BStr)] string KeyName, [In][MarshalAs(UnmanagedType.BStr)] string FileName, [In] SpeechTokenShellFolder Folder);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(10)]
+ [TypeLibFunc(64)]
+ void RemoveStorageFileName([In][MarshalAs(UnmanagedType.BStr)] string ObjectStorageCLSID, [In][MarshalAs(UnmanagedType.BStr)] string KeyName, [In] bool DeleteFile);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(11)]
+ [TypeLibFunc(64)]
+ bool IsUISupported([In][MarshalAs(UnmanagedType.BStr)] string TypeOfUI, [Optional][In][MarshalAs(UnmanagedType.Struct)] ref object ExtraData, [Optional][In][IUnknownConstant][MarshalAs(UnmanagedType.IUnknown)] object Object);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(12)]
+ [TypeLibFunc(64)]
+ void DisplayUI([In] int hWnd, [In][MarshalAs(UnmanagedType.BStr)] string Title, [In][MarshalAs(UnmanagedType.BStr)] string TypeOfUI, [Optional][In][MarshalAs(UnmanagedType.Struct)] ref object ExtraData, [Optional][In][IUnknownConstant][MarshalAs(UnmanagedType.IUnknown)] object Object);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(13)]
+ bool MatchesAttributes([In][MarshalAs(UnmanagedType.BStr)] string Attributes);
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechObjectToken.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechObjectToken.cs.meta
new file mode 100644
index 0000000..afbdd8f
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechObjectToken.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 84b08e94b540c8a40afbd504abc37d04
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechObjectTokenCategory.cs b/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechObjectTokenCategory.cs
new file mode 100644
index 0000000..551c589
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechObjectTokenCategory.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+namespace SpeechLib {
+ [ComImport]
+ [Guid("CA7EAC50-2D01-4145-86D4-5AE7D70F4469")]
+ [TypeLibType(4160)]
+ public interface ISpeechObjectTokenCategory {
+ [DispId(1)]
+ string Id {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(1)]
+ [return: MarshalAs(UnmanagedType.BStr)]
+ get;
+ }
+
+ [DispId(2)]
+ string Default {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(2)]
+ [return: MarshalAs(UnmanagedType.BStr)]
+ get;
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(2)]
+ [param: In]
+ [param: MarshalAs(UnmanagedType.BStr)]
+ set;
+ }
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(3)]
+ void SetId([In][MarshalAs(UnmanagedType.BStr)] string Id, [In] bool CreateIfNotExist = false);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(4)]
+ [TypeLibFunc(64)]
+ [return: MarshalAs(UnmanagedType.Interface)]
+ ISpeechDataKey GetDataKey([In] SpeechDataKeyLocation Location = SpeechDataKeyLocation.SDKLDefaultLocation);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(5)]
+ [return: MarshalAs(UnmanagedType.Interface)]
+ ISpeechObjectTokens EnumerateTokens([In][MarshalAs(UnmanagedType.BStr)] string RequiredAttributes = "", [In][MarshalAs(UnmanagedType.BStr)] string OptionalAttributes = "");
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechObjectTokenCategory.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechObjectTokenCategory.cs.meta
new file mode 100644
index 0000000..3d5c681
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechObjectTokenCategory.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: a15899cbf650cfa42944fa16c069356b
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechObjectTokens.cs b/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechObjectTokens.cs
new file mode 100644
index 0000000..30a280e
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechObjectTokens.cs
@@ -0,0 +1,31 @@
+using System;
+using System.Collections;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+namespace SpeechLib {
+ [ComImport]
+ [DefaultMember("Item")]
+ [TypeLibType(4160)]
+ [Guid("9285B776-2E7B-4BC0-B53E-580EB6FA967F")]
+ public interface ISpeechObjectTokens : IEnumerable {
+ [DispId(1)]
+ int Count {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(1)]
+ get;
+ }
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(0)]
+ [return: MarshalAs(UnmanagedType.Interface)]
+ SpObjectToken Item([In] int Index);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [TypeLibFunc(1)]
+ [DispId(-4)]
+ [return: MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(EnumeratorToEnumVariantMarshaler))]
+ new IEnumerator GetEnumerator();
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechObjectTokens.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechObjectTokens.cs.meta
new file mode 100644
index 0000000..eaf6acd
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechObjectTokens.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: c5ce0623475562e41ac3b4d14e26e163
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechVoice.cs b/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechVoice.cs
new file mode 100644
index 0000000..28cd6b6
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechVoice.cs
@@ -0,0 +1,183 @@
+using System;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+namespace SpeechLib {
+ [ComImport]
+ [Guid("269316D8-57BD-11D2-9EEE-00C04F797396")]
+ [TypeLibType(4160)]
+ public interface ISpeechVoice {
+ [DispId(1)]
+ ISpeechVoiceStatus Status {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(1)]
+ [return: MarshalAs(UnmanagedType.Interface)]
+ get;
+ }
+
+ [DispId(2)]
+ SpObjectToken Voice {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(2)]
+ [return: MarshalAs(UnmanagedType.Interface)]
+ get;
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(2)]
+ [param: In]
+ [param: MarshalAs(UnmanagedType.Interface)]
+ set;
+ }
+
+ [DispId(3)]
+ SpObjectToken AudioOutput {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(3)]
+ [return: MarshalAs(UnmanagedType.Interface)]
+ get;
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(3)]
+ [param: In]
+ [param: MarshalAs(UnmanagedType.Interface)]
+ set;
+ }
+
+ [DispId(4)]
+ ISpeechBaseStream AudioOutputStream {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(4)]
+ [return: MarshalAs(UnmanagedType.Interface)]
+ get;
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(4)]
+ [param: In]
+ [param: MarshalAs(UnmanagedType.Interface)]
+ set;
+ }
+
+ [DispId(5)]
+ int Rate {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(5)]
+ get;
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(5)]
+ [param: In]
+ set;
+ }
+
+ [DispId(6)]
+ int Volume {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(6)]
+ get;
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(6)]
+ [param: In]
+ set;
+ }
+
+ [DispId(7)]
+ bool AllowAudioOutputFormatChangesOnNextSet {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [TypeLibFunc(64)]
+ [DispId(7)]
+ get;
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [TypeLibFunc(64)]
+ [DispId(7)]
+ [param: In]
+ set;
+ }
+
+ [DispId(8)]
+ SpeechVoiceEvents EventInterests {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(8)]
+ get;
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(8)]
+ [param: In]
+ set;
+ }
+
+ [DispId(9)]
+ SpeechVoicePriority Priority {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(9)]
+ get;
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(9)]
+ [param: In]
+ set;
+ }
+
+ [DispId(10)]
+ SpeechVoiceEvents AlertBoundary {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(10)]
+ get;
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(10)]
+ [param: In]
+ set;
+ }
+
+ [DispId(11)]
+ int SynchronousSpeakTimeout {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(11)]
+ get;
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(11)]
+ [param: In]
+ set;
+ }
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(12)]
+ int Speak([In][MarshalAs(UnmanagedType.BStr)] string Text, [In] SpeechVoiceSpeakFlags Flags = SpeechVoiceSpeakFlags.SVSFDefault);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(13)]
+ int SpeakStream([In][MarshalAs(UnmanagedType.Interface)] ISpeechBaseStream Stream, [In] SpeechVoiceSpeakFlags Flags = SpeechVoiceSpeakFlags.SVSFDefault);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(14)]
+ void Pause();
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(15)]
+ void Resume();
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(16)]
+ int Skip([In][MarshalAs(UnmanagedType.BStr)] string Type, [In] int NumItems);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(17)]
+ [return: MarshalAs(UnmanagedType.Interface)]
+ ISpeechObjectTokens GetVoices([In][MarshalAs(UnmanagedType.BStr)] string RequiredAttributes = "", [In][MarshalAs(UnmanagedType.BStr)] string OptionalAttributes = "");
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(18)]
+ [return: MarshalAs(UnmanagedType.Interface)]
+ ISpeechObjectTokens GetAudioOutputs([In][MarshalAs(UnmanagedType.BStr)] string RequiredAttributes = "", [In][MarshalAs(UnmanagedType.BStr)] string OptionalAttributes = "");
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(19)]
+ bool WaitUntilDone([In] int msTimeout);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [TypeLibFunc(64)]
+ [DispId(20)]
+ nint SpeakCompleteEvent();
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(21)]
+ bool IsUISupported([In][MarshalAs(UnmanagedType.BStr)] string TypeOfUI, [Optional][In][MarshalAs(UnmanagedType.Struct)] ref object ExtraData);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(22)]
+ void DisplayUI([In] int hWndParent, [In][MarshalAs(UnmanagedType.BStr)] string Title, [In][MarshalAs(UnmanagedType.BStr)] string TypeOfUI, [Optional][In][MarshalAs(UnmanagedType.Struct)] ref object ExtraData);
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechVoice.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechVoice.cs.meta
new file mode 100644
index 0000000..7b70a7e
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechVoice.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 15960ad47dd69ef478bdfa217dc3838c
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechVoiceStatus.cs b/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechVoiceStatus.cs
new file mode 100644
index 0000000..02d3681
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechVoiceStatus.cs
@@ -0,0 +1,96 @@
+using System;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+namespace SpeechLib {
+ [ComImport]
+ [Guid("8BE47B07-57F6-11D2-9EEE-00C04F797396")]
+ [TypeLibType(4160)]
+ public interface ISpeechVoiceStatus {
+ [DispId(1)]
+ int CurrentStreamNumber {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(1)]
+ get;
+ }
+
+ [DispId(2)]
+ int LastStreamNumberQueued {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(2)]
+ get;
+ }
+
+ [DispId(3)]
+ int LastHResult {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(3)]
+ get;
+ }
+
+ [DispId(4)]
+ SpeechRunState RunningState {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(4)]
+ get;
+ }
+
+ [DispId(5)]
+ int InputWordPosition {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(5)]
+ get;
+ }
+
+ [DispId(6)]
+ int InputWordLength {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(6)]
+ get;
+ }
+
+ [DispId(7)]
+ int InputSentencePosition {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(7)]
+ get;
+ }
+
+ [DispId(8)]
+ int InputSentenceLength {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(8)]
+ get;
+ }
+
+ [DispId(9)]
+ string LastBookmark {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(9)]
+ [return: MarshalAs(UnmanagedType.BStr)]
+ get;
+ }
+
+ [DispId(10)]
+ int LastBookmarkId {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [TypeLibFunc(64)]
+ [DispId(10)]
+ get;
+ }
+
+ [DispId(11)]
+ short PhonemeId {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(11)]
+ get;
+ }
+
+ [DispId(12)]
+ short VisemeId {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(12)]
+ get;
+ }
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechVoiceStatus.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechVoiceStatus.cs.meta
new file mode 100644
index 0000000..04534b6
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechVoiceStatus.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 11c572347fde7834d928165b3d458190
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechWaveFormatEx.cs b/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechWaveFormatEx.cs
new file mode 100644
index 0000000..dbcf594
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechWaveFormatEx.cs
@@ -0,0 +1,89 @@
+using System;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+namespace SpeechLib {
+ [ComImport]
+ [Guid("7A1EF0D5-1581-4741-88E4-209A49F11A10")]
+ [TypeLibType(4160)]
+ public interface ISpeechWaveFormatEx {
+ [DispId(1)]
+ short FormatTag {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(1)]
+ get;
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(1)]
+ [param: In]
+ set;
+ }
+
+ [DispId(2)]
+ short Channels {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(2)]
+ get;
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(2)]
+ [param: In]
+ set;
+ }
+
+ [DispId(3)]
+ int SamplesPerSec {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(3)]
+ get;
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(3)]
+ [param: In]
+ set;
+ }
+
+ [DispId(4)]
+ int AvgBytesPerSec {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(4)]
+ get;
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(4)]
+ [param: In]
+ set;
+ }
+
+ [DispId(5)]
+ short BlockAlign {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(5)]
+ get;
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(5)]
+ [param: In]
+ set;
+ }
+
+ [DispId(6)]
+ short BitsPerSample {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(6)]
+ get;
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(6)]
+ [param: In]
+ set;
+ }
+
+ [DispId(7)]
+ object ExtraData {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(7)]
+ [return: MarshalAs(UnmanagedType.Struct)]
+ get;
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(7)]
+ [param: In]
+ [param: MarshalAs(UnmanagedType.Struct)]
+ set;
+ }
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechWaveFormatEx.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechWaveFormatEx.cs.meta
new file mode 100644
index 0000000..829dc37
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/ISpeechWaveFormatEx.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 16611605854765a4db58ea3fec7cb71e
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/Interop.SpeechLib.asmdef b/Assets/Plugins/Windows/Interop.SpeechLib/Interop.SpeechLib.asmdef
new file mode 100644
index 0000000..f375c69
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/Interop.SpeechLib.asmdef
@@ -0,0 +1,18 @@
+{
+ "name": "Interop.SpeechLib",
+ "rootNamespace": "",
+ "references": [],
+ "includePlatforms": [
+ "Editor",
+ "WindowsStandalone32",
+ "WindowsStandalone64"
+ ],
+ "excludePlatforms": [],
+ "allowUnsafeCode": false,
+ "overrideReferences": false,
+ "precompiledReferences": [],
+ "autoReferenced": true,
+ "defineConstraints": [],
+ "versionDefines": [],
+ "noEngineReferences": true
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/Interop.SpeechLib.asmdef.meta b/Assets/Plugins/Windows/Interop.SpeechLib/Interop.SpeechLib.asmdef.meta
new file mode 100644
index 0000000..c1747e1
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/Interop.SpeechLib.asmdef.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 1e0937e40dadba24a97b7342c4559580
+AssemblyDefinitionImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SPDATAKEYLOCATION.cs b/Assets/Plugins/Windows/Interop.SpeechLib/SPDATAKEYLOCATION.cs
new file mode 100644
index 0000000..df27586
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SPDATAKEYLOCATION.cs
@@ -0,0 +1,11 @@
+using System.Runtime.InteropServices;
+
+namespace SpeechLib {
+ [TypeLibType(16)]
+ public enum SPDATAKEYLOCATION {
+ SPDKL_DefaultLocation = 0,
+ SPDKL_CurrentUser = 1,
+ SPDKL_LocalMachine = 2,
+ SPDKL_CurrentConfig = 5
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SPDATAKEYLOCATION.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/SPDATAKEYLOCATION.cs.meta
new file mode 100644
index 0000000..5ad5b62
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SPDATAKEYLOCATION.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 217ea5e808aeb3548bb7c5d3bed0e08d
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SPEVENT.cs b/Assets/Plugins/Windows/Interop.SpeechLib/SPEVENT.cs
new file mode 100644
index 0000000..f222779
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SPEVENT.cs
@@ -0,0 +1,21 @@
+using System.Runtime.InteropServices;
+
+namespace SpeechLib {
+ [StructLayout(LayoutKind.Sequential, Pack = 8)]
+ [TypeLibType(528)]
+ public struct SPEVENT {
+ public ushort eEventId;
+
+ public ushort elParamType;
+
+ public uint ulStreamNum;
+
+ public ulong ullAudioStreamOffset;
+
+ [ComAliasName("SpeechLib.UINT_PTR")]
+ public ulong wParam;
+
+ [ComAliasName("SpeechLib.LONG_PTR")]
+ public long lParam;
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SPEVENT.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/SPEVENT.cs.meta
new file mode 100644
index 0000000..a7934bc
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SPEVENT.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 0f4f5ccf56f5f3043b0647e5f20d458d
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SPEVENTENUM.cs b/Assets/Plugins/Windows/Interop.SpeechLib/SPEVENTENUM.cs
new file mode 100644
index 0000000..8dce980
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SPEVENTENUM.cs
@@ -0,0 +1,47 @@
+using System.Runtime.InteropServices;
+
+namespace SpeechLib {
+ [TypeLibType(16)]
+ public enum SPEVENTENUM {
+ SPEI_UNDEFINED = 0,
+ SPEI_START_INPUT_STREAM = 1,
+ SPEI_END_INPUT_STREAM = 2,
+ SPEI_VOICE_CHANGE = 3,
+ SPEI_TTS_BOOKMARK = 4,
+ SPEI_WORD_BOUNDARY = 5,
+ SPEI_PHONEME = 6,
+ SPEI_SENTENCE_BOUNDARY = 7,
+ SPEI_VISEME = 8,
+ SPEI_TTS_AUDIO_LEVEL = 9,
+ SPEI_TTS_PRIVATE = 15,
+ SPEI_MIN_TTS = 1,
+ SPEI_MAX_TTS = 15,
+ SPEI_END_SR_STREAM = 34,
+ SPEI_SOUND_START = 35,
+ SPEI_SOUND_END = 36,
+ SPEI_PHRASE_START = 37,
+ SPEI_RECOGNITION = 38,
+ SPEI_HYPOTHESIS = 39,
+ SPEI_SR_BOOKMARK = 40,
+ SPEI_PROPERTY_NUM_CHANGE = 41,
+ SPEI_PROPERTY_STRING_CHANGE = 42,
+ SPEI_FALSE_RECOGNITION = 43,
+ SPEI_INTERFERENCE = 44,
+ SPEI_REQUEST_UI = 45,
+ SPEI_RECO_STATE_CHANGE = 46,
+ SPEI_ADAPTATION = 47,
+ SPEI_START_SR_STREAM = 48,
+ SPEI_RECO_OTHER_CONTEXT = 49,
+ SPEI_SR_AUDIO_LEVEL = 50,
+ SPEI_SR_RETAINEDAUDIO = 51,
+ SPEI_SR_PRIVATE = 52,
+ SPEI_ACTIVE_CATEGORY_CHANGED = 53,
+ SPEI_RESERVED5 = 54,
+ SPEI_RESERVED6 = 55,
+ SPEI_MIN_SR = 34,
+ SPEI_MAX_SR = 55,
+ SPEI_RESERVED1 = 30,
+ SPEI_RESERVED2 = 33,
+ SPEI_RESERVED3 = 63
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SPEVENTENUM.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/SPEVENTENUM.cs.meta
new file mode 100644
index 0000000..b20b6bf
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SPEVENTENUM.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 77fb11847c4af3e4dbe279deb892d6cc
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SPEVENTSOURCEINFO.cs b/Assets/Plugins/Windows/Interop.SpeechLib/SPEVENTSOURCEINFO.cs
new file mode 100644
index 0000000..7cb89e2
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SPEVENTSOURCEINFO.cs
@@ -0,0 +1,13 @@
+using System.Runtime.InteropServices;
+
+namespace SpeechLib {
+ [StructLayout(LayoutKind.Sequential, Pack = 8)]
+ [TypeLibType(528)]
+ public struct SPEVENTSOURCEINFO {
+ public ulong ullEventInterest;
+
+ public ulong ullQueuedInterest;
+
+ public uint ulCount;
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SPEVENTSOURCEINFO.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/SPEVENTSOURCEINFO.cs.meta
new file mode 100644
index 0000000..6fa47e8
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SPEVENTSOURCEINFO.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d926041e2036d6f46958a0f68b89f3c5
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SPVISEMES.cs b/Assets/Plugins/Windows/Interop.SpeechLib/SPVISEMES.cs
new file mode 100644
index 0000000..9eb6095
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SPVISEMES.cs
@@ -0,0 +1,29 @@
+using System.Runtime.InteropServices;
+
+namespace SpeechLib {
+ [TypeLibType(16)]
+ public enum SPVISEMES {
+ SP_VISEME_0,
+ SP_VISEME_1,
+ SP_VISEME_2,
+ SP_VISEME_3,
+ SP_VISEME_4,
+ SP_VISEME_5,
+ SP_VISEME_6,
+ SP_VISEME_7,
+ SP_VISEME_8,
+ SP_VISEME_9,
+ SP_VISEME_10,
+ SP_VISEME_11,
+ SP_VISEME_12,
+ SP_VISEME_13,
+ SP_VISEME_14,
+ SP_VISEME_15,
+ SP_VISEME_16,
+ SP_VISEME_17,
+ SP_VISEME_18,
+ SP_VISEME_19,
+ SP_VISEME_20,
+ SP_VISEME_21
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SPVISEMES.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/SPVISEMES.cs.meta
new file mode 100644
index 0000000..1c899b6
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SPVISEMES.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 4a65c28791d51e94b8987ffee064a2f7
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SPVOICESTATUS.cs b/Assets/Plugins/Windows/Interop.SpeechLib/SPVOICESTATUS.cs
new file mode 100644
index 0000000..dae6c6d
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SPVOICESTATUS.cs
@@ -0,0 +1,35 @@
+using System.Runtime.InteropServices;
+
+namespace SpeechLib {
+
+ [StructLayout(LayoutKind.Sequential, Pack = 4)]
+ [TypeLibType(528)]
+ public struct SPVOICESTATUS {
+ public uint ulCurrentStream;
+
+ public uint ulLastStreamQueued;
+
+ [MarshalAs(UnmanagedType.Error)]
+ public int hrLastResult;
+
+ public uint dwRunningState;
+
+ public uint ulInputWordPos;
+
+ public uint ulInputWordLen;
+
+ public uint ulInputSentPos;
+
+ public uint ulInputSentLen;
+
+ public int lBookmarkId;
+
+ public ushort PhonemeId;
+
+ public SPVISEMES VisemeId;
+
+ public uint dwReserved1;
+
+ public uint dwReserved2;
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SPVOICESTATUS.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/SPVOICESTATUS.cs.meta
new file mode 100644
index 0000000..e1b51b2
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SPVOICESTATUS.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 7744246d43381b74c9ddbec63dd9966d
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SPVPRIORITY.cs b/Assets/Plugins/Windows/Interop.SpeechLib/SPVPRIORITY.cs
new file mode 100644
index 0000000..5a0627c
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SPVPRIORITY.cs
@@ -0,0 +1,10 @@
+using System.Runtime.InteropServices;
+
+namespace SpeechLib {
+ [TypeLibType(16)]
+ public enum SPVPRIORITY {
+ SPVPRI_NORMAL,
+ SPVPRI_ALERT,
+ SPVPRI_OVER
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SPVPRIORITY.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/SPVPRIORITY.cs.meta
new file mode 100644
index 0000000..2d118c8
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SPVPRIORITY.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 14660a10d59475c47a6cb945b87cfd12
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SpAudioFormat.cs b/Assets/Plugins/Windows/Interop.SpeechLib/SpAudioFormat.cs
new file mode 100644
index 0000000..2315b3a
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SpAudioFormat.cs
@@ -0,0 +1,53 @@
+using System;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+namespace SpeechLib {
+ [ComImport]
+ [CoClass(typeof(SpAudioFormatClass))]
+ [Guid("E6E9C590-3E18-40E3-8299-061F98BDE7C7")]
+ public interface SpAudioFormat : ISpeechAudioFormat { }
+
+ [ComImport]
+ [Guid("9EF96870-E160-4792-820D-48CF0649E4EC")]
+ [ClassInterface((ClassInterfaceType)0)]
+ [TypeLibType(2)]
+ public class SpAudioFormatClass : ISpeechAudioFormat, SpAudioFormat {
+ [DispId(1)]
+ public virtual extern SpeechAudioFormatType Type {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(1)]
+ get;
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(1)]
+ [param: In]
+ set;
+ }
+
+ [DispId(2)]
+ public virtual extern string Guid {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(2)]
+ [TypeLibFunc(64)]
+ [return: MarshalAs(UnmanagedType.BStr)]
+ get;
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [TypeLibFunc(64)]
+ [DispId(2)]
+ [param: In]
+ [param: MarshalAs(UnmanagedType.BStr)]
+ set;
+ }
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(3)]
+ [TypeLibFunc(64)]
+ [return: MarshalAs(UnmanagedType.Interface)]
+ public virtual extern SpWaveFormatEx GetWaveFormatEx();
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(4)]
+ [TypeLibFunc(64)]
+ public virtual extern void SetWaveFormatEx([In][MarshalAs(UnmanagedType.Interface)] SpWaveFormatEx SpeechWaveFormatEx);
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SpAudioFormat.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/SpAudioFormat.cs.meta
new file mode 100644
index 0000000..0a228ee
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SpAudioFormat.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 86d5321cd6800ea43be2a2e5892ad839
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SpMMAudioEnum.cs b/Assets/Plugins/Windows/Interop.SpeechLib/SpMMAudioEnum.cs
new file mode 100644
index 0000000..ebcd1cb
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SpMMAudioEnum.cs
@@ -0,0 +1,34 @@
+using System;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+namespace SpeechLib {
+ [ComImport]
+ [CoClass(typeof(SpMMAudioEnumClass))]
+ [Guid("06B64F9E-7FDA-11D2-B4F2-00C04F797396")]
+ public interface SpMMAudioEnum : IEnumSpObjectTokens { }
+
+ [ComImport]
+ [ClassInterface((ClassInterfaceType)0)]
+ [Guid("AB1890A0-E91F-11D2-BB91-00C04F8EE6C0")]
+ [TypeLibType(530)]
+ public class SpMMAudioEnumClass : IEnumSpObjectTokens, SpMMAudioEnum {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void Next([In] uint celt, [MarshalAs(UnmanagedType.Interface)] out ISpObjectToken pelt, out uint pceltFetched);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void Skip([In] uint celt);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void Reset();
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void Clone([MarshalAs(UnmanagedType.Interface)] out SpMMAudioEnum ppEnum);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void Item([In] uint Index, [MarshalAs(UnmanagedType.Interface)] out ISpObjectToken ppToken);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void GetCount(out uint pCount);
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SpMMAudioEnum.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/SpMMAudioEnum.cs.meta
new file mode 100644
index 0000000..ba6fa62
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SpMMAudioEnum.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 609bdee720cf41b4486287608f28c3d9
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SpObjectToken.cs b/Assets/Plugins/Windows/Interop.SpeechLib/SpObjectToken.cs
new file mode 100644
index 0000000..4f70cc7
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SpObjectToken.cs
@@ -0,0 +1,157 @@
+using System;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+namespace SpeechLib {
+ [ComImport]
+ [CoClass(typeof(SpObjectTokenClass))]
+ [Guid("C74A3ADC-B727-4500-A84A-B526721C8B8C")]
+ public interface SpObjectToken : ISpeechObjectToken { }
+
+ [ComImport]
+ [Guid("EF411752-3736-4CB4-9C8C-8EF4CCB58EFE")]
+ [TypeLibType(2)]
+ [ClassInterface((ClassInterfaceType)0)]
+ public class SpObjectTokenClass : ISpeechObjectToken, SpObjectToken, ISpObjectToken {
+ [DispId(1)]
+ public virtual extern string Id {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(1)]
+ [return: MarshalAs(UnmanagedType.BStr)]
+ get;
+ }
+
+ [DispId(2)]
+ public virtual extern ISpeechDataKey DataKey {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [TypeLibFunc(64)]
+ [DispId(2)]
+ [return: MarshalAs(UnmanagedType.Interface)]
+ get;
+ }
+
+ [DispId(3)]
+ public virtual extern SpObjectTokenCategory Category {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(3)]
+ [return: MarshalAs(UnmanagedType.Interface)]
+ get;
+ }
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(4)]
+ [return: MarshalAs(UnmanagedType.BStr)]
+ public virtual extern string GetDescription([In] int Locale = 0);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(5)]
+ [TypeLibFunc(64)]
+ public virtual extern void SetId([In][MarshalAs(UnmanagedType.BStr)] string Id, [In][MarshalAs(UnmanagedType.BStr)] string CategoryID = "", [In] bool CreateIfNotExist = false);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(6)]
+ [return: MarshalAs(UnmanagedType.BStr)]
+ public virtual extern string GetAttribute([In][MarshalAs(UnmanagedType.BStr)] string AttributeName);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(7)]
+ [return: MarshalAs(UnmanagedType.IUnknown)]
+ public virtual extern object CreateInstance([Optional][In][IUnknownConstant][MarshalAs(UnmanagedType.IUnknown)] object pUnkOuter, [In] SpeechTokenContext ClsContext = SpeechTokenContext.STCAll);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(8)]
+ [TypeLibFunc(64)]
+ public virtual extern void Remove([In][MarshalAs(UnmanagedType.BStr)] string ObjectStorageCLSID);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(9)]
+ [TypeLibFunc(64)]
+ [return: MarshalAs(UnmanagedType.BStr)]
+ public virtual extern string GetStorageFileName([In][MarshalAs(UnmanagedType.BStr)] string ObjectStorageCLSID, [In][MarshalAs(UnmanagedType.BStr)] string KeyName, [In][MarshalAs(UnmanagedType.BStr)] string FileName, [In] SpeechTokenShellFolder Folder);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [TypeLibFunc(64)]
+ [DispId(10)]
+ public virtual extern void RemoveStorageFileName([In][MarshalAs(UnmanagedType.BStr)] string ObjectStorageCLSID, [In][MarshalAs(UnmanagedType.BStr)] string KeyName, [In] bool DeleteFile);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(11)]
+ [TypeLibFunc(64)]
+ public virtual extern bool IsUISupported([In][MarshalAs(UnmanagedType.BStr)] string TypeOfUI, [Optional][In][MarshalAs(UnmanagedType.Struct)] ref object ExtraData, [Optional][In][IUnknownConstant][MarshalAs(UnmanagedType.IUnknown)] object Object);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [TypeLibFunc(64)]
+ [DispId(12)]
+ public virtual extern void DisplayUI([In] int hWnd, [In][MarshalAs(UnmanagedType.BStr)] string Title, [In][MarshalAs(UnmanagedType.BStr)] string TypeOfUI, [Optional][In][MarshalAs(UnmanagedType.Struct)] ref object ExtraData, [Optional][In][IUnknownConstant][MarshalAs(UnmanagedType.IUnknown)] object Object);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(13)]
+ public virtual extern bool MatchesAttributes([In][MarshalAs(UnmanagedType.BStr)] string Attributes);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void SetData([In][MarshalAs(UnmanagedType.LPWStr)] string pszValueName, [In] uint cbData, [In] ref byte pData);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void GetData([In][MarshalAs(UnmanagedType.LPWStr)] string pszValueName, [In] ref uint pcbData, out byte pData);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void SetStringValue([In][MarshalAs(UnmanagedType.LPWStr)] string pszValueName, [In][MarshalAs(UnmanagedType.LPWStr)] string pszValue);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void GetStringValue([In][MarshalAs(UnmanagedType.LPWStr)] string pszValueName, [MarshalAs(UnmanagedType.LPWStr)] out string ppszValue);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void SetDWORD([In][MarshalAs(UnmanagedType.LPWStr)] string pszValueName, [In] uint dwValue);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void GetDWORD([In][MarshalAs(UnmanagedType.LPWStr)] string pszValueName, out uint pdwValue);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void OpenKey([In][MarshalAs(UnmanagedType.LPWStr)] string pszSubKeyName, [MarshalAs(UnmanagedType.Interface)] out ISpDataKey ppSubKey);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void CreateKey([In][MarshalAs(UnmanagedType.LPWStr)] string pszSubKey, [MarshalAs(UnmanagedType.Interface)] out ISpDataKey ppSubKey);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void DeleteKey([In][MarshalAs(UnmanagedType.LPWStr)] string pszSubKey);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void DeleteValue([In][MarshalAs(UnmanagedType.LPWStr)] string pszValueName);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void EnumKeys([In] uint Index, [MarshalAs(UnmanagedType.LPWStr)] out string ppszSubKeyName);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void EnumValues([In] uint Index, [MarshalAs(UnmanagedType.LPWStr)] out string ppszValueName);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void SetId([MarshalAs(UnmanagedType.LPWStr)] string pszCategoryId, [In][MarshalAs(UnmanagedType.LPWStr)] string pszTokenId, [In] int fCreateIfNotExist);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void GetId([MarshalAs(UnmanagedType.LPWStr)] out string ppszCoMemTokenId);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void GetCategory([MarshalAs(UnmanagedType.Interface)] out ISpObjectTokenCategory ppTokenCategory);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void CreateInstance([In][MarshalAs(UnmanagedType.IUnknown)] object pUnkOuter, [In] uint dwClsContext, [In] ref Guid riid, out IntPtr ppvObject);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void GetStorageFileName([In] ref Guid clsidCaller, [In][MarshalAs(UnmanagedType.LPWStr)] string pszValueName, [In][MarshalAs(UnmanagedType.LPWStr)] string pszFileNameSpecifier, [In] uint nFolder, [MarshalAs(UnmanagedType.LPWStr)] out string ppszFilePath);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void RemoveStorageFileName([In] ref Guid clsidCaller, [In][MarshalAs(UnmanagedType.LPWStr)] string pszKeyName, [In] int fDeleteFile);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void Remove(ref Guid pclsidCaller);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void IsUISupported([In][MarshalAs(UnmanagedType.LPWStr)] string pszTypeOfUI, [In] IntPtr pvExtraData, [In] uint cbExtraData, [In][MarshalAs(UnmanagedType.IUnknown)] object punkObject, out int pfSupported);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void DisplayUI([In][ComAliasName("SpeechLib.wireHWND")] ref _RemotableHandle hWndParent, [In][MarshalAs(UnmanagedType.LPWStr)] string pszTitle, [In][MarshalAs(UnmanagedType.LPWStr)] string pszTypeOfUI, [In] IntPtr pvExtraData, [In] uint cbExtraData, [In][MarshalAs(UnmanagedType.IUnknown)] object punkObject);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void MatchesAttributes([In][MarshalAs(UnmanagedType.LPWStr)] string pszAttributes, out int pfMatches);
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SpObjectToken.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/SpObjectToken.cs.meta
new file mode 100644
index 0000000..7f28eed
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SpObjectToken.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 7514e237bf33f1a4e859d3b5f798b2b1
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SpObjectTokenCategory.cs b/Assets/Plugins/Windows/Interop.SpeechLib/SpObjectTokenCategory.cs
new file mode 100644
index 0000000..d310628
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SpObjectTokenCategory.cs
@@ -0,0 +1,106 @@
+using System;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+namespace SpeechLib {
+ [ComImport]
+ [Guid("CA7EAC50-2D01-4145-86D4-5AE7D70F4469")]
+ [CoClass(typeof(SpObjectTokenCategoryClass))]
+ public interface SpObjectTokenCategory : ISpeechObjectTokenCategory { }
+
+ [ComImport]
+ [ClassInterface((ClassInterfaceType)0)]
+ [Guid("A910187F-0C7A-45AC-92CC-59EDAFB77B53")]
+ [TypeLibType(2)]
+ public class SpObjectTokenCategoryClass : ISpeechObjectTokenCategory, SpObjectTokenCategory, ISpObjectTokenCategory {
+ [DispId(1)]
+ public virtual extern string Id {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(1)]
+ [return: MarshalAs(UnmanagedType.BStr)]
+ get;
+ }
+
+ [DispId(2)]
+ public virtual extern string Default {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(2)]
+ [return: MarshalAs(UnmanagedType.BStr)]
+ get;
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(2)]
+ [param: In]
+ [param: MarshalAs(UnmanagedType.BStr)]
+ set;
+ }
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(3)]
+ public virtual extern void SetId([In][MarshalAs(UnmanagedType.BStr)] string Id, [In] bool CreateIfNotExist = false);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(4)]
+ [TypeLibFunc(64)]
+ [return: MarshalAs(UnmanagedType.Interface)]
+ public virtual extern ISpeechDataKey GetDataKey([In] SpeechDataKeyLocation Location = SpeechDataKeyLocation.SDKLDefaultLocation);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(5)]
+ [return: MarshalAs(UnmanagedType.Interface)]
+ public virtual extern ISpeechObjectTokens EnumerateTokens([In][MarshalAs(UnmanagedType.BStr)] string RequiredAttributes = "", [In][MarshalAs(UnmanagedType.BStr)] string OptionalAttributes = "");
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void SetData([In][MarshalAs(UnmanagedType.LPWStr)] string pszValueName, [In] uint cbData, [In] ref byte pData);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void GetData([In][MarshalAs(UnmanagedType.LPWStr)] string pszValueName, [In] ref uint pcbData, out byte pData);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void SetStringValue([In][MarshalAs(UnmanagedType.LPWStr)] string pszValueName, [In][MarshalAs(UnmanagedType.LPWStr)] string pszValue);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void GetStringValue([In][MarshalAs(UnmanagedType.LPWStr)] string pszValueName, [MarshalAs(UnmanagedType.LPWStr)] out string ppszValue);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void SetDWORD([In][MarshalAs(UnmanagedType.LPWStr)] string pszValueName, [In] uint dwValue);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void GetDWORD([In][MarshalAs(UnmanagedType.LPWStr)] string pszValueName, out uint pdwValue);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void OpenKey([In][MarshalAs(UnmanagedType.LPWStr)] string pszSubKeyName, [MarshalAs(UnmanagedType.Interface)] out ISpDataKey ppSubKey);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void CreateKey([In][MarshalAs(UnmanagedType.LPWStr)] string pszSubKey, [MarshalAs(UnmanagedType.Interface)] out ISpDataKey ppSubKey);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void DeleteKey([In][MarshalAs(UnmanagedType.LPWStr)] string pszSubKey);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void DeleteValue([In][MarshalAs(UnmanagedType.LPWStr)] string pszValueName);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void EnumKeys([In] uint Index, [MarshalAs(UnmanagedType.LPWStr)] out string ppszSubKeyName);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void EnumValues([In] uint Index, [MarshalAs(UnmanagedType.LPWStr)] out string ppszValueName);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void SetId([In][MarshalAs(UnmanagedType.LPWStr)] string pszCategoryId, [In] int fCreateIfNotExist);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void GetId([MarshalAs(UnmanagedType.LPWStr)] out string ppszCoMemCategoryId);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void GetDataKey([In] SPDATAKEYLOCATION spdkl, [MarshalAs(UnmanagedType.Interface)] out ISpDataKey ppDataKey);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void EnumTokens([In][MarshalAs(UnmanagedType.LPWStr)] string pzsReqAttribs, [In][MarshalAs(UnmanagedType.LPWStr)] string pszOptAttribs, [MarshalAs(UnmanagedType.Interface)] out SpMMAudioEnum ppEnum);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void SetDefaultTokenId([In][MarshalAs(UnmanagedType.LPWStr)] string pszTokenId);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void GetDefaultTokenId([MarshalAs(UnmanagedType.LPWStr)] out string ppszCoMemTokenId);
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SpObjectTokenCategory.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/SpObjectTokenCategory.cs.meta
new file mode 100644
index 0000000..a1a969c
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SpObjectTokenCategory.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d64596966548b0f4a8252cd13daeecaf
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SpVoice.cs b/Assets/Plugins/Windows/Interop.SpeechLib/SpVoice.cs
new file mode 100644
index 0000000..de14514
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SpVoice.cs
@@ -0,0 +1,322 @@
+using System;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Runtime.InteropServices.ComTypes;
+
+namespace SpeechLib {
+ [ComImport]
+ [CoClass(typeof(SpVoiceClass))]
+ [Guid("269316D8-57BD-11D2-9EEE-00C04F797396")]
+ public interface SpVoice : ISpeechVoice, _ISpeechVoiceEvents_Event { }
+
+ [ComImport]
+ [ComSourceInterfaces("SpeechLib._ISpeechVoiceEvents\0\0")]
+ [TypeLibType(2)]
+ [ClassInterface((ClassInterfaceType)0)]
+ [Guid("96749377-3391-11D2-9EE3-00C04F797396")]
+ public class SpVoiceClass : ISpeechVoice, SpVoice, _ISpeechVoiceEvents_Event, ISpVoice, ISpPhoneticAlphabetSelection {
+ [DispId(1)]
+ public virtual extern ISpeechVoiceStatus Status {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(1)]
+ [return: MarshalAs(UnmanagedType.Interface)]
+ get;
+ }
+
+ [DispId(2)]
+ public virtual extern SpObjectToken Voice {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(2)]
+ [return: MarshalAs(UnmanagedType.Interface)]
+ get;
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(2)]
+ [param: In]
+ [param: MarshalAs(UnmanagedType.Interface)]
+ set;
+ }
+
+ [DispId(3)]
+ public virtual extern SpObjectToken AudioOutput {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(3)]
+ [return: MarshalAs(UnmanagedType.Interface)]
+ get;
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(3)]
+ [param: In]
+ [param: MarshalAs(UnmanagedType.Interface)]
+ set;
+ }
+
+ [DispId(4)]
+ public virtual extern ISpeechBaseStream AudioOutputStream {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(4)]
+ [return: MarshalAs(UnmanagedType.Interface)]
+ get;
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(4)]
+ [param: In]
+ [param: MarshalAs(UnmanagedType.Interface)]
+ set;
+ }
+
+ [DispId(5)]
+ public virtual extern int Rate {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(5)]
+ get;
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(5)]
+ [param: In]
+ set;
+ }
+
+ [DispId(6)]
+ public virtual extern int Volume {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(6)]
+ get;
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(6)]
+ [param: In]
+ set;
+ }
+
+ [DispId(7)]
+ public virtual extern bool AllowAudioOutputFormatChangesOnNextSet {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(7)]
+ [TypeLibFunc(64)]
+ get;
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(7)]
+ [TypeLibFunc(64)]
+ [param: In]
+ set;
+ }
+
+ [DispId(8)]
+ public virtual extern SpeechVoiceEvents EventInterests {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(8)]
+ get;
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(8)]
+ [param: In]
+ set;
+ }
+
+ [DispId(9)]
+ public virtual extern SpeechVoicePriority Priority {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(9)]
+ get;
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(9)]
+ [param: In]
+ set;
+ }
+
+ [DispId(10)]
+ public virtual extern SpeechVoiceEvents AlertBoundary {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(10)]
+ get;
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(10)]
+ [param: In]
+ set;
+ }
+
+ [DispId(11)]
+ public virtual extern int SynchronousSpeakTimeout {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(11)]
+ get;
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(11)]
+ [param: In]
+ set;
+ }
+
+ public virtual extern event _ISpeechVoiceEvents_StartStreamEventHandler StartStream;
+
+ public virtual extern event _ISpeechVoiceEvents_EndStreamEventHandler EndStream;
+
+ public virtual extern event _ISpeechVoiceEvents_VoiceChangeEventHandler VoiceChange;
+
+ public virtual extern event _ISpeechVoiceEvents_BookmarkEventHandler Bookmark;
+
+ public virtual extern event _ISpeechVoiceEvents_WordEventHandler Word;
+
+ public virtual extern event _ISpeechVoiceEvents_SentenceEventHandler Sentence;
+
+ public virtual extern event _ISpeechVoiceEvents_PhonemeEventHandler Phoneme;
+
+ public virtual extern event _ISpeechVoiceEvents_VisemeEventHandler Viseme;
+
+ public virtual extern event _ISpeechVoiceEvents_AudioLevelEventHandler AudioLevel;
+
+ public virtual extern event _ISpeechVoiceEvents_EnginePrivateEventHandler EnginePrivate;
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(12)]
+ public virtual extern int Speak([In][MarshalAs(UnmanagedType.BStr)] string Text, [In] SpeechVoiceSpeakFlags Flags = SpeechVoiceSpeakFlags.SVSFDefault);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(13)]
+ public virtual extern int SpeakStream([In][MarshalAs(UnmanagedType.Interface)] ISpeechBaseStream Stream, [In] SpeechVoiceSpeakFlags Flags = SpeechVoiceSpeakFlags.SVSFDefault);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(14)]
+ public virtual extern void Pause();
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(15)]
+ public virtual extern void Resume();
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(16)]
+ public virtual extern int Skip([In][MarshalAs(UnmanagedType.BStr)] string Type, [In] int NumItems);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(17)]
+ [return: MarshalAs(UnmanagedType.Interface)]
+ public virtual extern ISpeechObjectTokens GetVoices([In][MarshalAs(UnmanagedType.BStr)] string RequiredAttributes = "", [In][MarshalAs(UnmanagedType.BStr)] string OptionalAttributes = "");
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(18)]
+ [return: MarshalAs(UnmanagedType.Interface)]
+ public virtual extern ISpeechObjectTokens GetAudioOutputs([In][MarshalAs(UnmanagedType.BStr)] string RequiredAttributes = "", [In][MarshalAs(UnmanagedType.BStr)] string OptionalAttributes = "");
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(19)]
+ public virtual extern bool WaitUntilDone([In] int msTimeout);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(20)]
+ [TypeLibFunc(64)]
+ public virtual extern nint SpeakCompleteEvent();
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(21)]
+ public virtual extern bool IsUISupported([In][MarshalAs(UnmanagedType.BStr)] string TypeOfUI, [Optional][In][MarshalAs(UnmanagedType.Struct)] ref object ExtraData);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(22)]
+ public virtual extern void DisplayUI([In] int hWndParent, [In][MarshalAs(UnmanagedType.BStr)] string Title, [In][MarshalAs(UnmanagedType.BStr)] string TypeOfUI, [Optional][In][MarshalAs(UnmanagedType.Struct)] ref object ExtraData);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void SetNotifySink([In][MarshalAs(UnmanagedType.Interface)] ISpNotifySink pNotifySink);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void SetNotifyWindowMessage([In][ComAliasName("SpeechLib.wireHWND")] ref _RemotableHandle hWnd, [In] uint Msg, [In][ComAliasName("SpeechLib.UINT_PTR")] ulong wParam, [In][ComAliasName("SpeechLib.LONG_PTR")] long lParam);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void SetNotifyCallbackFunction([In] ref IntPtr pfnCallback, [In][ComAliasName("SpeechLib.UINT_PTR")] ulong wParam, [In][ComAliasName("SpeechLib.LONG_PTR")] long lParam);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void SetNotifyCallbackInterface([In] ref IntPtr pSpCallback, [In][ComAliasName("SpeechLib.UINT_PTR")] ulong wParam, [In][ComAliasName("SpeechLib.LONG_PTR")] long lParam);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void SetNotifyWin32Event();
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void WaitForNotifyEvent([In] uint dwMilliseconds);
+
+ [MethodImpl(MethodImplOptions.PreserveSig | MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern IntPtr GetNotifyEventHandle();
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void SetInterest([In] ulong ullEventInterest, [In] ulong ullQueuedInterest);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void GetEvents([In] uint ulCount, out SPEVENT pEventArray, out uint pulFetched);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void GetInfo(out SPEVENTSOURCEINFO pInfo);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void SetOutput([In][MarshalAs(UnmanagedType.IUnknown)] object pUnkOutput, [In] int fAllowFormatChanges);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void GetOutputObjectToken([MarshalAs(UnmanagedType.Interface)] out ISpObjectToken ppObjectToken);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void GetOutputStream([MarshalAs(UnmanagedType.Interface)] out ISpStreamFormat ppStream);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void ISpVoice_Pause();
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void ISpVoice_Resume();
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void SetVoice([In][MarshalAs(UnmanagedType.Interface)] ISpObjectToken pToken);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void GetVoice([MarshalAs(UnmanagedType.Interface)] out ISpObjectToken ppToken);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void Speak([In][MarshalAs(UnmanagedType.LPWStr)] string pwcs, [In] uint dwFlags, out uint pulStreamNumber);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void SpeakStream([In][MarshalAs(UnmanagedType.Interface)] IStream pStream, [In] uint dwFlags, out uint pulStreamNumber);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void GetStatus(out SPVOICESTATUS pStatus, [MarshalAs(UnmanagedType.LPWStr)] out string ppszLastBookmark);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void Skip([In][MarshalAs(UnmanagedType.LPWStr)] string pItemType, [In] int lNumItems, out uint pulNumSkipped);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void SetPriority([In] SPVPRIORITY ePriority);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void GetPriority(out SPVPRIORITY pePriority);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void SetAlertBoundary([In] SPEVENTENUM eBoundary);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void GetAlertBoundary(out SPEVENTENUM peBoundary);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void SetRate([In] int RateAdjust);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void GetRate(out int pRateAdjust);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void SetVolume([In] ushort usVolume);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void GetVolume(out ushort pusVolume);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void WaitUntilDone([In] uint msTimeout);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void SetSyncSpeakTimeout([In] uint msTimeout);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void GetSyncSpeakTimeout(out uint pmsTimeout);
+
+ [MethodImpl(MethodImplOptions.PreserveSig | MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern IntPtr ISpVoice_SpeakCompleteEvent();
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void IsUISupported([In][MarshalAs(UnmanagedType.LPWStr)] string pszTypeOfUI, [In] IntPtr pvExtraData, [In] uint cbExtraData, out int pfSupported);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void DisplayUI([In][ComAliasName("SpeechLib.wireHWND")] ref _RemotableHandle hWndParent, [In][MarshalAs(UnmanagedType.LPWStr)] string pszTitle, [In][MarshalAs(UnmanagedType.LPWStr)] string pszTypeOfUI, [In] IntPtr pvExtraData, [In] uint cbExtraData);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void IsAlphabetUPS(out int pfIsUPS);
+
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ public virtual extern void SetAlphabetToUPS([In] int fForceUPS);
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SpVoice.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/SpVoice.cs.meta
new file mode 100644
index 0000000..54481f5
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SpVoice.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 0cd9856eb9478c5419fe19b0c5fe4869
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SpWaveFormatEx.cs b/Assets/Plugins/Windows/Interop.SpeechLib/SpWaveFormatEx.cs
new file mode 100644
index 0000000..e34f825
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SpWaveFormatEx.cs
@@ -0,0 +1,95 @@
+using System;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+namespace SpeechLib {
+ [ComImport]
+ [CoClass(typeof(SpWaveFormatExClass))]
+ [Guid("7A1EF0D5-1581-4741-88E4-209A49F11A10")]
+ public interface SpWaveFormatEx : ISpeechWaveFormatEx { }
+
+ [ComImport]
+ [TypeLibType(2)]
+ [ClassInterface((ClassInterfaceType)0)]
+ [Guid("C79A574C-63BE-44B9-801F-283F87F898BE")]
+ public class SpWaveFormatExClass : ISpeechWaveFormatEx, SpWaveFormatEx {
+ [DispId(1)]
+ public virtual extern short FormatTag {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(1)]
+ get;
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(1)]
+ [param: In]
+ set;
+ }
+
+ [DispId(2)]
+ public virtual extern short Channels {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(2)]
+ get;
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(2)]
+ [param: In]
+ set;
+ }
+
+ [DispId(3)]
+ public virtual extern int SamplesPerSec {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(3)]
+ get;
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(3)]
+ [param: In]
+ set;
+ }
+
+ [DispId(4)]
+ public virtual extern int AvgBytesPerSec {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(4)]
+ get;
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(4)]
+ [param: In]
+ set;
+ }
+
+ [DispId(5)]
+ public virtual extern short BlockAlign {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(5)]
+ get;
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(5)]
+ [param: In]
+ set;
+ }
+
+ [DispId(6)]
+ public virtual extern short BitsPerSample {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(6)]
+ get;
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(6)]
+ [param: In]
+ set;
+ }
+
+ [DispId(7)]
+ public virtual extern object ExtraData {
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(7)]
+ [return: MarshalAs(UnmanagedType.Struct)]
+ get;
+ [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(7)]
+ [param: In]
+ [param: MarshalAs(UnmanagedType.Struct)]
+ set;
+ }
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SpWaveFormatEx.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/SpWaveFormatEx.cs.meta
new file mode 100644
index 0000000..1c95d9e
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SpWaveFormatEx.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: f4ed37498f153644db78885d96fca065
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SpeechAudioFormatType.cs b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechAudioFormatType.cs
new file mode 100644
index 0000000..20bda25
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechAudioFormatType.cs
@@ -0,0 +1,81 @@
+using System.Runtime.InteropServices;
+
+namespace SpeechLib {
+ public enum SpeechAudioFormatType {
+ [TypeLibVar(64)]
+ SAFTDefault = -1,
+ [TypeLibVar(64)]
+ SAFTNoAssignedFormat,
+ [TypeLibVar(64)]
+ SAFTText,
+ [TypeLibVar(64)]
+ SAFTNonStandardFormat,
+ [TypeLibVar(64)]
+ SAFTExtendedAudioFormat,
+ SAFT8kHz8BitMono,
+ SAFT8kHz8BitStereo,
+ SAFT8kHz16BitMono,
+ SAFT8kHz16BitStereo,
+ SAFT11kHz8BitMono,
+ SAFT11kHz8BitStereo,
+ SAFT11kHz16BitMono,
+ SAFT11kHz16BitStereo,
+ SAFT12kHz8BitMono,
+ SAFT12kHz8BitStereo,
+ SAFT12kHz16BitMono,
+ SAFT12kHz16BitStereo,
+ SAFT16kHz8BitMono,
+ SAFT16kHz8BitStereo,
+ SAFT16kHz16BitMono,
+ SAFT16kHz16BitStereo,
+ SAFT22kHz8BitMono,
+ SAFT22kHz8BitStereo,
+ SAFT22kHz16BitMono,
+ SAFT22kHz16BitStereo,
+ SAFT24kHz8BitMono,
+ SAFT24kHz8BitStereo,
+ SAFT24kHz16BitMono,
+ SAFT24kHz16BitStereo,
+ SAFT32kHz8BitMono,
+ SAFT32kHz8BitStereo,
+ SAFT32kHz16BitMono,
+ SAFT32kHz16BitStereo,
+ SAFT44kHz8BitMono,
+ SAFT44kHz8BitStereo,
+ SAFT44kHz16BitMono,
+ SAFT44kHz16BitStereo,
+ SAFT48kHz8BitMono,
+ SAFT48kHz8BitStereo,
+ SAFT48kHz16BitMono,
+ SAFT48kHz16BitStereo,
+ SAFTTrueSpeech_8kHz1BitMono,
+ SAFTCCITT_ALaw_8kHzMono,
+ SAFTCCITT_ALaw_8kHzStereo,
+ SAFTCCITT_ALaw_11kHzMono,
+ SAFTCCITT_ALaw_11kHzStereo,
+ SAFTCCITT_ALaw_22kHzMono,
+ SAFTCCITT_ALaw_22kHzStereo,
+ SAFTCCITT_ALaw_44kHzMono,
+ SAFTCCITT_ALaw_44kHzStereo,
+ SAFTCCITT_uLaw_8kHzMono,
+ SAFTCCITT_uLaw_8kHzStereo,
+ SAFTCCITT_uLaw_11kHzMono,
+ SAFTCCITT_uLaw_11kHzStereo,
+ SAFTCCITT_uLaw_22kHzMono,
+ SAFTCCITT_uLaw_22kHzStereo,
+ SAFTCCITT_uLaw_44kHzMono,
+ SAFTCCITT_uLaw_44kHzStereo,
+ SAFTADPCM_8kHzMono,
+ SAFTADPCM_8kHzStereo,
+ SAFTADPCM_11kHzMono,
+ SAFTADPCM_11kHzStereo,
+ SAFTADPCM_22kHzMono,
+ SAFTADPCM_22kHzStereo,
+ SAFTADPCM_44kHzMono,
+ SAFTADPCM_44kHzStereo,
+ SAFTGSM610_8kHzMono,
+ SAFTGSM610_11kHzMono,
+ SAFTGSM610_22kHzMono,
+ SAFTGSM610_44kHzMono
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SpeechAudioFormatType.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechAudioFormatType.cs.meta
new file mode 100644
index 0000000..5febb58
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechAudioFormatType.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: e1a21b43b28527448902110444d6afc0
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SpeechDataKeyLocation.cs b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechDataKeyLocation.cs
new file mode 100644
index 0000000..6a67fdc
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechDataKeyLocation.cs
@@ -0,0 +1,8 @@
+namespace SpeechLib {
+ public enum SpeechDataKeyLocation {
+ SDKLDefaultLocation = 0,
+ SDKLCurrentUser = 1,
+ SDKLLocalMachine = 2,
+ SDKLCurrentConfig = 5
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SpeechDataKeyLocation.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechDataKeyLocation.cs.meta
new file mode 100644
index 0000000..e086684
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechDataKeyLocation.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: f69aeacc2c130d4418b452d983eca3fb
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SpeechRunState.cs b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechRunState.cs
new file mode 100644
index 0000000..7e0280b
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechRunState.cs
@@ -0,0 +1,6 @@
+namespace SpeechLib {
+ public enum SpeechRunState {
+ SRSEDone = 1,
+ SRSEIsSpeaking
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SpeechRunState.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechRunState.cs.meta
new file mode 100644
index 0000000..9a28034
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechRunState.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 58e9378a6ea5ef54ca111f0ad71daaa5
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SpeechStreamSeekPositionType.cs b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechStreamSeekPositionType.cs
new file mode 100644
index 0000000..d91fadf
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechStreamSeekPositionType.cs
@@ -0,0 +1,7 @@
+namespace SpeechLib {
+ public enum SpeechStreamSeekPositionType {
+ SSSPTRelativeToStart,
+ SSSPTRelativeToCurrentPosition,
+ SSSPTRelativeToEnd
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SpeechStreamSeekPositionType.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechStreamSeekPositionType.cs.meta
new file mode 100644
index 0000000..944c198
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechStreamSeekPositionType.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 73521c15f74d9814195facc101171321
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SpeechTokenContext.cs b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechTokenContext.cs
new file mode 100644
index 0000000..c208fd5
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechTokenContext.cs
@@ -0,0 +1,9 @@
+namespace SpeechLib {
+ public enum SpeechTokenContext {
+ STCInprocServer = 1,
+ STCInprocHandler = 2,
+ STCLocalServer = 4,
+ STCRemoteServer = 16,
+ STCAll = 23
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SpeechTokenContext.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechTokenContext.cs.meta
new file mode 100644
index 0000000..7662712
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechTokenContext.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b219d571b1122c14a9f6b1fc1bb533dc
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SpeechTokenShellFolder.cs b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechTokenShellFolder.cs
new file mode 100644
index 0000000..acc5f58
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechTokenShellFolder.cs
@@ -0,0 +1,8 @@
+namespace SpeechLib {
+ public enum SpeechTokenShellFolder {
+ STSF_AppData = 26,
+ STSF_LocalAppData = 28,
+ STSF_CommonAppData = 35,
+ STSF_FlagCreate = 32768
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SpeechTokenShellFolder.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechTokenShellFolder.cs.meta
new file mode 100644
index 0000000..1976822
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechTokenShellFolder.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: a7053e5bb777ac74c93de2329487d2f4
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SpeechVisemeFeature.cs b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechVisemeFeature.cs
new file mode 100644
index 0000000..c7eb039
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechVisemeFeature.cs
@@ -0,0 +1,7 @@
+namespace SpeechLib {
+ public enum SpeechVisemeFeature {
+ SVF_None,
+ SVF_Stressed,
+ SVF_Emphasis
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SpeechVisemeFeature.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechVisemeFeature.cs.meta
new file mode 100644
index 0000000..2271499
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechVisemeFeature.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: c4348b51540a69d4ca1ce2f402101ec4
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SpeechVisemeType.cs b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechVisemeType.cs
new file mode 100644
index 0000000..9f85878
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechVisemeType.cs
@@ -0,0 +1,26 @@
+namespace SpeechLib {
+ public enum SpeechVisemeType {
+ SVP_0,
+ SVP_1,
+ SVP_2,
+ SVP_3,
+ SVP_4,
+ SVP_5,
+ SVP_6,
+ SVP_7,
+ SVP_8,
+ SVP_9,
+ SVP_10,
+ SVP_11,
+ SVP_12,
+ SVP_13,
+ SVP_14,
+ SVP_15,
+ SVP_16,
+ SVP_17,
+ SVP_18,
+ SVP_19,
+ SVP_20,
+ SVP_21
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SpeechVisemeType.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechVisemeType.cs.meta
new file mode 100644
index 0000000..97c021f
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechVisemeType.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: e18a18641e2f468408eee5f6fce27591
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SpeechVoiceEvents.cs b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechVoiceEvents.cs
new file mode 100644
index 0000000..ac337bd
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechVoiceEvents.cs
@@ -0,0 +1,15 @@
+namespace SpeechLib {
+ public enum SpeechVoiceEvents {
+ SVEStartInputStream = 2,
+ SVEEndInputStream = 4,
+ SVEVoiceChange = 8,
+ SVEBookmark = 16,
+ SVEWordBoundary = 32,
+ SVEPhoneme = 64,
+ SVESentenceBoundary = 128,
+ SVEViseme = 256,
+ SVEAudioLevel = 512,
+ SVEPrivate = 32768,
+ SVEAllEvents = 33790
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SpeechVoiceEvents.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechVoiceEvents.cs.meta
new file mode 100644
index 0000000..15b507a
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechVoiceEvents.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: c19aff03b3b80ad4f9f1f3c7fd0cbd8e
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SpeechVoicePriority.cs b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechVoicePriority.cs
new file mode 100644
index 0000000..e775968
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechVoicePriority.cs
@@ -0,0 +1,7 @@
+namespace SpeechLib {
+ public enum SpeechVoicePriority {
+ SVPNormal,
+ SVPAlert,
+ SVPOver
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SpeechVoicePriority.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechVoicePriority.cs.meta
new file mode 100644
index 0000000..9c86582
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechVoicePriority.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 4755f32e8e4892f40abe8166e6ad372c
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SpeechVoiceSpeakFlags.cs b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechVoiceSpeakFlags.cs
new file mode 100644
index 0000000..d2f7697
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechVoiceSpeakFlags.cs
@@ -0,0 +1,19 @@
+namespace SpeechLib {
+ public enum SpeechVoiceSpeakFlags {
+ SVSFDefault = 0,
+ SVSFlagsAsync = 1,
+ SVSFPurgeBeforeSpeak = 2,
+ SVSFIsFilename = 4,
+ SVSFIsXML = 8,
+ SVSFIsNotXML = 16,
+ SVSFPersistXML = 32,
+ SVSFNLPSpeakPunc = 64,
+ SVSFParseSapi = 128,
+ SVSFParseSsml = 256,
+ SVSFParseAutodetect = 0,
+ SVSFNLPMask = 64,
+ SVSFParseMask = 384,
+ SVSFVoiceMask = 511,
+ SVSFUnusedFlags = -512
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/SpeechVoiceSpeakFlags.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechVoiceSpeakFlags.cs.meta
new file mode 100644
index 0000000..6b1ce6d
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/SpeechVoiceSpeakFlags.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 033baa98d3577584e95a52615e026a3f
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/_FILETIME.cs b/Assets/Plugins/Windows/Interop.SpeechLib/_FILETIME.cs
new file mode 100644
index 0000000..c966ab2
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/_FILETIME.cs
@@ -0,0 +1,10 @@
+using System.Runtime.InteropServices;
+
+namespace SpeechLib {
+ [StructLayout(LayoutKind.Sequential, Pack = 4)]
+ public struct _FILETIME {
+ public uint dwLowDateTime;
+
+ public uint dwHighDateTime;
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/_FILETIME.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/_FILETIME.cs.meta
new file mode 100644
index 0000000..cc475f0
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/_FILETIME.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 75d9604bceee7f94cb9465693c3bdff7
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/_ISpeechVoiceEvents.cs b/Assets/Plugins/Windows/Interop.SpeechLib/_ISpeechVoiceEvents.cs
new file mode 100644
index 0000000..c7ef2eb
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/_ISpeechVoiceEvents.cs
@@ -0,0 +1,805 @@
+using System;
+using System.Collections;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Runtime.InteropServices.ComTypes;
+using System.Threading;
+
+namespace SpeechLib {
+ [ComVisible(false)]
+ public delegate void _ISpeechVoiceEvents_StartStreamEventHandler([In] int StreamNumber, [In][MarshalAs(UnmanagedType.Struct)] object StreamPosition);
+
+ [ComVisible(false)]
+ public delegate void _ISpeechVoiceEvents_EndStreamEventHandler([In] int StreamNumber, [In][MarshalAs(UnmanagedType.Struct)] object StreamPosition);
+
+ [ComVisible(false)]
+ public delegate void _ISpeechVoiceEvents_VoiceChangeEventHandler([In] int StreamNumber, [In][MarshalAs(UnmanagedType.Struct)] object StreamPosition, [In][MarshalAs(UnmanagedType.Interface)] SpObjectToken VoiceObjectToken);
+
+ [ComVisible(false)]
+ public delegate void _ISpeechVoiceEvents_BookmarkEventHandler([In] int StreamNumber, [In][MarshalAs(UnmanagedType.Struct)] object StreamPosition, [In][MarshalAs(UnmanagedType.BStr)] string Bookmark, [In] int BookmarkId);
+
+ [ComVisible(false)]
+ public delegate void _ISpeechVoiceEvents_WordEventHandler([In] int StreamNumber, [In][MarshalAs(UnmanagedType.Struct)] object StreamPosition, [In] int CharacterPosition, [In] int Length);
+
+ [ComVisible(false)]
+ public delegate void _ISpeechVoiceEvents_SentenceEventHandler([In] int StreamNumber, [In][MarshalAs(UnmanagedType.Struct)] object StreamPosition, [In] int CharacterPosition, [In] int Length);
+
+ [ComVisible(false)]
+ public delegate void _ISpeechVoiceEvents_PhonemeEventHandler([In] int StreamNumber, [In][MarshalAs(UnmanagedType.Struct)] object StreamPosition, [In] int Duration, [In] short NextPhoneId, [In] SpeechVisemeFeature Feature, [In] short CurrentPhoneId);
+
+ [ComVisible(false)]
+ public delegate void _ISpeechVoiceEvents_VisemeEventHandler([In] int StreamNumber, [In][MarshalAs(UnmanagedType.Struct)] object StreamPosition, [In] int Duration, [In] SpeechVisemeType NextVisemeId, [In] SpeechVisemeFeature Feature, [In] SpeechVisemeType CurrentVisemeId);
+
+ [ComVisible(false)]
+ public delegate void _ISpeechVoiceEvents_AudioLevelEventHandler([In] int StreamNumber, [In][MarshalAs(UnmanagedType.Struct)] object StreamPosition, [In] int AudioLevel);
+
+ [ComVisible(false)]
+ public delegate void _ISpeechVoiceEvents_EnginePrivateEventHandler([In] int StreamNumber, [In] int StreamPosition, [In][MarshalAs(UnmanagedType.Struct)] object EngineData);
+
+ [ComImport]
+ [InterfaceType(2)]
+ [Guid("A372ACD1-3BEF-4BBD-8FFB-CB3E2B416AF8")]
+ [TypeLibType(4096)]
+ public interface _ISpeechVoiceEvents {
+ [MethodImpl(MethodImplOptions.PreserveSig | MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(1)]
+ void StartStream([In] int StreamNumber, [In][MarshalAs(UnmanagedType.Struct)] object StreamPosition);
+
+ [MethodImpl(MethodImplOptions.PreserveSig | MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(2)]
+ void EndStream([In] int StreamNumber, [In][MarshalAs(UnmanagedType.Struct)] object StreamPosition);
+
+ [MethodImpl(MethodImplOptions.PreserveSig | MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(3)]
+ void VoiceChange([In] int StreamNumber, [In][MarshalAs(UnmanagedType.Struct)] object StreamPosition, [In][MarshalAs(UnmanagedType.Interface)] SpObjectToken VoiceObjectToken);
+
+ [MethodImpl(MethodImplOptions.PreserveSig | MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(4)]
+ void Bookmark([In] int StreamNumber, [In][MarshalAs(UnmanagedType.Struct)] object StreamPosition, [In][MarshalAs(UnmanagedType.BStr)] string Bookmark, [In] int BookmarkId);
+
+ [MethodImpl(MethodImplOptions.PreserveSig | MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(5)]
+ void Word([In] int StreamNumber, [In][MarshalAs(UnmanagedType.Struct)] object StreamPosition, [In] int CharacterPosition, [In] int Length);
+
+ [MethodImpl(MethodImplOptions.PreserveSig | MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(7)]
+ void Sentence([In] int StreamNumber, [In][MarshalAs(UnmanagedType.Struct)] object StreamPosition, [In] int CharacterPosition, [In] int Length);
+
+ [MethodImpl(MethodImplOptions.PreserveSig | MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(6)]
+ void Phoneme([In] int StreamNumber, [In][MarshalAs(UnmanagedType.Struct)] object StreamPosition, [In] int Duration, [In] short NextPhoneId, [In] SpeechVisemeFeature Feature, [In] short CurrentPhoneId);
+
+ [MethodImpl(MethodImplOptions.PreserveSig | MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(8)]
+ void Viseme([In] int StreamNumber, [In][MarshalAs(UnmanagedType.Struct)] object StreamPosition, [In] int Duration, [In] SpeechVisemeType NextVisemeId, [In] SpeechVisemeFeature Feature, [In] SpeechVisemeType CurrentVisemeId);
+
+ [MethodImpl(MethodImplOptions.PreserveSig | MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(9)]
+ void AudioLevel([In] int StreamNumber, [In][MarshalAs(UnmanagedType.Struct)] object StreamPosition, [In] int AudioLevel);
+
+ [MethodImpl(MethodImplOptions.PreserveSig | MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
+ [DispId(10)]
+ void EnginePrivate([In] int StreamNumber, [In] int StreamPosition, [In][MarshalAs(UnmanagedType.Struct)] object EngineData);
+ }
+
+ [ComEventInterface(typeof(_ISpeechVoiceEvents), typeof(_ISpeechVoiceEvents_EventProvider))]
+ [TypeLibType(16)]
+ [ComVisible(false)]
+ public interface _ISpeechVoiceEvents_Event {
+ event _ISpeechVoiceEvents_StartStreamEventHandler StartStream;
+
+ event _ISpeechVoiceEvents_EndStreamEventHandler EndStream;
+
+ event _ISpeechVoiceEvents_VoiceChangeEventHandler VoiceChange;
+
+ event _ISpeechVoiceEvents_BookmarkEventHandler Bookmark;
+
+ event _ISpeechVoiceEvents_WordEventHandler Word;
+
+ event _ISpeechVoiceEvents_SentenceEventHandler Sentence;
+
+ event _ISpeechVoiceEvents_PhonemeEventHandler Phoneme;
+
+ event _ISpeechVoiceEvents_VisemeEventHandler Viseme;
+
+ event _ISpeechVoiceEvents_AudioLevelEventHandler AudioLevel;
+
+ event _ISpeechVoiceEvents_EnginePrivateEventHandler EnginePrivate;
+ }
+
+ internal sealed class _ISpeechVoiceEvents_EventProvider : _ISpeechVoiceEvents_Event, IDisposable {
+ private readonly IConnectionPointContainer m_ConnectionPointContainer;
+
+ private ArrayList m_aEventSinkHelpers;
+
+ private IConnectionPoint m_ConnectionPoint;
+
+ private void Init() {
+ Guid riid = new(new byte[16]
+ {
+ 209, 172, 114, 163, 239, 59, 189, 75, 143, 251,
+ 203, 62, 43, 65, 106, 248
+ });
+ m_ConnectionPointContainer.FindConnectionPoint(ref riid, out IConnectionPoint ppCP);
+ m_ConnectionPoint = ppCP;
+ m_aEventSinkHelpers = new ArrayList();
+ }
+
+ public event _ISpeechVoiceEvents_StartStreamEventHandler StartStream {
+ add {
+ bool lockTaken = default;
+ try {
+ Monitor.Enter(this, ref lockTaken);
+ if (m_ConnectionPoint == null) {
+ Init();
+ }
+ _ISpeechVoiceEvents_SinkHelper iSpeechVoiceEvents_SinkHelper = new();
+ m_ConnectionPoint.Advise(iSpeechVoiceEvents_SinkHelper, out int pdwCookie);
+ iSpeechVoiceEvents_SinkHelper.m_dwCookie = pdwCookie;
+ iSpeechVoiceEvents_SinkHelper.m_StartStreamDelegate = value;
+ m_aEventSinkHelpers.Add(iSpeechVoiceEvents_SinkHelper);
+ }
+ finally {
+ if (lockTaken) {
+ Monitor.Exit(this);
+ }
+ }
+ }
+ remove {
+ bool lockTaken = default;
+ try {
+ Monitor.Enter(this, ref lockTaken);
+ if (m_aEventSinkHelpers == null) {
+ return;
+ }
+ int count = m_aEventSinkHelpers.Count;
+ int num = 0;
+ if (0 >= count) {
+ return;
+ }
+ do {
+ _ISpeechVoiceEvents_SinkHelper iSpeechVoiceEvents_SinkHelper = (_ISpeechVoiceEvents_SinkHelper)m_aEventSinkHelpers[num];
+ if (iSpeechVoiceEvents_SinkHelper.m_StartStreamDelegate != null && ((iSpeechVoiceEvents_SinkHelper.m_StartStreamDelegate.Equals(value) ? 1u : 0u) & 0xFFu) != 0) {
+ m_aEventSinkHelpers.RemoveAt(num);
+ m_ConnectionPoint.Unadvise(iSpeechVoiceEvents_SinkHelper.m_dwCookie);
+ if (count <= 1) {
+ Marshal.ReleaseComObject(m_ConnectionPoint);
+ m_ConnectionPoint = null;
+ m_aEventSinkHelpers = null;
+ }
+ break;
+ }
+ num++;
+ }
+ while (num < count);
+ }
+ finally {
+ if (lockTaken) {
+ Monitor.Exit(this);
+ }
+ }
+ }
+ }
+
+ public event _ISpeechVoiceEvents_EndStreamEventHandler EndStream {
+ add {
+ bool lockTaken = default;
+ try {
+ Monitor.Enter(this, ref lockTaken);
+ if (m_ConnectionPoint == null) {
+ Init();
+ }
+ _ISpeechVoiceEvents_SinkHelper iSpeechVoiceEvents_SinkHelper = new();
+ m_ConnectionPoint.Advise(iSpeechVoiceEvents_SinkHelper, out int pdwCookie);
+ iSpeechVoiceEvents_SinkHelper.m_dwCookie = pdwCookie;
+ iSpeechVoiceEvents_SinkHelper.m_EndStreamDelegate = value;
+ m_aEventSinkHelpers.Add(iSpeechVoiceEvents_SinkHelper);
+ }
+ finally {
+ if (lockTaken) {
+ Monitor.Exit(this);
+ }
+ }
+ }
+ remove {
+ bool lockTaken = default;
+ try {
+ Monitor.Enter(this, ref lockTaken);
+ if (m_aEventSinkHelpers == null) {
+ return;
+ }
+ int count = m_aEventSinkHelpers.Count;
+ int num = 0;
+ if (0 >= count) {
+ return;
+ }
+ do {
+ _ISpeechVoiceEvents_SinkHelper iSpeechVoiceEvents_SinkHelper = (_ISpeechVoiceEvents_SinkHelper)m_aEventSinkHelpers[num];
+ if (iSpeechVoiceEvents_SinkHelper.m_EndStreamDelegate != null && ((iSpeechVoiceEvents_SinkHelper.m_EndStreamDelegate.Equals(value) ? 1u : 0u) & 0xFFu) != 0) {
+ m_aEventSinkHelpers.RemoveAt(num);
+ m_ConnectionPoint.Unadvise(iSpeechVoiceEvents_SinkHelper.m_dwCookie);
+ if (count <= 1) {
+ Marshal.ReleaseComObject(m_ConnectionPoint);
+ m_ConnectionPoint = null;
+ m_aEventSinkHelpers = null;
+ }
+ break;
+ }
+ num++;
+ }
+ while (num < count);
+ }
+ finally {
+ if (lockTaken) {
+ Monitor.Exit(this);
+ }
+ }
+ }
+ }
+
+ public event _ISpeechVoiceEvents_VoiceChangeEventHandler VoiceChange {
+ add {
+ bool lockTaken = default;
+ try {
+ Monitor.Enter(this, ref lockTaken);
+ if (m_ConnectionPoint == null) {
+ Init();
+ }
+ _ISpeechVoiceEvents_SinkHelper iSpeechVoiceEvents_SinkHelper = new();
+ m_ConnectionPoint.Advise(iSpeechVoiceEvents_SinkHelper, out int pdwCookie);
+ iSpeechVoiceEvents_SinkHelper.m_dwCookie = pdwCookie;
+ iSpeechVoiceEvents_SinkHelper.m_VoiceChangeDelegate = value;
+ m_aEventSinkHelpers.Add(iSpeechVoiceEvents_SinkHelper);
+ }
+ finally {
+ if (lockTaken) {
+ Monitor.Exit(this);
+ }
+ }
+ }
+ remove {
+ bool lockTaken = default;
+ try {
+ Monitor.Enter(this, ref lockTaken);
+ if (m_aEventSinkHelpers == null) {
+ return;
+ }
+ int count = m_aEventSinkHelpers.Count;
+ int num = 0;
+ if (0 >= count) {
+ return;
+ }
+ do {
+ _ISpeechVoiceEvents_SinkHelper iSpeechVoiceEvents_SinkHelper = (_ISpeechVoiceEvents_SinkHelper)m_aEventSinkHelpers[num];
+ if (iSpeechVoiceEvents_SinkHelper.m_VoiceChangeDelegate != null && ((iSpeechVoiceEvents_SinkHelper.m_VoiceChangeDelegate.Equals(value) ? 1u : 0u) & 0xFFu) != 0) {
+ m_aEventSinkHelpers.RemoveAt(num);
+ m_ConnectionPoint.Unadvise(iSpeechVoiceEvents_SinkHelper.m_dwCookie);
+ if (count <= 1) {
+ Marshal.ReleaseComObject(m_ConnectionPoint);
+ m_ConnectionPoint = null;
+ m_aEventSinkHelpers = null;
+ }
+ break;
+ }
+ num++;
+ }
+ while (num < count);
+ }
+ finally {
+ if (lockTaken) {
+ Monitor.Exit(this);
+ }
+ }
+ }
+ }
+
+ public event _ISpeechVoiceEvents_BookmarkEventHandler Bookmark {
+ add {
+ bool lockTaken = default;
+ try {
+ Monitor.Enter(this, ref lockTaken);
+ if (m_ConnectionPoint == null) {
+ Init();
+ }
+ _ISpeechVoiceEvents_SinkHelper iSpeechVoiceEvents_SinkHelper = new();
+ m_ConnectionPoint.Advise(iSpeechVoiceEvents_SinkHelper, out int pdwCookie);
+ iSpeechVoiceEvents_SinkHelper.m_dwCookie = pdwCookie;
+ iSpeechVoiceEvents_SinkHelper.m_BookmarkDelegate = value;
+ m_aEventSinkHelpers.Add(iSpeechVoiceEvents_SinkHelper);
+ }
+ finally {
+ if (lockTaken) {
+ Monitor.Exit(this);
+ }
+ }
+ }
+ remove {
+ bool lockTaken = default;
+ try {
+ Monitor.Enter(this, ref lockTaken);
+ if (m_aEventSinkHelpers == null) {
+ return;
+ }
+ int count = m_aEventSinkHelpers.Count;
+ int num = 0;
+ if (0 >= count) {
+ return;
+ }
+ do {
+ _ISpeechVoiceEvents_SinkHelper iSpeechVoiceEvents_SinkHelper = (_ISpeechVoiceEvents_SinkHelper)m_aEventSinkHelpers[num];
+ if (iSpeechVoiceEvents_SinkHelper.m_BookmarkDelegate != null && ((iSpeechVoiceEvents_SinkHelper.m_BookmarkDelegate.Equals(value) ? 1u : 0u) & 0xFFu) != 0) {
+ m_aEventSinkHelpers.RemoveAt(num);
+ m_ConnectionPoint.Unadvise(iSpeechVoiceEvents_SinkHelper.m_dwCookie);
+ if (count <= 1) {
+ Marshal.ReleaseComObject(m_ConnectionPoint);
+ m_ConnectionPoint = null;
+ m_aEventSinkHelpers = null;
+ }
+ break;
+ }
+ num++;
+ }
+ while (num < count);
+ }
+ finally {
+ if (lockTaken) {
+ Monitor.Exit(this);
+ }
+ }
+ }
+ }
+
+ public event _ISpeechVoiceEvents_WordEventHandler Word {
+ add {
+ bool lockTaken = default;
+ try {
+ Monitor.Enter(this, ref lockTaken);
+ if (m_ConnectionPoint == null) {
+ Init();
+ }
+ _ISpeechVoiceEvents_SinkHelper iSpeechVoiceEvents_SinkHelper = new();
+ m_ConnectionPoint.Advise(iSpeechVoiceEvents_SinkHelper, out int pdwCookie);
+ iSpeechVoiceEvents_SinkHelper.m_dwCookie = pdwCookie;
+ iSpeechVoiceEvents_SinkHelper.m_WordDelegate = value;
+ m_aEventSinkHelpers.Add(iSpeechVoiceEvents_SinkHelper);
+ }
+ finally {
+ if (lockTaken) {
+ Monitor.Exit(this);
+ }
+ }
+ }
+ remove {
+ bool lockTaken = default;
+ try {
+ Monitor.Enter(this, ref lockTaken);
+ if (m_aEventSinkHelpers == null) {
+ return;
+ }
+ int count = m_aEventSinkHelpers.Count;
+ int num = 0;
+ if (0 >= count) {
+ return;
+ }
+ do {
+ _ISpeechVoiceEvents_SinkHelper iSpeechVoiceEvents_SinkHelper = (_ISpeechVoiceEvents_SinkHelper)m_aEventSinkHelpers[num];
+ if (iSpeechVoiceEvents_SinkHelper.m_WordDelegate != null && ((iSpeechVoiceEvents_SinkHelper.m_WordDelegate.Equals(value) ? 1u : 0u) & 0xFFu) != 0) {
+ m_aEventSinkHelpers.RemoveAt(num);
+ m_ConnectionPoint.Unadvise(iSpeechVoiceEvents_SinkHelper.m_dwCookie);
+ if (count <= 1) {
+ Marshal.ReleaseComObject(m_ConnectionPoint);
+ m_ConnectionPoint = null;
+ m_aEventSinkHelpers = null;
+ }
+ break;
+ }
+ num++;
+ }
+ while (num < count);
+ }
+ finally {
+ if (lockTaken) {
+ Monitor.Exit(this);
+ }
+ }
+ }
+ }
+
+ public event _ISpeechVoiceEvents_SentenceEventHandler Sentence {
+ add {
+ bool lockTaken = default;
+ try {
+ Monitor.Enter(this, ref lockTaken);
+ if (m_ConnectionPoint == null) {
+ Init();
+ }
+ _ISpeechVoiceEvents_SinkHelper iSpeechVoiceEvents_SinkHelper = new();
+ m_ConnectionPoint.Advise(iSpeechVoiceEvents_SinkHelper, out int pdwCookie);
+ iSpeechVoiceEvents_SinkHelper.m_dwCookie = pdwCookie;
+ iSpeechVoiceEvents_SinkHelper.m_SentenceDelegate = value;
+ m_aEventSinkHelpers.Add(iSpeechVoiceEvents_SinkHelper);
+ }
+ finally {
+ if (lockTaken) {
+ Monitor.Exit(this);
+ }
+ }
+ }
+ remove {
+ bool lockTaken = default;
+ try {
+ Monitor.Enter(this, ref lockTaken);
+ if (m_aEventSinkHelpers == null) {
+ return;
+ }
+ int count = m_aEventSinkHelpers.Count;
+ int num = 0;
+ if (0 >= count) {
+ return;
+ }
+ do {
+ _ISpeechVoiceEvents_SinkHelper iSpeechVoiceEvents_SinkHelper = (_ISpeechVoiceEvents_SinkHelper)m_aEventSinkHelpers[num];
+ if (iSpeechVoiceEvents_SinkHelper.m_SentenceDelegate != null && ((iSpeechVoiceEvents_SinkHelper.m_SentenceDelegate.Equals(value) ? 1u : 0u) & 0xFFu) != 0) {
+ m_aEventSinkHelpers.RemoveAt(num);
+ m_ConnectionPoint.Unadvise(iSpeechVoiceEvents_SinkHelper.m_dwCookie);
+ if (count <= 1) {
+ Marshal.ReleaseComObject(m_ConnectionPoint);
+ m_ConnectionPoint = null;
+ m_aEventSinkHelpers = null;
+ }
+ break;
+ }
+ num++;
+ }
+ while (num < count);
+ }
+ finally {
+ if (lockTaken) {
+ Monitor.Exit(this);
+ }
+ }
+ }
+ }
+
+ public event _ISpeechVoiceEvents_PhonemeEventHandler Phoneme {
+ add {
+ bool lockTaken = default;
+ try {
+ Monitor.Enter(this, ref lockTaken);
+ if (m_ConnectionPoint == null) {
+ Init();
+ }
+ _ISpeechVoiceEvents_SinkHelper iSpeechVoiceEvents_SinkHelper = new();
+ m_ConnectionPoint.Advise(iSpeechVoiceEvents_SinkHelper, out int pdwCookie);
+ iSpeechVoiceEvents_SinkHelper.m_dwCookie = pdwCookie;
+ iSpeechVoiceEvents_SinkHelper.m_PhonemeDelegate = value;
+ m_aEventSinkHelpers.Add(iSpeechVoiceEvents_SinkHelper);
+ }
+ finally {
+ if (lockTaken) {
+ Monitor.Exit(this);
+ }
+ }
+ }
+ remove {
+ bool lockTaken = default;
+ try {
+ Monitor.Enter(this, ref lockTaken);
+ if (m_aEventSinkHelpers == null) {
+ return;
+ }
+ int count = m_aEventSinkHelpers.Count;
+ int num = 0;
+ if (0 >= count) {
+ return;
+ }
+ do {
+ _ISpeechVoiceEvents_SinkHelper iSpeechVoiceEvents_SinkHelper = (_ISpeechVoiceEvents_SinkHelper)m_aEventSinkHelpers[num];
+ if (iSpeechVoiceEvents_SinkHelper.m_PhonemeDelegate != null && ((iSpeechVoiceEvents_SinkHelper.m_PhonemeDelegate.Equals(value) ? 1u : 0u) & 0xFFu) != 0) {
+ m_aEventSinkHelpers.RemoveAt(num);
+ m_ConnectionPoint.Unadvise(iSpeechVoiceEvents_SinkHelper.m_dwCookie);
+ if (count <= 1) {
+ Marshal.ReleaseComObject(m_ConnectionPoint);
+ m_ConnectionPoint = null;
+ m_aEventSinkHelpers = null;
+ }
+ break;
+ }
+ num++;
+ }
+ while (num < count);
+ }
+ finally {
+ if (lockTaken) {
+ Monitor.Exit(this);
+ }
+ }
+ }
+ }
+
+ public event _ISpeechVoiceEvents_VisemeEventHandler Viseme {
+ add {
+ bool lockTaken = default;
+ try {
+ Monitor.Enter(this, ref lockTaken);
+ if (m_ConnectionPoint == null) {
+ Init();
+ }
+ _ISpeechVoiceEvents_SinkHelper iSpeechVoiceEvents_SinkHelper = new();
+ m_ConnectionPoint.Advise(iSpeechVoiceEvents_SinkHelper, out int pdwCookie);
+ iSpeechVoiceEvents_SinkHelper.m_dwCookie = pdwCookie;
+ iSpeechVoiceEvents_SinkHelper.m_VisemeDelegate = value;
+ m_aEventSinkHelpers.Add(iSpeechVoiceEvents_SinkHelper);
+ }
+ finally {
+ if (lockTaken) {
+ Monitor.Exit(this);
+ }
+ }
+ }
+ remove {
+ bool lockTaken = default;
+ try {
+ Monitor.Enter(this, ref lockTaken);
+ if (m_aEventSinkHelpers == null) {
+ return;
+ }
+ int count = m_aEventSinkHelpers.Count;
+ int num = 0;
+ if (0 >= count) {
+ return;
+ }
+ do {
+ _ISpeechVoiceEvents_SinkHelper iSpeechVoiceEvents_SinkHelper = (_ISpeechVoiceEvents_SinkHelper)m_aEventSinkHelpers[num];
+ if (iSpeechVoiceEvents_SinkHelper.m_VisemeDelegate != null && ((iSpeechVoiceEvents_SinkHelper.m_VisemeDelegate.Equals(value) ? 1u : 0u) & 0xFFu) != 0) {
+ m_aEventSinkHelpers.RemoveAt(num);
+ m_ConnectionPoint.Unadvise(iSpeechVoiceEvents_SinkHelper.m_dwCookie);
+ if (count <= 1) {
+ Marshal.ReleaseComObject(m_ConnectionPoint);
+ m_ConnectionPoint = null;
+ m_aEventSinkHelpers = null;
+ }
+ break;
+ }
+ num++;
+ }
+ while (num < count);
+ }
+ finally {
+ if (lockTaken) {
+ Monitor.Exit(this);
+ }
+ }
+ }
+ }
+
+ public event _ISpeechVoiceEvents_AudioLevelEventHandler AudioLevel {
+ add {
+ bool lockTaken = default;
+ try {
+ Monitor.Enter(this, ref lockTaken);
+ if (m_ConnectionPoint == null) {
+ Init();
+ }
+ _ISpeechVoiceEvents_SinkHelper iSpeechVoiceEvents_SinkHelper = new();
+ m_ConnectionPoint.Advise(iSpeechVoiceEvents_SinkHelper, out int pdwCookie);
+ iSpeechVoiceEvents_SinkHelper.m_dwCookie = pdwCookie;
+ iSpeechVoiceEvents_SinkHelper.m_AudioLevelDelegate = value;
+ m_aEventSinkHelpers.Add(iSpeechVoiceEvents_SinkHelper);
+ }
+ finally {
+ if (lockTaken) {
+ Monitor.Exit(this);
+ }
+ }
+ }
+ remove {
+ bool lockTaken = default;
+ try {
+ Monitor.Enter(this, ref lockTaken);
+ if (m_aEventSinkHelpers == null) {
+ return;
+ }
+ int count = m_aEventSinkHelpers.Count;
+ int num = 0;
+ if (0 >= count) {
+ return;
+ }
+ do {
+ _ISpeechVoiceEvents_SinkHelper iSpeechVoiceEvents_SinkHelper = (_ISpeechVoiceEvents_SinkHelper)m_aEventSinkHelpers[num];
+ if (iSpeechVoiceEvents_SinkHelper.m_AudioLevelDelegate != null && ((iSpeechVoiceEvents_SinkHelper.m_AudioLevelDelegate.Equals(value) ? 1u : 0u) & 0xFFu) != 0) {
+ m_aEventSinkHelpers.RemoveAt(num);
+ m_ConnectionPoint.Unadvise(iSpeechVoiceEvents_SinkHelper.m_dwCookie);
+ if (count <= 1) {
+ Marshal.ReleaseComObject(m_ConnectionPoint);
+ m_ConnectionPoint = null;
+ m_aEventSinkHelpers = null;
+ }
+ break;
+ }
+ num++;
+ }
+ while (num < count);
+ }
+ finally {
+ if (lockTaken) {
+ Monitor.Exit(this);
+ }
+ }
+ }
+ }
+
+ public event _ISpeechVoiceEvents_EnginePrivateEventHandler EnginePrivate {
+ add {
+ bool lockTaken = default;
+ try {
+ Monitor.Enter(this, ref lockTaken);
+ if (m_ConnectionPoint == null) {
+ Init();
+ }
+ _ISpeechVoiceEvents_SinkHelper iSpeechVoiceEvents_SinkHelper = new();
+ m_ConnectionPoint.Advise(iSpeechVoiceEvents_SinkHelper, out int pdwCookie);
+ iSpeechVoiceEvents_SinkHelper.m_dwCookie = pdwCookie;
+ iSpeechVoiceEvents_SinkHelper.m_EnginePrivateDelegate = value;
+ m_aEventSinkHelpers.Add(iSpeechVoiceEvents_SinkHelper);
+ }
+ finally {
+ if (lockTaken) {
+ Monitor.Exit(this);
+ }
+ }
+ }
+ remove {
+ bool lockTaken = default;
+ try {
+ Monitor.Enter(this, ref lockTaken);
+ if (m_aEventSinkHelpers == null) {
+ return;
+ }
+ int count = m_aEventSinkHelpers.Count;
+ int num = 0;
+ if (0 >= count) {
+ return;
+ }
+ do {
+ _ISpeechVoiceEvents_SinkHelper iSpeechVoiceEvents_SinkHelper = (_ISpeechVoiceEvents_SinkHelper)m_aEventSinkHelpers[num];
+ if (iSpeechVoiceEvents_SinkHelper.m_EnginePrivateDelegate != null && ((iSpeechVoiceEvents_SinkHelper.m_EnginePrivateDelegate.Equals(value) ? 1u : 0u) & 0xFFu) != 0) {
+ m_aEventSinkHelpers.RemoveAt(num);
+ m_ConnectionPoint.Unadvise(iSpeechVoiceEvents_SinkHelper.m_dwCookie);
+ if (count <= 1) {
+ Marshal.ReleaseComObject(m_ConnectionPoint);
+ m_ConnectionPoint = null;
+ m_aEventSinkHelpers = null;
+ }
+ break;
+ }
+ num++;
+ }
+ while (num < count);
+ }
+ finally {
+ if (lockTaken) {
+ Monitor.Exit(this);
+ }
+ }
+ }
+ }
+
+ public _ISpeechVoiceEvents_EventProvider(object P_0) {
+ m_ConnectionPointContainer = (IConnectionPointContainer)P_0;
+ }
+
+ public void Finalize() {
+ bool lockTaken = default;
+ try {
+ Monitor.Enter(this, ref lockTaken);
+ if (m_ConnectionPoint == null) {
+ return;
+ }
+ int count = m_aEventSinkHelpers.Count;
+ int num = 0;
+ if (0 < count) {
+ do {
+ _ISpeechVoiceEvents_SinkHelper iSpeechVoiceEvents_SinkHelper = (_ISpeechVoiceEvents_SinkHelper)m_aEventSinkHelpers[num];
+ m_ConnectionPoint.Unadvise(iSpeechVoiceEvents_SinkHelper.m_dwCookie);
+ num++;
+ }
+ while (num < count);
+ }
+ Marshal.ReleaseComObject(m_ConnectionPoint);
+ }
+ catch (Exception) {
+ }
+ finally {
+ if (lockTaken) {
+ Monitor.Exit(this);
+ }
+ }
+ }
+
+ public void Dispose() {
+ Finalize();
+ GC.SuppressFinalize(this);
+ }
+ }
+
+ [TypeLibType(TypeLibTypeFlags.FHidden)]
+ [ClassInterface(ClassInterfaceType.None)]
+ public sealed class _ISpeechVoiceEvents_SinkHelper : _ISpeechVoiceEvents {
+ public _ISpeechVoiceEvents_StartStreamEventHandler m_StartStreamDelegate;
+
+ public _ISpeechVoiceEvents_EndStreamEventHandler m_EndStreamDelegate;
+
+ public _ISpeechVoiceEvents_VoiceChangeEventHandler m_VoiceChangeDelegate;
+
+ public _ISpeechVoiceEvents_BookmarkEventHandler m_BookmarkDelegate;
+
+ public _ISpeechVoiceEvents_WordEventHandler m_WordDelegate;
+
+ public _ISpeechVoiceEvents_SentenceEventHandler m_SentenceDelegate;
+
+ public _ISpeechVoiceEvents_PhonemeEventHandler m_PhonemeDelegate;
+
+ public _ISpeechVoiceEvents_VisemeEventHandler m_VisemeDelegate;
+
+ public _ISpeechVoiceEvents_AudioLevelEventHandler m_AudioLevelDelegate;
+
+ public _ISpeechVoiceEvents_EnginePrivateEventHandler m_EnginePrivateDelegate;
+
+ public int m_dwCookie;
+
+ public void StartStream(int P_0, object P_1) {
+ m_StartStreamDelegate?.Invoke(P_0, P_1);
+ }
+
+ public void EndStream(int P_0, object P_1) {
+ m_EndStreamDelegate?.Invoke(P_0, P_1);
+ }
+
+ public void VoiceChange(int P_0, object P_1, SpObjectToken P_2) {
+ m_VoiceChangeDelegate?.Invoke(P_0, P_1, P_2);
+ }
+
+ public void Bookmark(int P_0, object P_1, string P_2, int P_3) {
+ m_BookmarkDelegate?.Invoke(P_0, P_1, P_2, P_3);
+ }
+
+ public void Word(int P_0, object P_1, int P_2, int P_3) {
+ m_WordDelegate?.Invoke(P_0, P_1, P_2, P_3);
+ }
+
+ public void Sentence(int P_0, object P_1, int P_2, int P_3) {
+ m_SentenceDelegate?.Invoke(P_0, P_1, P_2, P_3);
+ }
+
+ public void Phoneme(int P_0, object P_1, int P_2, short P_3, SpeechVisemeFeature P_4, short P_5) {
+ m_PhonemeDelegate?.Invoke(P_0, P_1, P_2, P_3, P_4, P_5);
+ }
+
+ public void Viseme(int P_0, object P_1, int P_2, SpeechVisemeType P_3, SpeechVisemeFeature P_4, SpeechVisemeType P_5) {
+ m_VisemeDelegate?.Invoke(P_0, P_1, P_2, P_3, P_4, P_5);
+ }
+
+ public void AudioLevel(int P_0, object P_1, int P_2) {
+ m_AudioLevelDelegate?.Invoke(P_0, P_1, P_2);
+ }
+
+ public void EnginePrivate(int P_0, int P_1, object P_2) {
+ m_EnginePrivateDelegate?.Invoke(P_0, P_1, P_2);
+ }
+
+ internal _ISpeechVoiceEvents_SinkHelper() {
+ m_dwCookie = 0;
+ m_StartStreamDelegate = null;
+ m_EndStreamDelegate = null;
+ m_VoiceChangeDelegate = null;
+ m_BookmarkDelegate = null;
+ m_WordDelegate = null;
+ m_SentenceDelegate = null;
+ m_PhonemeDelegate = null;
+ m_VisemeDelegate = null;
+ m_AudioLevelDelegate = null;
+ m_EnginePrivateDelegate = null;
+ }
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/_ISpeechVoiceEvents.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/_ISpeechVoiceEvents.cs.meta
new file mode 100644
index 0000000..ed35715
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/_ISpeechVoiceEvents.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 1c3c12f0b7ed21640bd682a93c424cc5
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/_LARGE_INTEGER.cs b/Assets/Plugins/Windows/Interop.SpeechLib/_LARGE_INTEGER.cs
new file mode 100644
index 0000000..27f3506
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/_LARGE_INTEGER.cs
@@ -0,0 +1,13 @@
+using System.Runtime.InteropServices;
+
+namespace SpeechLib {
+ [StructLayout(LayoutKind.Sequential, Pack = 8)]
+ public struct _LARGE_INTEGER {
+ public long QuadPart;
+ }
+
+ [StructLayout(LayoutKind.Sequential, Pack = 8)]
+ public struct _ULARGE_INTEGER {
+ public ulong QuadPart;
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/_LARGE_INTEGER.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/_LARGE_INTEGER.cs.meta
new file mode 100644
index 0000000..6bfec17
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/_LARGE_INTEGER.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: a5d63bfbaad7d3140ba60ec09219c6ca
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/_RemotableHandle.cs b/Assets/Plugins/Windows/Interop.SpeechLib/_RemotableHandle.cs
new file mode 100644
index 0000000..249fe4f
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/_RemotableHandle.cs
@@ -0,0 +1,11 @@
+using System.Runtime.InteropServices;
+
+namespace SpeechLib {
+
+ [StructLayout(LayoutKind.Sequential, Pack = 4)]
+ public struct _RemotableHandle {
+ public int fContext;
+
+ public __MIDL_IWinTypes_0009 u;
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/_RemotableHandle.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/_RemotableHandle.cs.meta
new file mode 100644
index 0000000..9b0ac88
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/_RemotableHandle.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 1aee00bb40b368e458000dc92975b950
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/__MIDL_IWinTypes_0009.cs b/Assets/Plugins/Windows/Interop.SpeechLib/__MIDL_IWinTypes_0009.cs
new file mode 100644
index 0000000..e0bef26
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/__MIDL_IWinTypes_0009.cs
@@ -0,0 +1,12 @@
+using System.Runtime.InteropServices;
+
+namespace SpeechLib {
+ [StructLayout(LayoutKind.Explicit, Pack = 4)]
+ public struct __MIDL_IWinTypes_0009 {
+ [FieldOffset(0)]
+ public int hInproc;
+
+ [FieldOffset(0)]
+ public int hRemote;
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/__MIDL_IWinTypes_0009.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/__MIDL_IWinTypes_0009.cs.meta
new file mode 100644
index 0000000..78ce097
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/__MIDL_IWinTypes_0009.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 437c5caaf12898c44a25f238ed519d70
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/tagSTATSTG.cs b/Assets/Plugins/Windows/Interop.SpeechLib/tagSTATSTG.cs
new file mode 100644
index 0000000..655ca6a
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/tagSTATSTG.cs
@@ -0,0 +1,30 @@
+using System;
+using System.Runtime.InteropServices;
+
+namespace SpeechLib {
+ [StructLayout(LayoutKind.Sequential, Pack = 8)]
+ public struct tagSTATSTG {
+ [MarshalAs(UnmanagedType.LPWStr)]
+ public string pwcsName;
+
+ public uint Type;
+
+ public _ULARGE_INTEGER cbSize;
+
+ public _FILETIME mtime;
+
+ public _FILETIME ctime;
+
+ public _FILETIME atime;
+
+ public uint grfMode;
+
+ public uint grfLocksSupported;
+
+ public Guid clsid;
+
+ public uint grfStateBits;
+
+ public uint reserved;
+ }
+}
diff --git a/Assets/Plugins/Windows/Interop.SpeechLib/tagSTATSTG.cs.meta b/Assets/Plugins/Windows/Interop.SpeechLib/tagSTATSTG.cs.meta
new file mode 100644
index 0000000..88e7b3c
--- /dev/null
+++ b/Assets/Plugins/Windows/Interop.SpeechLib/tagSTATSTG.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 4bc0a06fd8444bb4a8c516efc53cb0fe
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant: