├── .gitignore ├── Assembly-CSharp.csproj ├── Assets ├── Materials.meta ├── Materials │ ├── Red.mat │ └── Red.mat.meta ├── Scenes.meta ├── Scenes │ ├── DemoTTS.unity │ └── DemoTTS.unity.meta ├── Scripts.meta ├── Scripts │ ├── SecretHelper.cs │ ├── SecretHelper.cs.meta │ ├── SpeechManager.cs │ ├── SpeechManager.cs.meta │ ├── TTSClient.cs │ ├── TTSClient.cs.meta │ ├── UIManager.cs │ ├── UIManager.cs.meta │ ├── UnityDispatcher.cs │ └── UnityDispatcher.cs.meta ├── SpeechSDK.meta ├── SpeechSDK │ ├── Plugins.meta │ ├── Plugins │ │ ├── Android.meta │ │ ├── Android │ │ │ ├── libs.meta │ │ │ └── libs │ │ │ │ ├── arm64-v8a.meta │ │ │ │ ├── arm64-v8a │ │ │ │ ├── libMicrosoft.CognitiveServices.Speech.core.so │ │ │ │ └── libMicrosoft.CognitiveServices.Speech.core.so.meta │ │ │ │ ├── armeabi-v7a.meta │ │ │ │ ├── armeabi-v7a │ │ │ │ ├── libMicrosoft.CognitiveServices.Speech.core.so │ │ │ │ └── libMicrosoft.CognitiveServices.Speech.core.so.meta │ │ │ │ ├── x86.meta │ │ │ │ └── x86 │ │ │ │ ├── libMicrosoft.CognitiveServices.Speech.core.so │ │ │ │ └── libMicrosoft.CognitiveServices.Speech.core.so.meta │ │ ├── WSA.meta │ │ ├── WSA │ │ │ ├── ARM.meta │ │ │ ├── ARM │ │ │ │ ├── Microsoft.CognitiveServices.Speech.core.dll │ │ │ │ └── Microsoft.CognitiveServices.Speech.core.dll.meta │ │ │ ├── ARM64.meta │ │ │ ├── ARM64 │ │ │ │ ├── Microsoft.CognitiveServices.Speech.core.dll │ │ │ │ └── Microsoft.CognitiveServices.Speech.core.dll.meta │ │ │ ├── x64.meta │ │ │ ├── x64 │ │ │ │ ├── Microsoft.CognitiveServices.Speech.core.dll │ │ │ │ └── Microsoft.CognitiveServices.Speech.core.dll.meta │ │ │ ├── x86.meta │ │ │ └── x86 │ │ │ │ ├── Microsoft.CognitiveServices.Speech.core.dll │ │ │ │ └── Microsoft.CognitiveServices.Speech.core.dll.meta │ │ ├── x86.meta │ │ ├── x86 │ │ │ ├── Microsoft.CognitiveServices.Speech.core.dll │ │ │ └── Microsoft.CognitiveServices.Speech.core.dll.meta │ │ ├── x86_64.meta │ │ └── x86_64 │ │ │ ├── Microsoft.CognitiveServices.Speech.core.dll │ │ │ ├── Microsoft.CognitiveServices.Speech.core.dll.meta │ │ │ ├── Microsoft.CognitiveServices.Speech.csharp.dll │ │ │ ├── Microsoft.CognitiveServices.Speech.csharp.dll.meta │ │ │ ├── Microsoft.CognitiveServices.Speech.csharp.unix.dll │ │ │ └── Microsoft.CognitiveServices.Speech.csharp.unix.dll.meta │ ├── REDIST.txt │ ├── REDIST.txt.meta │ ├── ThirdPartyNotices.md │ ├── ThirdPartyNotices.md.meta │ ├── license.md │ └── license.md.meta ├── WSATestCertificate.pfx ├── WSATestCertificate.pfx.meta ├── csc.rsp └── csc.rsp.meta ├── LICENSE ├── ProjectSettings ├── AudioManager.asset ├── ClusterInputManager.asset ├── DynamicsManager.asset ├── EditorBuildSettings.asset ├── EditorSettings.asset ├── GraphicsSettings.asset ├── InputManager.asset ├── NavMeshAreas.asset ├── NetworkManager.asset ├── Physics2DSettings.asset ├── PresetManager.asset ├── ProjectSettings.asset ├── ProjectVersion.txt ├── QualitySettings.asset ├── TagManager.asset ├── TimeManager.asset ├── UnityConnectSettings.asset └── VFXManager.asset ├── README.md ├── Unity-Text-to-Speech.csproj ├── Unity-Text-to-Speech.sln ├── Unity.Analytics.DataPrivacy.csproj ├── Unity.CollabProxy.Editor.csproj ├── Unity.PackageManagerUI.Editor.csproj ├── Unity.TextMeshPro.Editor.csproj └── Unity.TextMeshPro.csproj /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | 4 | # User-specific files 5 | *.suo 6 | *.user 7 | *.userosscache 8 | *.sln.docstates 9 | 10 | # User-specific files (MonoDevelop/Xamarin Studio) 11 | *.userprefs 12 | 13 | # Build results 14 | [Dd]ebug/ 15 | [Dd]ebugPublic/ 16 | [Rr]elease/ 17 | [Rr]eleases/ 18 | [Rr]ef/ 19 | x64/ 20 | x86/ 21 | [Bb]uild/* 22 | [Bb]uilds/* 23 | bld/ 24 | [Bb]in/ 25 | [Oo]bj/ 26 | 27 | # Packaging libraries 28 | [Pp]ackaging/Builds/* 29 | [Pp]ackaging/Packages/* 30 | 31 | # Packaging content OK 32 | ![Pp]ackaging/Content/** 33 | 34 | # Always get Unity root tools 35 | ![U]nity/** 36 | 37 | # Always include Unity Assets 38 | ![Aa]ssets/AssetStoreTools/** 39 | ![Aa]ssets/** 40 | 41 | # Always ignore Unity Library and Temp folders 42 | **/[Ll]ibrary/* 43 | **/[Tt]emp/ 44 | 45 | # Always ignore Unity ML-Agents Tensorflow plugins folder (they're way too big) 46 | [Aa]ssets/[Mm][Ll]-[Aa]gents/[Pp]lugins/** 47 | 48 | # Ignore UWP folder for projects that target this 49 | **/[Uu]WP/* 50 | 51 | # Visual Studo 2015 cache/options directory 52 | .vs/ 53 | 54 | # MSTest test Results 55 | [Tt]est[Rr]esult*/ 56 | [Bb]uild[Ll]og.* 57 | 58 | # NUNIT 59 | *.VisualState.xml 60 | TestResult.xml 61 | 62 | # Build Results of an ATL Project 63 | [Dd]ebugPS/ 64 | [Rr]eleasePS/ 65 | dlldata.c 66 | 67 | *_i.c 68 | *_p.c 69 | *_i.h 70 | *.ilk 71 | *.obj 72 | *.pch 73 | *.pdb 74 | *.pgc 75 | *.pgd 76 | *.sbr 77 | *.tlb 78 | *.tli 79 | *.tlh 80 | *.tmp 81 | *.tmp_proj 82 | *.log 83 | *.vspscc 84 | *.vssscc 85 | .builds 86 | *.pidb 87 | *.svclog 88 | *.scc 89 | 90 | # Chutzpah Test files 91 | _Chutzpah* 92 | 93 | # Visual C++ cache files 94 | ipch/ 95 | *.aps 96 | *.ncb 97 | *.opensdf 98 | *.sdf 99 | *.cachefile 100 | 101 | # Visual Studio profiler 102 | *.psess 103 | *.vsp 104 | *.vspx 105 | 106 | # TFS 2012 Local Workspace 107 | $tf/ 108 | 109 | # Guidance Automation Toolkit 110 | *.gpState 111 | 112 | # ReSharper is a .NET coding add-in 113 | _ReSharper*/ 114 | *.[Rr]e[Ss]harper 115 | *.DotSettings.user 116 | 117 | # JustCode is a .NET coding addin-in 118 | .JustCode 119 | 120 | # TeamCity is a build add-in 121 | _TeamCity* 122 | 123 | # DotCover is a Code Coverage Tool 124 | *.dotCover 125 | 126 | # NCrunch 127 | _NCrunch_* 128 | .*crunch*.local.xml 129 | 130 | # MightyMoose 131 | *.mm.* 132 | AutoTest.Net/ 133 | 134 | # Web workbench (sass) 135 | .sass-cache/ 136 | 137 | # Installshield output folder 138 | [Ee]xpress/ 139 | 140 | # DocProject is a documentation generator add-in 141 | DocProject/buildhelp/ 142 | DocProject/Help/*.HxT 143 | DocProject/Help/*.HxC 144 | DocProject/Help/*.hhc 145 | DocProject/Help/*.hhk 146 | DocProject/Help/*.hhp 147 | DocProject/Help/Html2 148 | DocProject/Help/html 149 | 150 | # Click-Once directory 151 | publish/ 152 | 153 | # Publish Web Output 154 | *.[Pp]ublish.xml 155 | *.azurePubxml 156 | # TODO: Comment the next line if you want to checkin your web deploy settings 157 | # but database connection strings (with potential passwords) will be unencrypted 158 | *.pubxml 159 | *.publishproj 160 | 161 | # NuGet Packages 162 | *.nupkg 163 | # The packages folder can be ignored because of Package Restore 164 | **/packages/* 165 | # except build/, which is used as an MSBuild target. 166 | !**/packages/build/ 167 | # Uncomment if necessary however generally it will be regenerated when needed 168 | #!**/packages/repositories.config 169 | # VSIX Packages OK 170 | !**/VisualStudio/VSFeatureEngine/Packages/* 171 | # Lock files 172 | **/project.lock.json 173 | 174 | # Windows Azure Build Output 175 | csx/ 176 | *.build.csdef 177 | 178 | # Windows Store app package directory 179 | AppPackages/ 180 | 181 | # Others 182 | *.[Cc]ache 183 | ClientBin/ 184 | [Ss]tyle[Cc]op.* 185 | ~$* 186 | *~ 187 | *.dbmdl 188 | *.dbproj.schemaview 189 | # *.pfx // Allowing PFX because all PFX files are for samples 190 | *.publishsettings 191 | node_modules/ 192 | bower_components/ 193 | 194 | # RIA/Silverlight projects 195 | Generated_Code/ 196 | 197 | # Backup & report files from converting an old project file 198 | # to a newer Visual Studio version. Backup files are not needed, 199 | # because we have git ;-) 200 | _UpgradeReport_Files/ 201 | Backup*/ 202 | UpgradeLog*.XML 203 | UpgradeLog*.htm 204 | 205 | # SQL Server files 206 | *.mdf 207 | *.ldf 208 | 209 | # Business Intelligence projects 210 | *.rdl.data 211 | *.bim.layout 212 | *.bim_*.settings 213 | 214 | # Microsoft Fakes 215 | FakesAssemblies/ 216 | 217 | # Node.js Tools for Visual Studio 218 | .ntvs_analysis.dat 219 | 220 | # Visual Studio 6 build log 221 | *.plg 222 | 223 | # Visual Studio 6 workspace options file 224 | *.opt 225 | -------------------------------------------------------------------------------- /Assets/Materials.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 23b74a1aeb2edcc49b9cd12ed59896ff 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/Red.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Red 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0.5 65 | - _GlossyReflections: 1 66 | - _Metallic: 0.75 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 1, g: 0, b: 0, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | -------------------------------------------------------------------------------- /Assets/Materials/Red.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 37017b1dca9e9f04da26bb19cf14ba9d 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scenes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ac46b65e1174cab49b595a1e077cfd50 3 | folderAsset: yes 4 | timeCreated: 1527036471 5 | licenseType: Pro 6 | DefaultImporter: 7 | externalObjects: {} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Scenes/DemoTTS.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 80e204d34d0aae9438bf119442bb1cb9 3 | timeCreated: 1527036492 4 | licenseType: Pro 5 | DefaultImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cd97d71c180072b4a9357292149f532f 3 | folderAsset: yes 4 | timeCreated: 1527036458 5 | licenseType: Pro 6 | DefaultImporter: 7 | externalObjects: {} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Scripts/SecretHelper.cs: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) Microsoft. All rights reserved. 3 | // Licensed under the MIT license. 4 | // 5 | // MIT License: 6 | // Permission is hereby granted, free of charge, to any person obtaining 7 | // a copy of this software and associated documentation files (the 8 | // "Software"), to deal in the Software without restriction, including 9 | // without limitation the rights to use, copy, modify, merge, publish, 10 | // distribute, sublicense, and/or sell copies of the Software, and to 11 | // permit persons to whom the Software is furnished to do so, subject to 12 | // the following conditions: 13 | // 14 | // The above copyright notice and this permission notice shall be 15 | // included in all copies or substantial portions of the Software. 16 | // 17 | // THE SOFTWARE IS PROVIDED ""AS IS"", WITHOUT WARRANTY OF ANY KIND, 18 | // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 19 | // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 20 | // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 21 | // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 22 | // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 23 | // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 24 | // 25 | 26 | using System; 27 | using System.Reflection; 28 | using UnityEngine; 29 | 30 | namespace Microsoft.Unity 31 | { 32 | /// 33 | /// An attribute that can be used to designate where a secret value is held. 34 | /// 35 | /// 36 | /// This attribute is used by . Please see that class for usage. 37 | /// 38 | [AttributeUsage(validOn: AttributeTargets.Field, AllowMultiple = false, Inherited = false)] 39 | public class SecretValueAttribute : Attribute 40 | { 41 | #region Member Variables 42 | private string name; 43 | #endregion // Member Variables 44 | 45 | #region Constructors 46 | /// 47 | /// Initializes a new instance. 48 | /// 49 | /// 50 | /// The name of the secret value. 51 | /// 52 | public SecretValueAttribute(string name) 53 | { 54 | // Validate 55 | if (string.IsNullOrEmpty(name)) throw new ArgumentException(nameof(name)); 56 | 57 | // Store 58 | this.name = name; 59 | } 60 | #endregion // Constructors 61 | 62 | #region Public Properties 63 | /// 64 | /// Gets the name of the secret. 65 | /// 66 | public string Name => name; 67 | #endregion // Public Properties 68 | } 69 | 70 | /// 71 | /// A class built to help keep API keys and other secret values out of public source control. 72 | /// 73 | /// 74 | /// 75 | /// To use , apply the SecretValue 76 | /// attribute to any inspector fields that you would like kept secret. Next, place the values in the 77 | /// corresponding environment variable. Finally, in your behavior's Awake or Start method, call 78 | /// SecretHelper.LoadSecrets(this). 79 | /// 80 | /// 81 | /// For an example of using , please see LuisManager. 82 | /// 83 | /// 84 | /// IMPORTANT: Please be aware that Unity Editor only loads environment variables once on start. 85 | /// You will need to close Unity and open it again for changes to environment variables to take effect. 86 | /// Also, Unity Hub acts as a parent process when starting Unity from the Hub. Therefore you will need 87 | /// to close not only Unity but also Unity Hub (which runs in the tray) before changes will take effect. 88 | /// 89 | /// 90 | static public class SecretHelper 91 | { 92 | #region Internal Methods 93 | /// 94 | /// Gets the default value for a specified type. 95 | /// 96 | /// 97 | /// The type to obtain the default for. 98 | /// 99 | /// 100 | /// The default value for the type. 101 | /// 102 | static private object GetDefaultValue(Type t) 103 | { 104 | if (t.IsValueType) 105 | { 106 | return Activator.CreateInstance(t); 107 | } 108 | else 109 | { 110 | return null; 111 | } 112 | } 113 | 114 | /// 115 | /// Attempts to load a secret value into the specified field. 116 | /// 117 | /// 118 | /// A that indicates the source of the secret value. 119 | /// 120 | /// 121 | /// The field where the value will be loaded. 122 | /// 123 | /// 124 | /// The object instance where the value will be set. 125 | /// 126 | /// 127 | /// true to overwrite non-default values; otherwise false. The default is false. 128 | /// 129 | /// 130 | /// By default will only update fields that are set to default values 131 | /// (e.g. 0 for int and null or "" for string). This allows values set in the Unity inspector to 132 | /// override values stored in the environment. If values in the environment should always take 133 | /// precedence over values stored in the field set to true. 134 | /// 135 | static private void TryLoadValue(SecretValueAttribute sva, FieldInfo field, object obj, bool overwrite = false) 136 | { 137 | // Validate 138 | if (sva == null) throw new ArgumentNullException(nameof(sva)); 139 | if (field == null) throw new ArgumentNullException(nameof(field)); 140 | if (obj == null) throw new ArgumentNullException(nameof(obj)); 141 | 142 | // Now get the current value of the field 143 | object curValue = field.GetValue(obj); 144 | 145 | // If we're not overwriting values, we need to check to check and make sure a non-default value is not already set 146 | if (!overwrite) 147 | { 148 | // What is the default value for the field? 149 | object defValue = GetDefaultValue(field.FieldType); 150 | 151 | // Is it the current value the same as the default value? 152 | bool isDefaultValue = ((curValue == defValue) || ((field.FieldType == typeof(string)) && (string.IsNullOrEmpty((string)curValue)))); 153 | 154 | // If the current value is not the default value, the secret has already been supplied 155 | // and we don't need to do any more work. 156 | if (!isDefaultValue) { return; } 157 | } 158 | 159 | // Either in overwrite mode or a default value. Let's try to read the environment variable. 160 | string svalue = Environment.GetEnvironmentVariable(sva.Name); 161 | 162 | // Check for no environment variable or no value set. 163 | if (string.IsNullOrEmpty(svalue)) 164 | { 165 | Debug.LogWarning($"{obj.GetType().Name}.{field.Name} has the default value '{curValue}' but the environment variable {sva.Name} is missing or not set."); 166 | return; 167 | } 168 | 169 | // If string, just assign. Otherwise attempt to convert. 170 | if (field.FieldType == typeof(string)) 171 | { 172 | field.SetValue(obj, svalue); 173 | } 174 | else 175 | { 176 | try 177 | { 178 | object cvalue = Convert.ChangeType(svalue, field.FieldType); 179 | field.SetValue(obj, cvalue); 180 | } 181 | catch (Exception ex) 182 | { 183 | Debug.LogWarning($"The value '{svalue}' of environment variable {sva.Name} could not be converted to {field.FieldType.Name}. {ex.Message}"); 184 | } 185 | } 186 | } 187 | #endregion // Internal Methods 188 | 189 | #region Public Methods 190 | /// 191 | /// Attempts to load all secret values for the specified object. 192 | /// 193 | /// 194 | /// The object where secret values will be loaded. 195 | /// 196 | static public void LoadSecrets(object obj) 197 | { 198 | // Validate 199 | if (obj == null) throw new ArgumentNullException(nameof(obj)); 200 | 201 | // Get all fields 202 | FieldInfo[] fields = obj.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance); 203 | 204 | // Look for secret fields 205 | foreach (var field in fields) 206 | { 207 | // Try to get attribute 208 | SecretValueAttribute sva = field.GetCustomAttribute(); 209 | 210 | // If not a secret, skip 211 | if (sva == null) { continue; } 212 | 213 | // Try to load the value 214 | TryLoadValue(sva, field, obj); 215 | } 216 | } 217 | #endregion // Public Methods 218 | } 219 | } -------------------------------------------------------------------------------- /Assets/Scripts/SecretHelper.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ab34ff8f860a4d94d96034ec41e6a3da 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/SpeechManager.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using UnityEngine; 5 | using CognitiveServicesTTS; 6 | using System.IO; 7 | using System.Threading; 8 | using System.Net; 9 | using System.Threading.Tasks; 10 | using Microsoft.Unity; 11 | #if UNITY_EDITOR || !UNITY_WSA 12 | using System.Security.Cryptography.X509Certificates; 13 | #endif 14 | using Microsoft.CognitiveServices.Speech; 15 | using Microsoft.CognitiveServices.Speech.Audio; 16 | 17 | /// 18 | /// SpeechManager provides two paths for Speech Synthesis using the 19 | /// Cognitive Services Unified Speech service: 20 | /// 1. REST API (old method) 21 | /// 2. Official SDK plugin for Unity (recommended) 22 | /// IMPORTANT: THIS CODE ONLY WORKS WITH THE .NET 4.6 SCRIPTING RUNTIME 23 | /// 24 | public class SpeechManager : MonoBehaviour { 25 | 26 | // FOR MORE INFO ON AUTHENTICATION AND HOW TO GET YOUR API KEY, PLEASE VISIT 27 | // https://docs.microsoft.com/en-us/azure/cognitive-services/speech/how-to/how-to-authentication 28 | // The free tier gives you 5,000 free API transactions / month. 29 | // Set credentials in the Inspector 30 | [Tooltip("Cognitive Services Speech API Key")] 31 | [SecretValue("SpeechService_APIKey")] 32 | public string SpeechServiceAPIKey = string.Empty; 33 | [Tooltip("Cognitive Services Speech Service Region.")] 34 | [SecretValue("SpeechService_Region")] 35 | public string SpeechServiceRegion = string.Empty; 36 | 37 | [Tooltip("The audio source where speech will be played.")] 38 | public AudioSource audioSource = null; 39 | 40 | public VoiceName voiceName = VoiceName.enUSJessaRUS; 41 | public int VoicePitch = 0; 42 | 43 | // Access token used to make calls against the Cognitive Services Speech API 44 | string accessToken; 45 | 46 | // Allows callers to make sure the SpeechManager is authenticated and ready before using it 47 | [HideInInspector] 48 | public bool isReady = false; 49 | 50 | private void Awake() 51 | { 52 | // Attempt to load API secrets 53 | SecretHelper.LoadSecrets(this); 54 | 55 | if (audioSource == null) 56 | { 57 | audioSource = GetComponent(); 58 | } 59 | } 60 | 61 | // Use this for initialization 62 | void Start () { 63 | // The Authentication code below is only for the REST API version 64 | Authentication auth = new Authentication(); 65 | Task authenticating = auth.Authenticate($"https://{SpeechServiceRegion}.api.cognitive.microsoft.com/sts/v1.0/issueToken", 66 | SpeechServiceAPIKey); 67 | 68 | // Since the authentication process needs to run asynchronously, we run the code in a coroutine to 69 | // avoid blocking the main Unity thread. 70 | // Make sure you have successfully obtained a token before making any Text-to-Speech API calls. 71 | StartCoroutine(AuthenticateSpeechService(authenticating)); 72 | } 73 | 74 | /// 75 | /// CoRoutine that checks to see if the async authentication process has completed. Once it completes, 76 | /// retrieves the token that will be used for subsequent Cognitive Services Text-to-Speech API calls. 77 | /// 78 | /// 79 | /// 80 | private IEnumerator AuthenticateSpeechService(Task authenticating) 81 | { 82 | // Yield control back to the main thread as long as the task is still running 83 | while (!authenticating.IsCompleted) 84 | { 85 | yield return null; 86 | } 87 | 88 | try 89 | { 90 | accessToken = authenticating.Result; 91 | isReady = true; 92 | Debug.Log($"Token: {accessToken}\n"); 93 | } 94 | catch (Exception ex) 95 | { 96 | Debug.Log("Failed authentication."); 97 | Debug.Log(ex.ToString()); 98 | Debug.Log(ex.Message); 99 | } 100 | } 101 | 102 | /// 103 | /// This method is called once by the Unity coroutine once the speech is successfully synthesized. 104 | /// It will then attempt to play that audio file. 105 | /// Note that the playback will fail if the output audio format is not pcm encoded. 106 | /// 107 | /// The source of the event. 108 | /// The instance containing the event data. 109 | //private void PlayAudio(object sender, GenericEventArgs args) 110 | private void PlayAudio(Stream audioStream) 111 | { 112 | Debug.Log("Playing audio stream"); 113 | 114 | // Play the audio using Unity AudioSource, allowing us to benefit from effects, 115 | // spatialization, mixing, etc. 116 | 117 | // Get the size of the original stream 118 | var size = audioStream.Length; 119 | 120 | // Don't playback if the stream is empty 121 | if (size > 0) 122 | { 123 | try 124 | { 125 | Debug.Log($"Creating new byte array of size {size}"); 126 | // Create buffer 127 | byte[] buffer = new byte[size]; 128 | 129 | Debug.Log($"Reading stream to the end and putting in bytes array."); 130 | buffer = ReadToEnd(audioStream); 131 | 132 | // Convert raw WAV data into Unity audio data 133 | Debug.Log($"Converting raw WAV data of size {buffer.Length} into Unity audio data."); 134 | int sampleCount = 0; 135 | int frequency = 0; 136 | var unityData = AudioWithHeaderToUnityAudio(buffer, out sampleCount, out frequency); 137 | 138 | // Convert data to a Unity audio clip 139 | Debug.Log($"Converting audio data of size {unityData.Length} to Unity audio clip with {sampleCount} samples at frequency {frequency}."); 140 | var clip = ToClip("Speech", unityData, sampleCount, frequency); 141 | 142 | // Set the source on the audio clip 143 | audioSource.clip = clip; 144 | 145 | Debug.Log($"Trigger playback of audio clip on AudioSource."); 146 | // Play audio 147 | audioSource.Play(); 148 | } 149 | catch (Exception ex) 150 | { 151 | Debug.Log("An error occurred during audio stream conversion and playback." 152 | + Environment.NewLine + ex.Message); 153 | } 154 | } 155 | } 156 | 157 | /// 158 | /// Unity Coroutine that monitors the Task used to synthesize speech from a text string. 159 | /// Once completed, it starts audio playback using the assigned audio source. 160 | /// 161 | /// 162 | /// 163 | private IEnumerator WaitAndPlayRoutineREST(Task speakTask) 164 | { 165 | // Yield control back to the main thread as long as the task is still running 166 | while (!speakTask.IsCompleted) 167 | { 168 | yield return null; 169 | } 170 | 171 | // Get audio stream result send it to play TTS audio 172 | MemoryStream resultStream = new MemoryStream(); 173 | speakTask.Result.CopyTo(resultStream); 174 | if (resultStream != null) 175 | { 176 | PlayAudio(resultStream); 177 | } 178 | } 179 | 180 | /// 181 | /// Converts a text string into synthesized speech using Microsoft Cognitive Services, then 182 | /// starts audio playback using the assigned audio source. 183 | /// 184 | /// 185 | public void SpeakWithRESTAPI(string message) 186 | { 187 | try 188 | { 189 | Debug.Log("Starting Cognitive Services Speech API synthesize request code execution."); 190 | // Synthesis endpoint for old Bing Speech API: https://speech.platform.bing.com/synthesize 191 | // For new unified SpeechService API: https://westus.tts.speech.microsoft.com/cognitiveservices/v1 192 | // Note: new unified SpeechService API synthesis endpoint is per region 193 | string requestUri = $"https://{SpeechServiceRegion}.tts.speech.microsoft.com/cognitiveservices/v1"; 194 | Synthesize cortana = new Synthesize(); 195 | 196 | // Reuse Synthesize object to minimize latency 197 | Task Speaking = cortana.Speak(CancellationToken.None, new Synthesize.InputOptions() 198 | { 199 | RequestUri = new Uri(requestUri), 200 | // Text to be spoken. 201 | Text = message, 202 | VoiceType = Gender.Female, 203 | // Refer to the documentation for complete list of supported locales. 204 | Locale = cortana.GetVoiceLocale(voiceName), 205 | // You can also customize the output voice. Refer to the documentation to view the different 206 | // voices that the TTS service can output. 207 | VoiceName = voiceName, 208 | 209 | // Service can return audio in different output format. 210 | OutputFormat = AudioOutputFormat.Riff24Khz16BitMonoPcm, 211 | PitchDelta = VoicePitch, 212 | AuthorizationToken = "Bearer " + accessToken, 213 | }); 214 | 215 | // We can't await the task without blocking the main Unity thread, so we'll call a coroutine to 216 | // monitor completion and play audio when it's ready. 217 | StartCoroutine(WaitAndPlayRoutineREST(Speaking)); 218 | } 219 | catch (Exception ex) 220 | { 221 | Debug.Log("An error occurred when attempting to synthesize speech audio." 222 | + Environment.NewLine + ex.Message); 223 | } 224 | } 225 | 226 | /// 227 | /// Reads a stream from beginning to end, returning an array of bytes 228 | /// 229 | /// 230 | /// 231 | public static byte[] ReadToEnd(Stream stream) 232 | { 233 | long originalPosition = 0; 234 | 235 | if (stream.CanSeek) 236 | { 237 | originalPosition = stream.Position; 238 | stream.Position = 0; 239 | } 240 | 241 | try 242 | { 243 | byte[] readBuffer = new byte[4096]; 244 | 245 | int totalBytesRead = 0; 246 | int bytesRead; 247 | 248 | while ((bytesRead = stream.Read(readBuffer, totalBytesRead, readBuffer.Length - totalBytesRead)) > 0) 249 | { 250 | totalBytesRead += bytesRead; 251 | 252 | if (totalBytesRead == readBuffer.Length) 253 | { 254 | int nextByte = stream.ReadByte(); 255 | if (nextByte != -1) 256 | { 257 | byte[] temp = new byte[readBuffer.Length * 2]; 258 | Buffer.BlockCopy(readBuffer, 0, temp, 0, readBuffer.Length); 259 | Buffer.SetByte(temp, totalBytesRead, (byte)nextByte); 260 | readBuffer = temp; 261 | totalBytesRead++; 262 | } 263 | } 264 | } 265 | 266 | byte[] buffer = readBuffer; 267 | if (readBuffer.Length != totalBytesRead) 268 | { 269 | buffer = new byte[totalBytesRead]; 270 | Buffer.BlockCopy(readBuffer, 0, buffer, 0, totalBytesRead); 271 | } 272 | return buffer; 273 | } 274 | finally 275 | { 276 | if (stream.CanSeek) 277 | { 278 | stream.Position = originalPosition; 279 | } 280 | } 281 | } 282 | 283 | /// 284 | /// Converts two bytes to one float in the range -1 to 1. 285 | /// 286 | /// The first byte. 287 | /// The second byte. 288 | /// The converted float. 289 | private static float BytesToFloat(byte firstByte, byte secondByte) 290 | { 291 | // Convert two bytes to one short (little endian) 292 | short s = (short)((secondByte << 8) | firstByte); 293 | 294 | // Convert to range from -1 to (just below) 1 295 | return s / 32768.0F; 296 | } 297 | 298 | /// 299 | /// Converts an array of bytes to an integer. 300 | /// 301 | /// The byte array. 302 | /// An offset to read from. 303 | /// The converted int. 304 | private static int BytesToInt(byte[] bytes, int offset = 0) 305 | { 306 | int value = 0; 307 | for (int i = 0; i < 4; i++) 308 | { 309 | value |= ((int)bytes[offset + i]) << (i * 8); 310 | } 311 | return value; 312 | } 313 | 314 | /// 315 | /// Dynamically creates an that represents raw Unity audio data. 316 | /// 317 | /// The name of the dynamically generated clip. 318 | /// Raw Unity audio data. 319 | /// The number of samples in the audio data. 320 | /// The frequency of the audio data. 321 | /// The . 322 | private static AudioClip ToClip(string name, float[] audioData, int sampleCount, int frequency) 323 | { 324 | var clip = AudioClip.Create(name, sampleCount, 1, frequency, false); 325 | clip.SetData(audioData, 0); 326 | return clip; 327 | } 328 | 329 | /// 330 | /// Converts raw WAV data into Unity formatted audio data. 331 | /// 332 | /// The raw WAV data. 333 | /// The number of samples in the audio data. 334 | /// The frequency of the audio data. 335 | /// The Unity formatted audio data. 336 | private static float[] AudioWithHeaderToUnityAudio(byte[] wavAudio, out int sampleCount, out int frequency) 337 | { 338 | // Determine if mono or stereo 339 | int channelCount = wavAudio[22]; // Speech audio data is always mono but read actual header value for processing 340 | Debug.Log($"Audio data has {channelCount} channel(s)."); 341 | 342 | // Get the frequency 343 | frequency = BytesToInt(wavAudio, 24); 344 | Debug.Log($"Audio data frequency is {frequency}."); 345 | 346 | // Get past all the other sub chunks to get to the data subchunk: 347 | int pos = 12; // First subchunk ID from 12 to 16 348 | 349 | // Keep iterating until we find the data chunk (i.e. 64 61 74 61 ...... (i.e. 100 97 116 97 in decimal)) 350 | while (!(wavAudio[pos] == 100 && wavAudio[pos + 1] == 97 && wavAudio[pos + 2] == 116 && wavAudio[pos + 3] == 97)) 351 | { 352 | pos += 4; 353 | int chunkSize = wavAudio[pos] + wavAudio[pos + 1] * 256 + wavAudio[pos + 2] * 65536 + wavAudio[pos + 3] * 16777216; 354 | pos += 4 + chunkSize; 355 | } 356 | pos += 8; 357 | 358 | // Pos is now positioned to start of actual sound data. 359 | sampleCount = (wavAudio.Length - pos) / 2; // 2 bytes per sample (16 bit sound mono) 360 | if (channelCount == 2) { sampleCount /= 2; } // 4 bytes per sample (16 bit stereo) 361 | Debug.Log($"Audio data contains {sampleCount} samples. Starting conversion"); 362 | 363 | // Allocate memory (supporting left channel only) 364 | var unityData = new float[sampleCount]; 365 | 366 | try 367 | { 368 | // Write to double array/s: 369 | int i = 0; 370 | while (pos < wavAudio.Length) 371 | { 372 | unityData[i] = BytesToFloat(wavAudio[pos], wavAudio[pos + 1]); 373 | pos += 2; 374 | if (channelCount == 2) 375 | { 376 | pos += 2; 377 | } 378 | i++; 379 | } 380 | } 381 | catch (Exception ex) 382 | { 383 | Debug.Log($"Error occurred converting audio data to float array of size {wavAudio.Length} at position {pos}."); 384 | } 385 | 386 | return unityData; 387 | } 388 | 389 | /// 390 | /// Converts raw WAV data into Unity formatted audio data. 391 | /// 392 | /// The raw WAV data. 393 | /// The number of samples in the audio data. 394 | /// The frequency of the audio data. 395 | /// The Unity formatted audio data. 396 | private static float[] FixedRAWAudioToUnityAudio(byte[] wavAudio, int channelCount, int resolution, out int sampleCount) 397 | { 398 | // Pos is now positioned to start of actual sound data. 399 | int bytesPerSample = resolution / 8; // e.g. 2 bytes per sample (16 bit sound mono) 400 | sampleCount = wavAudio.Length / bytesPerSample; 401 | if (channelCount == 2) { sampleCount /= 2; } // 4 bytes per sample (16 bit stereo) 402 | Debug.Log($"Audio data contains {sampleCount} samples. Starting conversion"); 403 | 404 | // Allocate memory (supporting left channel only) 405 | var unityData = new float[sampleCount]; 406 | 407 | int pos = 0; 408 | try 409 | { 410 | // Write to double array/s: 411 | int i = 0; 412 | while (pos < wavAudio.Length) 413 | { 414 | unityData[i] = BytesToFloat(wavAudio[pos], wavAudio[pos + 1]); 415 | pos += 2; 416 | if (channelCount == 2) 417 | { 418 | pos += 2; 419 | } 420 | i++; 421 | } 422 | } 423 | catch (Exception ex) 424 | { 425 | Debug.Log($"Error occurred converting audio data to float array of size {wavAudio.Length} at position {pos}."); 426 | } 427 | 428 | return unityData; 429 | } 430 | 431 | // Speech synthesis to pull audio output stream. 432 | public void SpeakWithSDKPlugin(string message) 433 | { 434 | Synthesize cortana = new Synthesize(); 435 | SpeechSynthesizer synthesizer; 436 | 437 | // Creates an instance of a speech config with specified subscription key and service region. 438 | // Replace with your own subscription key and service region (e.g., "westus"). 439 | var config = SpeechConfig.FromSubscription(SpeechServiceAPIKey, SpeechServiceRegion); 440 | config.SpeechSynthesisLanguage = cortana.GetVoiceLocale(voiceName); 441 | config.SpeechSynthesisVoiceName = cortana.ConvertVoiceNametoString(voiceName); 442 | 443 | // Creates an audio out stream. 444 | //var stream = AudioOutputStream.CreatePullStream(); 445 | // Creates a speech synthesizer using audio stream output. 446 | //var streamConfig = AudioConfig.FromStreamOutput(stream); 447 | synthesizer = new SpeechSynthesizer(config, null); 448 | Task Speaking = synthesizer.SpeakTextAsync(message); 449 | 450 | // We can't await the task without blocking the main Unity thread, so we'll call a coroutine to 451 | // monitor completion and play audio when it's ready. 452 | UnityDispatcher.InvokeOnAppThread(() => { 453 | StartCoroutine(WaitAndPlayRoutineSDK(Speaking)); 454 | }); 455 | } 456 | 457 | private IEnumerator WaitAndPlayRoutineSDK(Task speakTask) 458 | { 459 | // Yield control back to the main thread as long as the task is still running 460 | while (!speakTask.IsCompleted) 461 | { 462 | yield return null; 463 | } 464 | 465 | var result = speakTask.Result; 466 | if (result.Reason == ResultReason.SynthesizingAudioCompleted) 467 | { 468 | var audiodata = result.AudioData; 469 | Debug.Log($"Speech synthesized for text and the audio was written to output stream."); 470 | 471 | int sampleCount = 0; 472 | int frequency = 16000; 473 | var unityData = FixedRAWAudioToUnityAudio(audiodata, 1, 16, out sampleCount); 474 | 475 | // Convert data to a Unity audio clip 476 | Debug.Log($"Converting audio data of size {unityData.Length} to Unity audio clip with {sampleCount} samples at frequency {frequency}."); 477 | var clip = ToClip("Speech", unityData, sampleCount, frequency); 478 | 479 | // Set the source on the audio clip 480 | audioSource.clip = clip; 481 | 482 | Debug.Log($"Trigger playback of audio clip on AudioSource."); 483 | // Play audio 484 | audioSource.Play(); 485 | } 486 | else if (result.Reason == ResultReason.Canceled) 487 | { 488 | var cancellation = SpeechSynthesisCancellationDetails.FromResult(result); 489 | Debug.Log($"CANCELED: Reason={cancellation.Reason}"); 490 | 491 | if (cancellation.Reason == CancellationReason.Error) 492 | { 493 | Debug.Log($"CANCELED: ErrorCode={cancellation.ErrorCode}"); 494 | Debug.Log($"CANCELED: ErrorDetails=[{cancellation.ErrorDetails}]"); 495 | Debug.Log($"CANCELED: Did you update the subscription info?"); 496 | } 497 | } 498 | } 499 | } 500 | -------------------------------------------------------------------------------- /Assets/Scripts/SpeechManager.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 280587dff7d5c7e45ae35ef0a8820e18 3 | timeCreated: 1527036525 4 | licenseType: Pro 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /Assets/Scripts/TTSClient.cs: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) Microsoft. All rights reserved. 3 | // Licensed under the MIT license. 4 | // 5 | // Microsoft Cognitive Services (formerly Project Oxford): https://www.microsoft.com/cognitive-services 6 | // 7 | // Microsoft Cognitive Services (formerly Project Oxford) GitHub: 8 | // https://github.com/Microsoft/Cognitive-Speech-TTS 9 | // 10 | // Copyright (c) Microsoft Corporation 11 | // All rights reserved. 12 | // 13 | // MIT License: 14 | // Permission is hereby granted, free of charge, to any person obtaining 15 | // a copy of this software and associated documentation files (the 16 | // "Software"), to deal in the Software without restriction, including 17 | // without limitation the rights to use, copy, modify, merge, publish, 18 | // distribute, sublicense, and/or sell copies of the Software, and to 19 | // permit persons to whom the Software is furnished to do so, subject to 20 | // the following conditions: 21 | // 22 | // The above copyright notice and this permission notice shall be 23 | // included in all copies or substantial portions of the Software. 24 | // 25 | // THE SOFTWARE IS PROVIDED ""AS IS"", WITHOUT WARRANTY OF ANY KIND, 26 | // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 27 | // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 28 | // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 29 | // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 30 | // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 31 | // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 32 | // 33 | 34 | // IMPORTANT: THIS CODE ONLY WORKS WITH THE .NET 4.6 SCRIPTING RUNTIME 35 | 36 | using System; 37 | using System.Collections.Generic; 38 | using System.IO; 39 | using System.Net; 40 | // Note that Unity 2017.x doesn't recognize the namespace System.Net.Http by default. 41 | // This is why we added mcs.rsp with "-r:System.Net.Http.dll" in it in the Assets folder. 42 | using System.Net.Http; 43 | using System.Text; 44 | using System.Threading; 45 | using System.Threading.Tasks; 46 | using System.Xml.Linq; 47 | using UnityEngine; 48 | 49 | namespace CognitiveServicesTTS 50 | { 51 | /// 52 | /// This class demonstrates how to get a valid O-auth token 53 | /// 54 | public class Authentication 55 | { 56 | private string AccessUri; 57 | private string apiKey; 58 | private string accessToken; 59 | private Timer accessTokenRenewer; 60 | 61 | private HttpClient client; 62 | 63 | //Access token expires every 10 minutes. Renew it every 9 minutes only. 64 | private const int RefreshTokenDuration = 9; 65 | 66 | public Authentication() 67 | { 68 | client = new HttpClient(); 69 | } 70 | 71 | /// 72 | /// The Authenticate method needs to be called separately since it runs asynchronously 73 | /// and cannot be in the constructor, nor should it block the main Unity thread. 74 | /// 75 | /// 76 | /// 77 | /// 78 | public async Task Authenticate(string issueTokenUri, string apiKey) 79 | { 80 | this.AccessUri = issueTokenUri; 81 | this.apiKey = apiKey; 82 | 83 | this.accessToken = await HttpClientPost(issueTokenUri, this.apiKey); 84 | 85 | // Renew the token every specfied minutes 86 | accessTokenRenewer = new Timer(new TimerCallback(OnTokenExpiredCallback), 87 | this, 88 | TimeSpan.FromMinutes(RefreshTokenDuration), 89 | TimeSpan.FromMilliseconds(-1)); 90 | 91 | return accessToken; 92 | } 93 | 94 | public string GetAccessToken() 95 | { 96 | return this.accessToken; 97 | } 98 | 99 | private async void RenewAccessToken() 100 | { 101 | string newAccessToken = await HttpClientPost(AccessUri, this.apiKey); 102 | //swap the new token with old one 103 | //Note: the swap is thread unsafe 104 | this.accessToken = newAccessToken; 105 | Debug.Log(string.Format("Renewed token for user: {0} is: {1}", 106 | this.apiKey, 107 | this.accessToken)); 108 | } 109 | 110 | private void OnTokenExpiredCallback(object stateInfo) 111 | { 112 | try 113 | { 114 | RenewAccessToken(); 115 | } 116 | catch (Exception ex) 117 | { 118 | Debug.Log(string.Format("Failed renewing access token. Details: {0}", ex.Message)); 119 | } 120 | finally 121 | { 122 | try 123 | { 124 | accessTokenRenewer.Change(TimeSpan.FromMinutes(RefreshTokenDuration), TimeSpan.FromMilliseconds(-1)); 125 | } 126 | catch (Exception ex) 127 | { 128 | Debug.Log(string.Format("Failed to reschedule the timer to renew access token. Details: {0}", ex.Message)); 129 | } 130 | } 131 | } 132 | 133 | /// 134 | /// Asynchronously calls the authentication service via HTTP POST to obtain 135 | /// 136 | /// 137 | /// 138 | /// 139 | private async Task HttpClientPost(string accessUri, string apiKey) 140 | { 141 | HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, accessUri); 142 | request.Headers.Add("Ocp-Apim-Subscription-Key", apiKey); 143 | request.Content = new StringContent(""); 144 | 145 | HttpResponseMessage httpMsg = await client.SendAsync(request); 146 | Debug.Log($"Authentication Response status code: [{httpMsg.StatusCode}]"); 147 | 148 | return await httpMsg.Content.ReadAsStringAsync(); 149 | } 150 | } 151 | 152 | /// 153 | /// Generic event args 154 | /// 155 | /// Any type T 156 | public class GenericEventArgs : EventArgs 157 | { 158 | /// 159 | /// Initializes a new instance of the class. 160 | /// 161 | /// The event data. 162 | public GenericEventArgs(T eventData) 163 | { 164 | this.EventData = eventData; 165 | } 166 | 167 | /// 168 | /// Gets the event data. 169 | /// 170 | public T EventData { get; private set; } 171 | } 172 | 173 | /// 174 | /// Gender of the voice. 175 | /// 176 | public enum Gender 177 | { 178 | Female, 179 | Male 180 | } 181 | 182 | /// 183 | /// Voice output formats. 184 | /// 185 | public enum AudioOutputFormat 186 | { 187 | /// 188 | /// raw-8khz-8bit-mono-mulaw request output audio format type. 189 | /// 190 | Raw8Khz8BitMonoMULaw, 191 | 192 | /// 193 | /// raw-16khz-16bit-mono-pcm request output audio format type. 194 | /// 195 | Raw16Khz16BitMonoPcm, 196 | 197 | /// 198 | /// riff-8khz-8bit-mono-mulaw request output audio format type. 199 | /// 200 | Riff8Khz8BitMonoMULaw, 201 | 202 | /// 203 | /// riff-16khz-16bit-mono-pcm request output audio format type. 204 | /// 205 | Riff16Khz16BitMonoPcm, 206 | 207 | // 208 | /// ssml-16khz-16bit-mono-silk request output audio format type. 209 | /// It is a SSML with audio segment, with audio compressed by SILK codec 210 | /// 211 | Ssml16Khz16BitMonoSilk, 212 | 213 | /// 214 | /// raw-16khz-16bit-mono-truesilk request output audio format type. 215 | /// Audio compressed by SILK codec 216 | /// 217 | Raw16Khz16BitMonoTrueSilk, 218 | 219 | /// 220 | /// ssml-16khz-16bit-mono-tts request output audio format type. 221 | /// It is a SSML with audio segment, and it needs tts engine to play out 222 | /// 223 | Ssml16Khz16BitMonoTts, 224 | 225 | /// 226 | /// audio-16khz-128kbitrate-mono-mp3 request output audio format type. 227 | /// 228 | Audio16Khz128KBitRateMonoMp3, 229 | 230 | /// 231 | /// audio-16khz-64kbitrate-mono-mp3 request output audio format type. 232 | /// 233 | Audio16Khz64KBitRateMonoMp3, 234 | 235 | /// 236 | /// audio-16khz-32kbitrate-mono-mp3 request output audio format type. 237 | /// 238 | Audio16Khz32KBitRateMonoMp3, 239 | 240 | /// 241 | /// audio-16khz-16kbps-mono-siren request output audio format type. 242 | /// 243 | Audio16Khz16KbpsMonoSiren, 244 | 245 | /// 246 | /// riff-16khz-16kbps-mono-siren request output audio format type. 247 | /// 248 | Riff16Khz16KbpsMonoSiren, 249 | 250 | /// 251 | /// raw-24khz-16bit-mono-truesilk request output audio format type. 252 | /// 253 | Raw24Khz16BitMonoTrueSilk, 254 | 255 | /// 256 | /// raw-24khz-16bit-mono-pcm request output audio format type. 257 | /// 258 | Raw24Khz16BitMonoPcm, 259 | 260 | /// 261 | /// riff-24khz-16bit-mono-pcm request output audio format type. 262 | /// 263 | Riff24Khz16BitMonoPcm, 264 | 265 | /// 266 | /// audio-24khz-48kbitrate-mono-mp3 request output audio format type. 267 | /// 268 | Audio24Khz48KBitRateMonoMp3, 269 | 270 | /// 271 | /// audio-24khz-96kbitrate-mono-mp3 request output audio format type. 272 | /// 273 | Audio24Khz96KBitRateMonoMp3, 274 | 275 | /// 276 | /// audio-24khz-160kbitrate-mono-mp3 request output audio format type. 277 | /// 278 | Audio24Khz160KBitRateMonoMp3 279 | } 280 | 281 | /// 282 | /// List of all voices currently implemented in this sample. This may not include all the 283 | /// voices supported by the Cognitive Services Text-to-Speech API. Please visit the following 284 | /// link to get the most up-to-date list of supported languages: 285 | /// https://docs.microsoft.com/en-us/azure/cognitive-services/speech/api-reference-rest/bingvoiceoutput 286 | /// Don't forget to edit ConvertVoiceNametoString() below if you add more values to this enum. 287 | /// 288 | public enum VoiceName 289 | { 290 | enAUCatherine, 291 | enAUHayleyRUS, 292 | enCALinda, 293 | enCAHeatherRUS, 294 | enGBSusanApollo, 295 | enGBHazelRUS, 296 | enGBGeorgeApollo, 297 | enIESean, 298 | enINHeeraApollo, 299 | enINPriyaRUS, 300 | enINRaviApollo, 301 | enUSZiraRUS, 302 | enUSJessaRUS, 303 | enUSJessaNeural, 304 | enUSBenjaminRUS, 305 | enUSGuyNeural, 306 | deATMichael, 307 | deCHKarsten, 308 | deDEHedda, 309 | deDEHeddaRUS, 310 | deDEStefanApollo, 311 | deDEKatjaNeural, 312 | esESLauraApollo, 313 | esESHelenaRUS, 314 | esESPabloApollo, 315 | esMXHildaRUS, 316 | esMXRaulApollo, 317 | frCACaroline, 318 | frCAHarmonieRUS, 319 | frCHGuillaume, 320 | frFRJulieApollo, 321 | frFRHortenseRUS 322 | } 323 | 324 | /// 325 | /// Sample synthesize request 326 | /// 327 | public class Synthesize 328 | { 329 | /// 330 | /// Generates SSML. 331 | /// 332 | /// The locale. 333 | /// The gender. 334 | /// The voice name. 335 | /// The text input. 336 | private string GenerateSsml(string locale, string gender, VoiceName voicename, string text, int pitchdelta) 337 | { 338 | string voice = ConvertVoiceNametoString(voicename); 339 | 340 | XNamespace xmlns = "http://www.w3.org/2001/10/synthesis"; 341 | var ssmlDoc = new XDocument( 342 | new XElement(xmlns + "speak", 343 | new XAttribute("version", "1.0"), 344 | new XAttribute(XNamespace.Xml + "lang", locale), // was locked to "en-US" 345 | new XElement("voice", 346 | new XAttribute(XNamespace.Xml + "lang", locale), 347 | new XAttribute(XNamespace.Xml + "gender", gender), 348 | new XAttribute("name", voice), 349 | new XElement("prosody", 350 | new XAttribute("pitch", pitchdelta.ToString() + "Hz"), 351 | text)))); 352 | 353 | return ssmlDoc.ToString(); 354 | } 355 | 356 | private HttpClient client; 357 | private HttpClientHandler handler; 358 | 359 | /// 360 | /// Initializes a new instance of the class. 361 | /// 362 | public Synthesize() 363 | { 364 | var cookieContainer = new CookieContainer(); 365 | handler = new HttpClientHandler() { CookieContainer = new CookieContainer(), UseProxy = false }; 366 | client = new HttpClient(handler); 367 | } 368 | 369 | ~Synthesize() 370 | { 371 | client.Dispose(); 372 | handler.Dispose(); 373 | } 374 | 375 | /// 376 | /// Sends the specified text to be spoken to the TTS service and saves the response audio to a file. 377 | /// 378 | /// The cancellation token. 379 | /// A Task 380 | public async Task Speak(CancellationToken cancellationToken, InputOptions inputOptions) 381 | { 382 | client.DefaultRequestHeaders.Clear(); 383 | foreach (var header in inputOptions.Headers) 384 | { 385 | client.DefaultRequestHeaders.TryAddWithoutValidation(header.Key, header.Value); 386 | } 387 | 388 | var genderValue = ""; 389 | switch (inputOptions.VoiceType) 390 | { 391 | case Gender.Male: 392 | genderValue = "Male"; 393 | break; 394 | 395 | case Gender.Female: 396 | default: 397 | genderValue = "Female"; 398 | break; 399 | } 400 | 401 | var request = new HttpRequestMessage(HttpMethod.Post, inputOptions.RequestUri) 402 | { 403 | Content = new StringContent(GenerateSsml(inputOptions.Locale, genderValue, inputOptions.VoiceName, inputOptions.Text, inputOptions.PitchDelta)) 404 | }; 405 | 406 | var httpMsg = await client.SendAsync(request, HttpCompletionOption.ResponseContentRead, cancellationToken); 407 | Debug.Log($"Response status code: [{httpMsg.StatusCode}]"); 408 | 409 | Stream httpStream = await httpMsg.Content.ReadAsStreamAsync(); 410 | 411 | return httpStream; 412 | } 413 | 414 | /// 415 | /// Converts a specific VoioceName enum option into its string counterpart as expected 416 | /// by the API when building the SSML string that is sent to Cognitive Services. 417 | /// Make sure that each option in the enum is included in the switch below. 418 | /// 419 | /// 420 | /// 421 | public string ConvertVoiceNametoString(VoiceName voicename) 422 | { 423 | switch (voicename) 424 | { 425 | case VoiceName.enAUCatherine: 426 | return "Microsoft Server Speech Text to Speech Voice (en-AU, Catherine)"; 427 | case VoiceName.enAUHayleyRUS: 428 | return "Microsoft Server Speech Text to Speech Voice (en-AU, HayleyRUS)"; 429 | case VoiceName.enCALinda: 430 | return "Microsoft Server Speech Text to Speech Voice (en-CA, Linda)"; 431 | case VoiceName.enCAHeatherRUS: 432 | return "Microsoft Server Speech Text to Speech Voice (en-CA, HeatherRUS)"; 433 | case VoiceName.enGBSusanApollo: 434 | return "Microsoft Server Speech Text to Speech Voice (en-GB, Susan, Apollo)"; 435 | case VoiceName.enGBHazelRUS: 436 | return "Microsoft Server Speech Text to Speech Voice (en-GB, HazelRUS)"; 437 | case VoiceName.enGBGeorgeApollo: 438 | return "Microsoft Server Speech Text to Speech Voice (en-GB, George, Apollo)"; 439 | case VoiceName.enIESean: 440 | return "Microsoft Server Speech Text to Speech Voice (en-IE, Sean)"; 441 | case VoiceName.enINHeeraApollo: 442 | return "Microsoft Server Speech Text to Speech Voice (en-IN, Heera, Apollo)"; 443 | case VoiceName.enINPriyaRUS: 444 | return "Microsoft Server Speech Text to Speech Voice (en-IN, PriyaRUS)"; 445 | case VoiceName.enINRaviApollo: 446 | return "Microsoft Server Speech Text to Speech Voice (en-IN, Ravi, Apollo)"; 447 | case VoiceName.enUSZiraRUS: 448 | return "Microsoft Server Speech Text to Speech Voice (en-US, ZiraRUS)"; 449 | case VoiceName.enUSJessaRUS: 450 | return "Microsoft Server Speech Text to Speech Voice (en-US, JessaRUS)"; 451 | case VoiceName.enUSJessaNeural: 452 | return "Microsoft Server Speech Text to Speech Voice (en-US, JessaNeural)"; 453 | case VoiceName.enUSBenjaminRUS: 454 | return "Microsoft Server Speech Text to Speech Voice (en-US, BenjaminRUS)"; 455 | case VoiceName.enUSGuyNeural: 456 | return "Microsoft Server Speech Text to Speech Voice (en-US, GuyNeural)"; 457 | case VoiceName.deATMichael: 458 | return "Microsoft Server Speech Text to Speech Voice (de-AT, Michael)"; 459 | case VoiceName.deCHKarsten: 460 | return "Microsoft Server Speech Text to Speech Voice (de-CH, Karsten)"; 461 | case VoiceName.deDEHedda: 462 | return "Microsoft Server Speech Text to Speech Voice (de-DE, Hedda)"; 463 | case VoiceName.deDEHeddaRUS: 464 | return "Microsoft Server Speech Text to Speech Voice (de-DE, HeddaRUS)"; 465 | case VoiceName.deDEStefanApollo: 466 | return "Microsoft Server Speech Text to Speech Voice (de-DE, Stefan, Apollo)"; 467 | case VoiceName.deDEKatjaNeural: 468 | return "Microsoft Server Speech Text to Speech Voice (de-DE, KatjaNeural)"; 469 | case VoiceName.esESHelenaRUS: 470 | return "Microsoft Server Speech Text to Speech Voice (es-ES, HelenaRUS)"; 471 | case VoiceName.esESLauraApollo: 472 | return "Microsoft Server Speech Text to Speech Voice (es-ES, Laura, Apollo)"; 473 | case VoiceName.esESPabloApollo: 474 | return "Microsoft Server Speech Text to Speech Voice (es-ES, Pablo, Apollo)"; 475 | case VoiceName.esMXHildaRUS: 476 | return "Microsoft Server Speech Text to Speech Voice (es-MX, HildaRUS)"; 477 | case VoiceName.esMXRaulApollo: 478 | return "Microsoft Server Speech Text to Speech Voice (es-MX, Raul, Apollo)"; 479 | case VoiceName.frCACaroline: 480 | return "Microsoft Server Speech Text to Speech Voice (fr-CA, Caroline)"; 481 | case VoiceName.frCAHarmonieRUS: 482 | return "Microsoft Server Speech Text to Speech Voice (fr-CA, HarmonieRUS)"; 483 | case VoiceName.frCHGuillaume: 484 | return "Microsoft Server Speech Text to Speech Voice (fr-CH, Guillaume)"; 485 | case VoiceName.frFRJulieApollo: 486 | return "Microsoft Server Speech Text to Speech Voice (fr-FR, Julie, Apollo)"; 487 | case VoiceName.frFRHortenseRUS: 488 | return "Microsoft Server Speech Text to Speech Voice (fr-FR, HortenseRUS)"; 489 | default: 490 | return "Microsoft Server Speech Text to Speech Voice (en-US, JessaRUS)"; 491 | } 492 | } 493 | 494 | public string GetVoiceLocale(VoiceName voicename) 495 | { 496 | return ConvertVoiceNametoString(voicename).Substring(46, 5); 497 | } 498 | 499 | /// 500 | /// Inputs Options for the TTS Service. 501 | /// 502 | public class InputOptions 503 | { 504 | /// 505 | /// Initializes a new instance of the class. 506 | /// 507 | public InputOptions() 508 | { 509 | this.Locale = "en-us"; 510 | this.VoiceName = VoiceName.enUSJessaRUS; 511 | // Default to Riff24Khz16BitMonoPcm output format. 512 | this.OutputFormat = AudioOutputFormat.Riff24Khz16BitMonoPcm; 513 | this.PitchDelta = 0; 514 | } 515 | 516 | /// 517 | /// Gets or sets the request URI. 518 | /// 519 | public Uri RequestUri { get; set; } 520 | 521 | /// 522 | /// Gets or sets the audio output format. 523 | /// 524 | public AudioOutputFormat OutputFormat { get; set; } 525 | 526 | /// 527 | /// Gets or sets the headers. 528 | /// 529 | public IEnumerable> Headers 530 | { 531 | get 532 | { 533 | List> toReturn = new List>(); 534 | toReturn.Add(new KeyValuePair("Content-Type", "application/ssml+xml")); 535 | 536 | string outputFormat; 537 | 538 | switch (this.OutputFormat) 539 | { 540 | case AudioOutputFormat.Raw16Khz16BitMonoPcm: 541 | outputFormat = "raw-16khz-16bit-mono-pcm"; 542 | break; 543 | 544 | case AudioOutputFormat.Raw8Khz8BitMonoMULaw: 545 | outputFormat = "raw-8khz-8bit-mono-mulaw"; 546 | break; 547 | 548 | case AudioOutputFormat.Riff16Khz16BitMonoPcm: 549 | outputFormat = "riff-16khz-16bit-mono-pcm"; 550 | break; 551 | 552 | case AudioOutputFormat.Riff8Khz8BitMonoMULaw: 553 | outputFormat = "riff-8khz-8bit-mono-mulaw"; 554 | break; 555 | 556 | case AudioOutputFormat.Ssml16Khz16BitMonoSilk: 557 | outputFormat = "ssml-16khz-16bit-mono-silk"; 558 | break; 559 | 560 | case AudioOutputFormat.Raw16Khz16BitMonoTrueSilk: 561 | outputFormat = "raw-16khz-16bit-mono-truesilk"; 562 | break; 563 | 564 | case AudioOutputFormat.Ssml16Khz16BitMonoTts: 565 | outputFormat = "ssml-16khz-16bit-mono-tts"; 566 | break; 567 | 568 | case AudioOutputFormat.Audio16Khz128KBitRateMonoMp3: 569 | outputFormat = "audio-16khz-128kbitrate-mono-mp3"; 570 | break; 571 | 572 | case AudioOutputFormat.Audio16Khz64KBitRateMonoMp3: 573 | outputFormat = "audio-16khz-64kbitrate-mono-mp3"; 574 | break; 575 | 576 | case AudioOutputFormat.Audio16Khz32KBitRateMonoMp3: 577 | outputFormat = "audio-16khz-32kbitrate-mono-mp3"; 578 | break; 579 | 580 | case AudioOutputFormat.Audio16Khz16KbpsMonoSiren: 581 | outputFormat = "audio-16khz-16kbps-mono-siren"; 582 | break; 583 | 584 | case AudioOutputFormat.Riff16Khz16KbpsMonoSiren: 585 | outputFormat = "riff-16khz-16kbps-mono-siren"; 586 | break; 587 | case AudioOutputFormat.Raw24Khz16BitMonoPcm: 588 | outputFormat = "raw-24khz-16bit-mono-pcm"; 589 | break; 590 | case AudioOutputFormat.Riff24Khz16BitMonoPcm: 591 | outputFormat = "riff-24khz-16bit-mono-pcm"; 592 | break; 593 | case AudioOutputFormat.Audio24Khz48KBitRateMonoMp3: 594 | outputFormat = "audio-24khz-48kbitrate-mono-mp3"; 595 | break; 596 | case AudioOutputFormat.Audio24Khz96KBitRateMonoMp3: 597 | outputFormat = "audio-24khz-96kbitrate-mono-mp3"; 598 | break; 599 | case AudioOutputFormat.Audio24Khz160KBitRateMonoMp3: 600 | outputFormat = "audio-24khz-160kbitrate-mono-mp3"; 601 | break; 602 | default: 603 | outputFormat = "riff-16khz-16bit-mono-pcm"; 604 | break; 605 | } 606 | 607 | toReturn.Add(new KeyValuePair("X-Microsoft-OutputFormat", outputFormat)); 608 | // authorization Header 609 | toReturn.Add(new KeyValuePair("Authorization", this.AuthorizationToken)); 610 | // Refer to the doc 611 | toReturn.Add(new KeyValuePair("X-Search-AppId", "07D3234E49CE426DAA29772419F436CA")); 612 | // Refer to the doc 613 | toReturn.Add(new KeyValuePair("X-Search-ClientID", "1ECFAE91408841A480F00935DC390960")); 614 | // The software originating the request 615 | toReturn.Add(new KeyValuePair("User-Agent", "UnityTTSClient")); 616 | 617 | return toReturn; 618 | } 619 | set 620 | { 621 | Headers = value; 622 | } 623 | } 624 | 625 | /// 626 | /// Gets or sets the locale. 627 | /// 628 | public String Locale { get; set; } 629 | 630 | /// 631 | /// Gets or sets the type of the voice; male/female. 632 | /// 633 | public Gender VoiceType { get; set; } 634 | 635 | /// 636 | /// Gets or sets the name of the voice. 637 | /// 638 | public VoiceName VoiceName { get; set; } 639 | 640 | /// 641 | /// Gets or sets the pitch delta/modifier in Hz (plus/minus) 642 | /// 643 | public int PitchDelta { get; set; } 644 | 645 | /// 646 | /// Authorization Token. 647 | /// 648 | public string AuthorizationToken { get; set; } 649 | 650 | /// 651 | /// Gets or sets the text. 652 | /// 653 | public string Text { get; set; } 654 | } 655 | } 656 | } -------------------------------------------------------------------------------- /Assets/Scripts/TTSClient.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6ba09d1338cad244eb5e3c36d05ca515 3 | timeCreated: 1527093889 4 | licenseType: Pro 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /Assets/Scripts/UIManager.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEngine.UI; 5 | using CognitiveServicesTTS; 6 | using System; 7 | using System.Threading.Tasks; 8 | 9 | public class UIManager : MonoBehaviour { 10 | 11 | public SpeechManager speech; 12 | public InputField input; 13 | public InputField pitch; 14 | public Toggle useSDK; 15 | public Dropdown voicelist; 16 | public GameObject shape; 17 | 18 | private void Start() 19 | { 20 | pitch.text = "0"; 21 | 22 | List voices = new List(); 23 | foreach (VoiceName voice in Enum.GetValues(typeof(VoiceName))) 24 | { 25 | voices.Add(voice.ToString()); 26 | } 27 | voicelist.AddOptions(voices); 28 | voicelist.value = (int)VoiceName.enUSJessaRUS; 29 | } 30 | 31 | // The spinning cube is only used to verify that speech synthesis doesn't introduce 32 | // game loop blocking code. 33 | public void Update() 34 | { 35 | if (shape != null) 36 | shape.transform.Rotate(Vector3.up, 1); 37 | } 38 | 39 | /// 40 | /// Speech synthesis can be called via REST API or Speech Service SDK plugin for Unity 41 | /// 42 | public async void SpeechPlayback() 43 | { 44 | if (speech.isReady) 45 | { 46 | string msg = input.text; 47 | speech.voiceName = (VoiceName)voicelist.value; 48 | speech.VoicePitch = int.Parse(pitch.text); 49 | if (useSDK.isOn) 50 | { 51 | // Required to insure non-blocking code in the main Unity UI thread. 52 | await Task.Run(() => speech.SpeakWithSDKPlugin(msg)); 53 | } 54 | else 55 | { 56 | // This code is non-blocking by default, no need to run in background 57 | speech.SpeakWithRESTAPI(msg); 58 | } 59 | } else 60 | { 61 | Debug.Log("SpeechManager is not ready. Wait until authentication has completed."); 62 | } 63 | } 64 | 65 | public void ClearText() 66 | { 67 | input.text = ""; 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /Assets/Scripts/UIManager.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9b3a660a68379154888186a675a6fad3 3 | timeCreated: 1527117356 4 | licenseType: Pro 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /Assets/Scripts/UnityDispatcher.cs: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) Microsoft. All rights reserved. 3 | // Licensed under the MIT license. See LICENSE.md file in the project root for full license information. 4 | // 5 | using System; 6 | using System.Collections.Generic; 7 | using UnityEngine; 8 | 9 | #if WINDOWS_UWP 10 | /// 11 | /// A helper class for dispatching actions to run on various Unity threads. 12 | /// 13 | static public class UnityDispatcher 14 | { 15 | /// 16 | /// Schedules the specified action to be run on Unity's main thread. 17 | /// 18 | /// 19 | /// The action to run. 20 | /// 21 | static public void InvokeOnAppThread(Action action) 22 | { 23 | if (UnityEngine.WSA.Application.RunningOnAppThread()) 24 | { 25 | // Already on app thread, just run inline 26 | action(); 27 | } 28 | else 29 | { 30 | // Schedule 31 | UnityEngine.WSA.Application.InvokeOnAppThread(() => action(), false); 32 | } 33 | } 34 | } 35 | #endif 36 | 37 | #if !WINDOWS_UWP 38 | /// 39 | /// A helper class for dispatching actions to run on various Unity threads. 40 | /// 41 | public class UnityDispatcher : MonoBehaviour 42 | { 43 | #region Member Variables 44 | static private UnityDispatcher instance; 45 | static private Queue queue = new Queue(8); 46 | static private volatile bool queued = false; 47 | #endregion // Member Variables 48 | 49 | #region Internal Methods 50 | [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] 51 | static private void Initialize() 52 | { 53 | if (instance == null) 54 | { 55 | instance = new GameObject("Dispatcher").AddComponent(); 56 | DontDestroyOnLoad(instance.gameObject); 57 | } 58 | } 59 | #endregion // Internal Methods 60 | 61 | #region Unity Overrides 62 | protected virtual void Update() 63 | { 64 | // Action placeholder 65 | Action action = null; 66 | 67 | // Do this as long as there's something in the queue 68 | while (queued) 69 | { 70 | // Lock only long enough to take an item 71 | lock (queue) 72 | { 73 | // Get the next action 74 | action = queue.Dequeue(); 75 | 76 | // Have we exhausted the queue? 77 | if (queue.Count == 0) { queued = false; } 78 | } 79 | 80 | // Execute the action outside of the lock 81 | action(); 82 | } 83 | } 84 | #endregion // Unity Overrides 85 | 86 | #region Public Methods 87 | /// 88 | /// Schedules the specified action to be run on Unity's main thread. 89 | /// 90 | /// 91 | /// The action to run. 92 | /// 93 | static public void InvokeOnAppThread(Action action) 94 | { 95 | // Validate 96 | if (action == null) throw new ArgumentNullException(nameof(action)); 97 | 98 | // Lock to be thread-safe 99 | lock (queue) 100 | { 101 | // Add the action 102 | queue.Enqueue(action); 103 | 104 | // Action is in the queue 105 | queued = true; 106 | } 107 | } 108 | #endregion // Public Methods 109 | } 110 | #endif -------------------------------------------------------------------------------- /Assets/Scripts/UnityDispatcher.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b451aed06f2d0e242a693535a34306a7 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/SpeechSDK.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a808cd88d0c99d4448a63ec77e796290 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/SpeechSDK/Plugins.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7bd60dc7f5a53bf4c98b97aafac9c2bf 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/SpeechSDK/Plugins/Android.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 05768214abed4ff4b99600606fcd3964 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/SpeechSDK/Plugins/Android/libs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e848cec632581054b836af690f606671 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/SpeechSDK/Plugins/Android/libs/arm64-v8a.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 29e8bd43a28e69d42a7cbafa3a26be06 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/SpeechSDK/Plugins/Android/libs/arm64-v8a/libMicrosoft.CognitiveServices.Speech.core.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ActiveNick/Unity-Text-to-Speech/1865e9a86a3f37d7d7be4aa5ad59d5629998d1ca/Assets/SpeechSDK/Plugins/Android/libs/arm64-v8a/libMicrosoft.CognitiveServices.Speech.core.so -------------------------------------------------------------------------------- /Assets/SpeechSDK/Plugins/Android/libs/arm64-v8a/libMicrosoft.CognitiveServices.Speech.core.so.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 484165a16e0d52346ad4a53368e87b7b 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 0 11 | isExplicitlyReferenced: 0 12 | platformData: 13 | - first: 14 | '': Any 15 | second: 16 | enabled: 0 17 | settings: 18 | Exclude Android: 0 19 | Exclude Editor: 1 20 | Exclude Linux: 1 21 | Exclude Linux64: 1 22 | Exclude LinuxUniversal: 1 23 | Exclude OSXUniversal: 1 24 | Exclude Win: 1 25 | Exclude Win64: 1 26 | Exclude WindowsStoreApps: 1 27 | - first: 28 | Android: Android 29 | second: 30 | enabled: 1 31 | settings: 32 | CPU: ARM64 33 | - first: 34 | Any: 35 | second: 36 | enabled: 0 37 | settings: {} 38 | - first: 39 | Editor: Editor 40 | second: 41 | enabled: 0 42 | settings: 43 | CPU: AnyCPU 44 | DefaultValueInitialized: true 45 | OS: AnyOS 46 | - first: 47 | Facebook: Win 48 | second: 49 | enabled: 0 50 | settings: 51 | CPU: AnyCPU 52 | - first: 53 | Facebook: Win64 54 | second: 55 | enabled: 0 56 | settings: 57 | CPU: AnyCPU 58 | - first: 59 | Standalone: Linux 60 | second: 61 | enabled: 0 62 | settings: 63 | CPU: x86 64 | - first: 65 | Standalone: Linux64 66 | second: 67 | enabled: 0 68 | settings: 69 | CPU: x86_64 70 | - first: 71 | Standalone: LinuxUniversal 72 | second: 73 | enabled: 0 74 | settings: 75 | CPU: None 76 | - first: 77 | Standalone: OSXUniversal 78 | second: 79 | enabled: 0 80 | settings: 81 | CPU: AnyCPU 82 | - first: 83 | Standalone: Win 84 | second: 85 | enabled: 0 86 | settings: 87 | CPU: AnyCPU 88 | - first: 89 | Standalone: Win64 90 | second: 91 | enabled: 0 92 | settings: 93 | CPU: AnyCPU 94 | - first: 95 | Windows Store Apps: WindowsStoreApps 96 | second: 97 | enabled: 0 98 | settings: 99 | CPU: AnyCPU 100 | DontProcess: false 101 | PlaceholderPath: 102 | SDK: AnySDK 103 | ScriptingBackend: AnyScriptingBackend 104 | userData: 105 | assetBundleName: 106 | assetBundleVariant: 107 | -------------------------------------------------------------------------------- /Assets/SpeechSDK/Plugins/Android/libs/armeabi-v7a.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 809d146eb311ab14eb672aff356a5b98 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/SpeechSDK/Plugins/Android/libs/armeabi-v7a/libMicrosoft.CognitiveServices.Speech.core.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ActiveNick/Unity-Text-to-Speech/1865e9a86a3f37d7d7be4aa5ad59d5629998d1ca/Assets/SpeechSDK/Plugins/Android/libs/armeabi-v7a/libMicrosoft.CognitiveServices.Speech.core.so -------------------------------------------------------------------------------- /Assets/SpeechSDK/Plugins/Android/libs/armeabi-v7a/libMicrosoft.CognitiveServices.Speech.core.so.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 21ca801d32aef0e48879d1983002c196 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 0 11 | isExplicitlyReferenced: 0 12 | platformData: 13 | - first: 14 | '': Any 15 | second: 16 | enabled: 0 17 | settings: 18 | Exclude Android: 0 19 | Exclude Editor: 1 20 | Exclude Linux: 1 21 | Exclude Linux64: 1 22 | Exclude LinuxUniversal: 1 23 | Exclude OSXUniversal: 1 24 | Exclude Win: 1 25 | Exclude Win64: 1 26 | Exclude WindowsStoreApps: 1 27 | - first: 28 | Android: Android 29 | second: 30 | enabled: 1 31 | settings: 32 | CPU: ARMv7 33 | - first: 34 | Any: 35 | second: 36 | enabled: 0 37 | settings: {} 38 | - first: 39 | Editor: Editor 40 | second: 41 | enabled: 0 42 | settings: 43 | CPU: AnyCPU 44 | DefaultValueInitialized: true 45 | OS: AnyOS 46 | - first: 47 | Facebook: Win 48 | second: 49 | enabled: 0 50 | settings: 51 | CPU: AnyCPU 52 | - first: 53 | Facebook: Win64 54 | second: 55 | enabled: 0 56 | settings: 57 | CPU: AnyCPU 58 | - first: 59 | Standalone: Linux 60 | second: 61 | enabled: 0 62 | settings: 63 | CPU: x86 64 | - first: 65 | Standalone: Linux64 66 | second: 67 | enabled: 0 68 | settings: 69 | CPU: x86_64 70 | - first: 71 | Standalone: LinuxUniversal 72 | second: 73 | enabled: 0 74 | settings: 75 | CPU: None 76 | - first: 77 | Standalone: OSXUniversal 78 | second: 79 | enabled: 0 80 | settings: 81 | CPU: AnyCPU 82 | - first: 83 | Standalone: Win 84 | second: 85 | enabled: 0 86 | settings: 87 | CPU: AnyCPU 88 | - first: 89 | Standalone: Win64 90 | second: 91 | enabled: 0 92 | settings: 93 | CPU: AnyCPU 94 | - first: 95 | Windows Store Apps: WindowsStoreApps 96 | second: 97 | enabled: 0 98 | settings: 99 | CPU: AnyCPU 100 | DontProcess: false 101 | PlaceholderPath: 102 | SDK: AnySDK 103 | ScriptingBackend: AnyScriptingBackend 104 | userData: 105 | assetBundleName: 106 | assetBundleVariant: 107 | -------------------------------------------------------------------------------- /Assets/SpeechSDK/Plugins/Android/libs/x86.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5f055949a37d19d4c8e2ffcd61395882 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/SpeechSDK/Plugins/Android/libs/x86/libMicrosoft.CognitiveServices.Speech.core.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ActiveNick/Unity-Text-to-Speech/1865e9a86a3f37d7d7be4aa5ad59d5629998d1ca/Assets/SpeechSDK/Plugins/Android/libs/x86/libMicrosoft.CognitiveServices.Speech.core.so -------------------------------------------------------------------------------- /Assets/SpeechSDK/Plugins/Android/libs/x86/libMicrosoft.CognitiveServices.Speech.core.so.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 332059f8356e4cb47bbdfb208caf47c9 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 0 11 | isExplicitlyReferenced: 0 12 | platformData: 13 | - first: 14 | '': Any 15 | second: 16 | enabled: 0 17 | settings: 18 | Exclude Android: 0 19 | Exclude Editor: 1 20 | Exclude Linux: 1 21 | Exclude Linux64: 1 22 | Exclude LinuxUniversal: 1 23 | Exclude OSXUniversal: 1 24 | Exclude Win: 1 25 | Exclude Win64: 1 26 | Exclude WindowsStoreApps: 1 27 | - first: 28 | Android: Android 29 | second: 30 | enabled: 1 31 | settings: 32 | CPU: x86 33 | - first: 34 | Any: 35 | second: 36 | enabled: 0 37 | settings: {} 38 | - first: 39 | Editor: Editor 40 | second: 41 | enabled: 0 42 | settings: 43 | CPU: AnyCPU 44 | DefaultValueInitialized: true 45 | OS: AnyOS 46 | - first: 47 | Facebook: Win 48 | second: 49 | enabled: 0 50 | settings: 51 | CPU: AnyCPU 52 | - first: 53 | Facebook: Win64 54 | second: 55 | enabled: 0 56 | settings: 57 | CPU: AnyCPU 58 | - first: 59 | Standalone: Linux 60 | second: 61 | enabled: 0 62 | settings: 63 | CPU: x86 64 | - first: 65 | Standalone: Linux64 66 | second: 67 | enabled: 0 68 | settings: 69 | CPU: x86_64 70 | - first: 71 | Standalone: LinuxUniversal 72 | second: 73 | enabled: 0 74 | settings: 75 | CPU: None 76 | - first: 77 | Standalone: OSXUniversal 78 | second: 79 | enabled: 0 80 | settings: 81 | CPU: AnyCPU 82 | - first: 83 | Standalone: Win 84 | second: 85 | enabled: 0 86 | settings: 87 | CPU: AnyCPU 88 | - first: 89 | Standalone: Win64 90 | second: 91 | enabled: 0 92 | settings: 93 | CPU: AnyCPU 94 | - first: 95 | Windows Store Apps: WindowsStoreApps 96 | second: 97 | enabled: 0 98 | settings: 99 | CPU: AnyCPU 100 | DontProcess: false 101 | PlaceholderPath: 102 | SDK: AnySDK 103 | ScriptingBackend: AnyScriptingBackend 104 | userData: 105 | assetBundleName: 106 | assetBundleVariant: 107 | -------------------------------------------------------------------------------- /Assets/SpeechSDK/Plugins/WSA.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 003d4d913efcb1f4dbf94595c8053c59 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/SpeechSDK/Plugins/WSA/ARM.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 293d42a6ae7c07a40ae5f86aa30bd2a6 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/SpeechSDK/Plugins/WSA/ARM/Microsoft.CognitiveServices.Speech.core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ActiveNick/Unity-Text-to-Speech/1865e9a86a3f37d7d7be4aa5ad59d5629998d1ca/Assets/SpeechSDK/Plugins/WSA/ARM/Microsoft.CognitiveServices.Speech.core.dll -------------------------------------------------------------------------------- /Assets/SpeechSDK/Plugins/WSA/ARM/Microsoft.CognitiveServices.Speech.core.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bb55eb4c84f6464c8ab71475d4a5ba79 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 0 11 | isExplicitlyReferenced: 0 12 | platformData: 13 | - first: 14 | '': Any 15 | second: 16 | enabled: 0 17 | settings: 18 | Exclude Android: 1 19 | Exclude Editor: 1 20 | Exclude Linux: 1 21 | Exclude Linux64: 1 22 | Exclude LinuxUniversal: 1 23 | Exclude OSXUniversal: 1 24 | Exclude Win: 1 25 | Exclude Win64: 1 26 | Exclude WindowsStoreApps: 0 27 | - first: 28 | Android: Android 29 | second: 30 | enabled: 0 31 | settings: 32 | CPU: ARMv7 33 | - first: 34 | Any: 35 | second: 36 | enabled: 0 37 | settings: {} 38 | - first: 39 | Editor: Editor 40 | second: 41 | enabled: 0 42 | settings: 43 | CPU: AnyCPU 44 | DefaultValueInitialized: true 45 | OS: AnyOS 46 | - first: 47 | Facebook: Win 48 | second: 49 | enabled: 0 50 | settings: 51 | CPU: AnyCPU 52 | - first: 53 | Facebook: Win64 54 | second: 55 | enabled: 0 56 | settings: 57 | CPU: AnyCPU 58 | - first: 59 | Standalone: Linux 60 | second: 61 | enabled: 0 62 | settings: 63 | CPU: x86 64 | - first: 65 | Standalone: Linux64 66 | second: 67 | enabled: 0 68 | settings: 69 | CPU: x86_64 70 | - first: 71 | Standalone: LinuxUniversal 72 | second: 73 | enabled: 0 74 | settings: 75 | CPU: None 76 | - first: 77 | Standalone: OSXUniversal 78 | second: 79 | enabled: 0 80 | settings: 81 | CPU: AnyCPU 82 | - first: 83 | Standalone: Win 84 | second: 85 | enabled: 0 86 | settings: 87 | CPU: AnyCPU 88 | - first: 89 | Standalone: Win64 90 | second: 91 | enabled: 0 92 | settings: 93 | CPU: AnyCPU 94 | - first: 95 | Windows Store Apps: WindowsStoreApps 96 | second: 97 | enabled: 1 98 | settings: 99 | CPU: ARM 100 | DontProcess: false 101 | PlaceholderPath: 102 | SDK: UWP 103 | ScriptingBackend: AnyScriptingBackend 104 | userData: 105 | assetBundleName: 106 | assetBundleVariant: 107 | -------------------------------------------------------------------------------- /Assets/SpeechSDK/Plugins/WSA/ARM64.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bd10f792b13ad2d46a22f8852b89277d 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/SpeechSDK/Plugins/WSA/ARM64/Microsoft.CognitiveServices.Speech.core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ActiveNick/Unity-Text-to-Speech/1865e9a86a3f37d7d7be4aa5ad59d5629998d1ca/Assets/SpeechSDK/Plugins/WSA/ARM64/Microsoft.CognitiveServices.Speech.core.dll -------------------------------------------------------------------------------- /Assets/SpeechSDK/Plugins/WSA/ARM64/Microsoft.CognitiveServices.Speech.core.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e145d1c2321b90f4685b6a3f86c7fd7d 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 0 11 | isExplicitlyReferenced: 0 12 | platformData: 13 | - first: 14 | '': Any 15 | second: 16 | enabled: 0 17 | settings: 18 | Exclude Android: 1 19 | Exclude Editor: 1 20 | Exclude Linux: 1 21 | Exclude Linux64: 1 22 | Exclude LinuxUniversal: 1 23 | Exclude OSXUniversal: 1 24 | Exclude Win: 1 25 | Exclude Win64: 1 26 | Exclude WindowsStoreApps: 0 27 | - first: 28 | Android: Android 29 | second: 30 | enabled: 0 31 | settings: 32 | CPU: ARMv7 33 | - first: 34 | Any: 35 | second: 36 | enabled: 0 37 | settings: {} 38 | - first: 39 | Editor: Editor 40 | second: 41 | enabled: 0 42 | settings: 43 | CPU: AnyCPU 44 | DefaultValueInitialized: true 45 | OS: AnyOS 46 | - first: 47 | Facebook: Win 48 | second: 49 | enabled: 0 50 | settings: 51 | CPU: AnyCPU 52 | - first: 53 | Facebook: Win64 54 | second: 55 | enabled: 0 56 | settings: 57 | CPU: AnyCPU 58 | - first: 59 | Standalone: Linux 60 | second: 61 | enabled: 0 62 | settings: 63 | CPU: x86 64 | - first: 65 | Standalone: Linux64 66 | second: 67 | enabled: 0 68 | settings: 69 | CPU: x86_64 70 | - first: 71 | Standalone: LinuxUniversal 72 | second: 73 | enabled: 0 74 | settings: 75 | CPU: None 76 | - first: 77 | Standalone: OSXUniversal 78 | second: 79 | enabled: 0 80 | settings: 81 | CPU: AnyCPU 82 | - first: 83 | Standalone: Win 84 | second: 85 | enabled: 0 86 | settings: 87 | CPU: AnyCPU 88 | - first: 89 | Standalone: Win64 90 | second: 91 | enabled: 0 92 | settings: 93 | CPU: AnyCPU 94 | - first: 95 | Windows Store Apps: WindowsStoreApps 96 | second: 97 | enabled: 1 98 | settings: 99 | CPU: ARM64 100 | DontProcess: false 101 | PlaceholderPath: 102 | SDK: UWP 103 | ScriptingBackend: AnyScriptingBackend 104 | userData: 105 | assetBundleName: 106 | assetBundleVariant: 107 | -------------------------------------------------------------------------------- /Assets/SpeechSDK/Plugins/WSA/x64.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 531a3da625ee75f4986f08be51eb0922 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/SpeechSDK/Plugins/WSA/x64/Microsoft.CognitiveServices.Speech.core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ActiveNick/Unity-Text-to-Speech/1865e9a86a3f37d7d7be4aa5ad59d5629998d1ca/Assets/SpeechSDK/Plugins/WSA/x64/Microsoft.CognitiveServices.Speech.core.dll -------------------------------------------------------------------------------- /Assets/SpeechSDK/Plugins/WSA/x64/Microsoft.CognitiveServices.Speech.core.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5de02dabb4a2d114aa9caf21d66b41b7 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 0 11 | isExplicitlyReferenced: 0 12 | platformData: 13 | - first: 14 | '': Any 15 | second: 16 | enabled: 0 17 | settings: 18 | Exclude Android: 1 19 | Exclude Editor: 1 20 | Exclude Linux: 1 21 | Exclude Linux64: 1 22 | Exclude LinuxUniversal: 1 23 | Exclude OSXUniversal: 1 24 | Exclude Win: 1 25 | Exclude Win64: 1 26 | Exclude WindowsStoreApps: 0 27 | - first: 28 | Android: Android 29 | second: 30 | enabled: 0 31 | settings: 32 | CPU: ARMv7 33 | - first: 34 | Any: 35 | second: 36 | enabled: 0 37 | settings: {} 38 | - first: 39 | Editor: Editor 40 | second: 41 | enabled: 0 42 | settings: 43 | CPU: AnyCPU 44 | DefaultValueInitialized: true 45 | OS: AnyOS 46 | - first: 47 | Facebook: Win 48 | second: 49 | enabled: 0 50 | settings: 51 | CPU: AnyCPU 52 | - first: 53 | Facebook: Win64 54 | second: 55 | enabled: 0 56 | settings: 57 | CPU: AnyCPU 58 | - first: 59 | Standalone: Linux 60 | second: 61 | enabled: 0 62 | settings: 63 | CPU: x86 64 | - first: 65 | Standalone: Linux64 66 | second: 67 | enabled: 0 68 | settings: 69 | CPU: x86_64 70 | - first: 71 | Standalone: LinuxUniversal 72 | second: 73 | enabled: 0 74 | settings: 75 | CPU: None 76 | - first: 77 | Standalone: OSXUniversal 78 | second: 79 | enabled: 0 80 | settings: 81 | CPU: AnyCPU 82 | - first: 83 | Standalone: Win 84 | second: 85 | enabled: 0 86 | settings: 87 | CPU: AnyCPU 88 | - first: 89 | Standalone: Win64 90 | second: 91 | enabled: 0 92 | settings: 93 | CPU: AnyCPU 94 | - first: 95 | Windows Store Apps: WindowsStoreApps 96 | second: 97 | enabled: 1 98 | settings: 99 | CPU: X64 100 | DontProcess: false 101 | PlaceholderPath: 102 | SDK: UWP 103 | ScriptingBackend: AnyScriptingBackend 104 | userData: 105 | assetBundleName: 106 | assetBundleVariant: 107 | -------------------------------------------------------------------------------- /Assets/SpeechSDK/Plugins/WSA/x86.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a1997f527ea38de489f175b4c198aeb4 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/SpeechSDK/Plugins/WSA/x86/Microsoft.CognitiveServices.Speech.core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ActiveNick/Unity-Text-to-Speech/1865e9a86a3f37d7d7be4aa5ad59d5629998d1ca/Assets/SpeechSDK/Plugins/WSA/x86/Microsoft.CognitiveServices.Speech.core.dll -------------------------------------------------------------------------------- /Assets/SpeechSDK/Plugins/WSA/x86/Microsoft.CognitiveServices.Speech.core.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c3680a7f7dc2ee14c9ccbfdac1d1606f 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 0 11 | isExplicitlyReferenced: 0 12 | platformData: 13 | - first: 14 | '': Any 15 | second: 16 | enabled: 0 17 | settings: 18 | Exclude Android: 1 19 | Exclude Editor: 1 20 | Exclude Linux: 1 21 | Exclude Linux64: 1 22 | Exclude LinuxUniversal: 1 23 | Exclude OSXUniversal: 1 24 | Exclude Win: 1 25 | Exclude Win64: 1 26 | Exclude WindowsStoreApps: 0 27 | - first: 28 | Android: Android 29 | second: 30 | enabled: 0 31 | settings: 32 | CPU: ARMv7 33 | - first: 34 | Any: 35 | second: 36 | enabled: 0 37 | settings: {} 38 | - first: 39 | Editor: Editor 40 | second: 41 | enabled: 0 42 | settings: 43 | CPU: AnyCPU 44 | DefaultValueInitialized: true 45 | OS: AnyOS 46 | - first: 47 | Facebook: Win 48 | second: 49 | enabled: 0 50 | settings: 51 | CPU: AnyCPU 52 | - first: 53 | Facebook: Win64 54 | second: 55 | enabled: 0 56 | settings: 57 | CPU: AnyCPU 58 | - first: 59 | Standalone: Linux 60 | second: 61 | enabled: 0 62 | settings: 63 | CPU: x86 64 | - first: 65 | Standalone: Linux64 66 | second: 67 | enabled: 0 68 | settings: 69 | CPU: x86_64 70 | - first: 71 | Standalone: LinuxUniversal 72 | second: 73 | enabled: 0 74 | settings: 75 | CPU: None 76 | - first: 77 | Standalone: OSXUniversal 78 | second: 79 | enabled: 0 80 | settings: 81 | CPU: AnyCPU 82 | - first: 83 | Standalone: Win 84 | second: 85 | enabled: 0 86 | settings: 87 | CPU: AnyCPU 88 | - first: 89 | Standalone: Win64 90 | second: 91 | enabled: 0 92 | settings: 93 | CPU: AnyCPU 94 | - first: 95 | Windows Store Apps: WindowsStoreApps 96 | second: 97 | enabled: 1 98 | settings: 99 | CPU: X86 100 | DontProcess: false 101 | PlaceholderPath: 102 | SDK: UWP 103 | ScriptingBackend: AnyScriptingBackend 104 | userData: 105 | assetBundleName: 106 | assetBundleVariant: 107 | -------------------------------------------------------------------------------- /Assets/SpeechSDK/Plugins/x86.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 000e7fc831d3dca438ac94be289daf3b 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/SpeechSDK/Plugins/x86/Microsoft.CognitiveServices.Speech.core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ActiveNick/Unity-Text-to-Speech/1865e9a86a3f37d7d7be4aa5ad59d5629998d1ca/Assets/SpeechSDK/Plugins/x86/Microsoft.CognitiveServices.Speech.core.dll -------------------------------------------------------------------------------- /Assets/SpeechSDK/Plugins/x86/Microsoft.CognitiveServices.Speech.core.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7455490e6df7cb649b96fbffb41f5635 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 0 11 | isExplicitlyReferenced: 0 12 | platformData: 13 | - first: 14 | '': Any 15 | second: 16 | enabled: 0 17 | settings: 18 | Exclude Android: 1 19 | Exclude Editor: 0 20 | Exclude Linux: 1 21 | Exclude Linux64: 1 22 | Exclude LinuxUniversal: 1 23 | Exclude OSXUniversal: 1 24 | Exclude Win: 0 25 | Exclude Win64: 1 26 | Exclude WindowsStoreApps: 1 27 | - first: 28 | Android: Android 29 | second: 30 | enabled: 0 31 | settings: 32 | CPU: ARMv7 33 | - first: 34 | Any: 35 | second: 36 | enabled: 0 37 | settings: {} 38 | - first: 39 | Editor: Editor 40 | second: 41 | enabled: 1 42 | settings: 43 | CPU: x86 44 | DefaultValueInitialized: true 45 | OS: Windows 46 | - first: 47 | Facebook: Win 48 | second: 49 | enabled: 0 50 | settings: 51 | CPU: AnyCPU 52 | - first: 53 | Facebook: Win64 54 | second: 55 | enabled: 0 56 | settings: 57 | CPU: None 58 | - first: 59 | Standalone: Linux 60 | second: 61 | enabled: 0 62 | settings: 63 | CPU: x86 64 | - first: 65 | Standalone: Linux64 66 | second: 67 | enabled: 0 68 | settings: 69 | CPU: None 70 | - first: 71 | Standalone: LinuxUniversal 72 | second: 73 | enabled: 0 74 | settings: 75 | CPU: x86 76 | - first: 77 | Standalone: OSXUniversal 78 | second: 79 | enabled: 0 80 | settings: 81 | CPU: x86 82 | - first: 83 | Standalone: Win 84 | second: 85 | enabled: 1 86 | settings: 87 | CPU: AnyCPU 88 | - first: 89 | Standalone: Win64 90 | second: 91 | enabled: 0 92 | settings: 93 | CPU: None 94 | - first: 95 | Windows Store Apps: WindowsStoreApps 96 | second: 97 | enabled: 0 98 | settings: 99 | CPU: AnyCPU 100 | DontProcess: false 101 | PlaceholderPath: 102 | SDK: AnySDK 103 | ScriptingBackend: AnyScriptingBackend 104 | userData: 105 | assetBundleName: 106 | assetBundleVariant: 107 | -------------------------------------------------------------------------------- /Assets/SpeechSDK/Plugins/x86_64.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dd8f092df43602f419d95b94f6d1a8c4 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/SpeechSDK/Plugins/x86_64/Microsoft.CognitiveServices.Speech.core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ActiveNick/Unity-Text-to-Speech/1865e9a86a3f37d7d7be4aa5ad59d5629998d1ca/Assets/SpeechSDK/Plugins/x86_64/Microsoft.CognitiveServices.Speech.core.dll -------------------------------------------------------------------------------- /Assets/SpeechSDK/Plugins/x86_64/Microsoft.CognitiveServices.Speech.core.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: db3ee4d9b9734f14a8c79c3e5dc56d20 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 0 11 | isExplicitlyReferenced: 0 12 | platformData: 13 | - first: 14 | '': Any 15 | second: 16 | enabled: 0 17 | settings: 18 | Exclude Android: 1 19 | Exclude Editor: 0 20 | Exclude Linux: 1 21 | Exclude Linux64: 1 22 | Exclude LinuxUniversal: 1 23 | Exclude OSXUniversal: 1 24 | Exclude Win: 1 25 | Exclude Win64: 0 26 | Exclude WindowsStoreApps: 1 27 | - first: 28 | Android: Android 29 | second: 30 | enabled: 0 31 | settings: 32 | CPU: ARMv7 33 | - first: 34 | Any: 35 | second: 36 | enabled: 0 37 | settings: {} 38 | - first: 39 | Editor: Editor 40 | second: 41 | enabled: 1 42 | settings: 43 | CPU: x86_64 44 | DefaultValueInitialized: true 45 | OS: Windows 46 | - first: 47 | Facebook: Win 48 | second: 49 | enabled: 0 50 | settings: 51 | CPU: None 52 | - first: 53 | Facebook: Win64 54 | second: 55 | enabled: 0 56 | settings: 57 | CPU: AnyCPU 58 | - first: 59 | Standalone: Linux 60 | second: 61 | enabled: 0 62 | settings: 63 | CPU: None 64 | - first: 65 | Standalone: Linux64 66 | second: 67 | enabled: 0 68 | settings: 69 | CPU: x86_64 70 | - first: 71 | Standalone: LinuxUniversal 72 | second: 73 | enabled: 0 74 | settings: 75 | CPU: x86_64 76 | - first: 77 | Standalone: OSXUniversal 78 | second: 79 | enabled: 0 80 | settings: 81 | CPU: x86_64 82 | - first: 83 | Standalone: Win 84 | second: 85 | enabled: 0 86 | settings: 87 | CPU: None 88 | - first: 89 | Standalone: Win64 90 | second: 91 | enabled: 1 92 | settings: 93 | CPU: AnyCPU 94 | - first: 95 | Windows Store Apps: WindowsStoreApps 96 | second: 97 | enabled: 0 98 | settings: 99 | CPU: AnyCPU 100 | DontProcess: false 101 | PlaceholderPath: 102 | SDK: AnySDK 103 | ScriptingBackend: AnyScriptingBackend 104 | userData: 105 | assetBundleName: 106 | assetBundleVariant: 107 | -------------------------------------------------------------------------------- /Assets/SpeechSDK/Plugins/x86_64/Microsoft.CognitiveServices.Speech.csharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ActiveNick/Unity-Text-to-Speech/1865e9a86a3f37d7d7be4aa5ad59d5629998d1ca/Assets/SpeechSDK/Plugins/x86_64/Microsoft.CognitiveServices.Speech.csharp.dll -------------------------------------------------------------------------------- /Assets/SpeechSDK/Plugins/x86_64/Microsoft.CognitiveServices.Speech.csharp.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 767dc253e9352e54e8425d1239a0bda0 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 0 11 | isExplicitlyReferenced: 0 12 | platformData: 13 | - first: 14 | '': Any 15 | second: 16 | enabled: 0 17 | settings: 18 | Exclude Android: 1 19 | Exclude Editor: 0 20 | Exclude Linux: 1 21 | Exclude Linux64: 1 22 | Exclude LinuxUniversal: 1 23 | Exclude OSXUniversal: 1 24 | Exclude Win: 0 25 | Exclude Win64: 0 26 | Exclude WindowsStoreApps: 0 27 | - first: 28 | Android: Android 29 | second: 30 | enabled: 0 31 | settings: 32 | CPU: ARMv7 33 | - first: 34 | Any: 35 | second: 36 | enabled: 0 37 | settings: {} 38 | - first: 39 | Editor: Editor 40 | second: 41 | enabled: 1 42 | settings: 43 | CPU: AnyCPU 44 | DefaultValueInitialized: true 45 | OS: Windows 46 | - first: 47 | Facebook: Win 48 | second: 49 | enabled: 0 50 | settings: 51 | CPU: AnyCPU 52 | - first: 53 | Facebook: Win64 54 | second: 55 | enabled: 0 56 | settings: 57 | CPU: AnyCPU 58 | - first: 59 | Standalone: Linux 60 | second: 61 | enabled: 0 62 | settings: 63 | CPU: None 64 | - first: 65 | Standalone: Linux64 66 | second: 67 | enabled: 0 68 | settings: 69 | CPU: None 70 | - first: 71 | Standalone: LinuxUniversal 72 | second: 73 | enabled: 0 74 | settings: 75 | CPU: x86 76 | - first: 77 | Standalone: OSXUniversal 78 | second: 79 | enabled: 0 80 | settings: 81 | CPU: x86_64 82 | - first: 83 | Standalone: Win 84 | second: 85 | enabled: 1 86 | settings: 87 | CPU: AnyCPU 88 | - first: 89 | Standalone: Win64 90 | second: 91 | enabled: 1 92 | settings: 93 | CPU: AnyCPU 94 | - first: 95 | Windows Store Apps: WindowsStoreApps 96 | second: 97 | enabled: 1 98 | settings: 99 | CPU: AnyCPU 100 | DontProcess: false 101 | PlaceholderPath: 102 | SDK: UWP 103 | ScriptingBackend: AnyScriptingBackend 104 | userData: 105 | assetBundleName: 106 | assetBundleVariant: 107 | -------------------------------------------------------------------------------- /Assets/SpeechSDK/Plugins/x86_64/Microsoft.CognitiveServices.Speech.csharp.unix.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ActiveNick/Unity-Text-to-Speech/1865e9a86a3f37d7d7be4aa5ad59d5629998d1ca/Assets/SpeechSDK/Plugins/x86_64/Microsoft.CognitiveServices.Speech.csharp.unix.dll -------------------------------------------------------------------------------- /Assets/SpeechSDK/Plugins/x86_64/Microsoft.CognitiveServices.Speech.csharp.unix.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4199ec4624f61d84981e1cdaa7a49811 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 0 11 | isExplicitlyReferenced: 0 12 | platformData: 13 | - first: 14 | '': Any 15 | second: 16 | enabled: 0 17 | settings: 18 | Exclude Android: 0 19 | Exclude Editor: 1 20 | Exclude Linux: 1 21 | Exclude Linux64: 1 22 | Exclude LinuxUniversal: 1 23 | Exclude OSXUniversal: 1 24 | Exclude Win: 1 25 | Exclude Win64: 1 26 | Exclude WindowsStoreApps: 1 27 | - first: 28 | Android: Android 29 | second: 30 | enabled: 1 31 | settings: 32 | CPU: AnyCPU 33 | - first: 34 | Any: 35 | second: 36 | enabled: 0 37 | settings: {} 38 | - first: 39 | Editor: Editor 40 | second: 41 | enabled: 0 42 | settings: 43 | CPU: AnyCPU 44 | DefaultValueInitialized: true 45 | OS: AnyOS 46 | - first: 47 | Facebook: Win 48 | second: 49 | enabled: 0 50 | settings: 51 | CPU: None 52 | - first: 53 | Facebook: Win64 54 | second: 55 | enabled: 0 56 | settings: 57 | CPU: AnyCPU 58 | - first: 59 | Standalone: Linux 60 | second: 61 | enabled: 0 62 | settings: 63 | CPU: None 64 | - first: 65 | Standalone: Linux64 66 | second: 67 | enabled: 0 68 | settings: 69 | CPU: x86_64 70 | - first: 71 | Standalone: LinuxUniversal 72 | second: 73 | enabled: 0 74 | settings: 75 | CPU: None 76 | - first: 77 | Standalone: OSXUniversal 78 | second: 79 | enabled: 0 80 | settings: 81 | CPU: x86_64 82 | - first: 83 | Standalone: Win 84 | second: 85 | enabled: 0 86 | settings: 87 | CPU: None 88 | - first: 89 | Standalone: Win64 90 | second: 91 | enabled: 0 92 | settings: 93 | CPU: AnyCPU 94 | - first: 95 | Windows Store Apps: WindowsStoreApps 96 | second: 97 | enabled: 0 98 | settings: 99 | CPU: AnyCPU 100 | DontProcess: false 101 | PlaceholderPath: 102 | SDK: AnySDK 103 | ScriptingBackend: AnyScriptingBackend 104 | userData: 105 | assetBundleName: 106 | assetBundleVariant: 107 | -------------------------------------------------------------------------------- /Assets/SpeechSDK/REDIST.txt: -------------------------------------------------------------------------------- 1 | The following libraries can be redistributed if you are using the Cognitive Services Speech SDK, 2 | subject to the license (https://aka.ms/csspeech/license201809). 3 | 4 | Microsoft.CognitiveServices.Speech.core.dll 5 | Microsoft.CognitiveServices.Speech.csharp.dll 6 | Microsoft.CognitiveServices.Speech.csharp.unix.dll 7 | Microsoft.CognitiveServices.Speech.extension.kws.dll 8 | MicrosoftCognitiveServicesSpeech.framework/MicrosoftCognitiveServicesSpeech 9 | client-sdk-.aar (or content derived from it) 10 | client-sdk-.jar 11 | libMicrosoft.CognitiveServices.Speech.core.dylib 12 | libMicrosoft.CognitiveServices.Speech.core.so 13 | libMicrosoft.CognitiveServices.Speech.extension.codec.so 14 | libMicrosoft.CognitiveServices.Speech.extension.kws.so 15 | libMicrosoft.CognitiveServices.Speech.java.bindings.jnilib 16 | azure_cognitiveservices_speech--*.whl, including _speech_py_impl.so and _speech_py_impl.pyd 17 | 18 | Depending on your usage, you only need to redistribute a subset of the above. 19 | -------------------------------------------------------------------------------- /Assets/SpeechSDK/REDIST.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8a32cb2e2d71d044ab7351dab9724871 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/SpeechSDK/ThirdPartyNotices.md: -------------------------------------------------------------------------------- 1 | # THIRD-PARTY SOFTWARE NOTICES AND INFORMATION 2 | 3 | Do Not Translate or Localize 4 | 5 | This project is based on or incorporates material from the projects listed below (Third Party IP). The original copyright notice and the license under which Microsoft received such Third Party IP, are set forth below. Such licenses and notices are provided for informational purposes only. Where permitted, Microsoft licenses the Third Party IP to you under the licensing terms for the Microsoft product. Microsoft reserves all other rights not expressly granted under this agreement, whether by implication, estoppel or otherwise. 6 | 7 | **a. azure-c-shared-utility - Azure C SDKs common code** 8 | 9 | The Cognitive Services Client Speech SDK is using Azure C SDK Common Code, obtained from https://github.com/Azure/azure-c-shared-utility. It is licensed under the The MIT License (MIT): 10 | 11 | Microsoft Azure IoT SDKs 12 | Copyright (c) Microsoft Corporation 13 | All rights reserved. 14 | MIT License 15 | Permission is hereby granted, free of charge, to any person obtaining a copy 16 | of this software and associated documentation files (the """"Software""""), to deal 17 | in the Software without restriction, including without limitation the rights 18 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 19 | copies of the Software, and to permit persons to whom the Software is 20 | furnished to do so, subject to the following conditions: 21 | 22 | The above copyright notice and this permission notice shall be included in 23 | all copies or substantial portions of the Software. 24 | 25 | THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 26 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 27 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 28 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 29 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 30 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 31 | THE SOFTWARE. 32 | 33 | **b. Catch2** 34 | 35 | The Cognitive Services Client Speech SDK is using 'Catch 2- A modern, C++-native, header-only, test framework for unit-tests, TDD and BDD - using C++11, C++14, C++17 and later', obtained from https://github.com/catchorg/Catch2. It is licensed under the [Boost Software License 1.0]https://github.com/catchorg/Catch2/blob/master/LICENSE.txt): 36 | 37 | Boost Software License - Version 1.0 - August 17th, 2003 38 | 39 | Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following: 40 | 41 | The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor. 42 | 43 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 44 | 45 | **c. Microsoft Computational Network Toolkit (CNTK)** 46 | 47 | The Cognitive Services Client Speech SDK is re-using source code originating in 'Microsoft Computational Network Toolkit (CNTK)', obtained from https://github.com/Microsoft/CNTK. 48 | 49 | Copyright (c) Microsoft Corporation 50 | 51 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ""Software""), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 52 | 53 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 54 | 55 | THE SOFTWARE IS PROVIDED ""AS IS"", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." 56 | 57 | **d. openssl** 58 | 59 | The Cognitive Services Client Speech SDK is using 'openssl - TLS/SSL and crypto library', obtained from https://github.com/openssl/openssl. It is licensed under the following [license](https://github.com/openssl/openssl/blob/master/LICENSE): 60 | 61 | LICENSE ISSUES 62 | ============== 63 | 64 | The OpenSSL toolkit stays under a double license, i.e. both the conditions of 65 | the OpenSSL License and the original SSLeay license apply to the toolkit. 66 | See below for the actual license texts. Actually both licenses are BSD-style 67 | Open Source licenses. In case of any license issues related to OpenSSL 68 | please contact openssl-core@openssl.org. 69 | 70 | OpenSSL License 71 | --------------- 72 | 73 | /* ==================================================================== 74 | * Copyright (c) 1998-2018 The OpenSSL Project. All rights reserved. 75 | * 76 | * Redistribution and use in source and binary forms, with or without 77 | * modification, are permitted provided that the following conditions 78 | * are met: 79 | * 80 | * 1. Redistributions of source code must retain the above copyright 81 | * notice, this list of conditions and the following disclaimer. 82 | * 83 | * 2. Redistributions in binary form must reproduce the above copyright 84 | * notice, this list of conditions and the following disclaimer in 85 | * the documentation and/or other materials provided with the 86 | * distribution. 87 | * 88 | * 3. All advertising materials mentioning features or use of this 89 | * software must display the following acknowledgment: 90 | * "This product includes software developed by the OpenSSL Project 91 | * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" 92 | * 93 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to 94 | * endorse or promote products derived from this software without 95 | * prior written permission. For written permission, please contact 96 | * openssl-core@openssl.org. 97 | * 98 | * 5. Products derived from this software may not be called "OpenSSL" 99 | * nor may "OpenSSL" appear in their names without prior written 100 | * permission of the OpenSSL Project. 101 | * 102 | * 6. Redistributions of any form whatsoever must retain the following 103 | * acknowledgment: 104 | * "This product includes software developed by the OpenSSL Project 105 | * for use in the OpenSSL Toolkit (http://www.openssl.org/)" 106 | * 107 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY 108 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 109 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 110 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR 111 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 112 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 113 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 114 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 115 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 116 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 117 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 118 | * OF THE POSSIBILITY OF SUCH DAMAGE. 119 | * ==================================================================== 120 | * 121 | * This product includes cryptographic software written by Eric Young 122 | * (eay@cryptsoft.com). This product includes software written by Tim 123 | * Hudson (tjh@cryptsoft.com). 124 | * 125 | */ 126 | 127 | Original SSLeay License 128 | ----------------------- 129 | 130 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 131 | * All rights reserved. 132 | * 133 | * This package is an SSL implementation written 134 | * by Eric Young (eay@cryptsoft.com). 135 | * The implementation was written so as to conform with Netscapes SSL. 136 | * 137 | * This library is free for commercial and non-commercial use as long as 138 | * the following conditions are aheared to. The following conditions 139 | * apply to all code found in this distribution, be it the RC4, RSA, 140 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation 141 | * included with this distribution is covered by the same copyright terms 142 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). 143 | * 144 | * Copyright remains Eric Young's, and as such any Copyright notices in 145 | * the code are not to be removed. 146 | * If this package is used in a product, Eric Young should be given attribution 147 | * as the author of the parts of the library used. 148 | * This can be in the form of a textual message at program startup or 149 | * in documentation (online or textual) provided with the package. 150 | * 151 | * Redistribution and use in source and binary forms, with or without 152 | * modification, are permitted provided that the following conditions 153 | * are met: 154 | * 1. Redistributions of source code must retain the copyright 155 | * notice, this list of conditions and the following disclaimer. 156 | * 2. Redistributions in binary form must reproduce the above copyright 157 | * notice, this list of conditions and the following disclaimer in the 158 | * documentation and/or other materials provided with the distribution. 159 | * 3. All advertising materials mentioning features or use of this software 160 | * must display the following acknowledgement: 161 | * "This product includes cryptographic software written by 162 | * Eric Young (eay@cryptsoft.com)" 163 | * The word 'cryptographic' can be left out if the rouines from the library 164 | * being used are not cryptographic related :-). 165 | * 4. If you include any Windows specific code (or a derivative thereof) from 166 | * the apps directory (application code) you must include an acknowledgement: 167 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 168 | * 169 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 170 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 171 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 172 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 173 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 174 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 175 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 176 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 177 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 178 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 179 | * SUCH DAMAGE. 180 | * 181 | * The licence and distribution terms for any publically available version or 182 | * derivative of this code cannot be changed. i.e. this code cannot simply be 183 | * copied and put under another distribution licence 184 | * [including the GNU Public Licence.] 185 | */ 186 | 187 | In addition, some versions of the 'openssl - TLS/SSL and crypto library' in the Microsoft Cognitive Services SDK have the following notice: 188 | 189 | LICENSE ISSUES 190 | ============== 191 | 192 | The OpenSSL toolkit stays under a double license, i.e. both the conditions of 193 | the OpenSSL License and the original SSLeay license apply to the toolkit. 194 | See below for the actual license texts. 195 | 196 | OpenSSL License 197 | --------------- 198 | 199 | /* ==================================================================== 200 | * Copyright (c) 1998-2019 The OpenSSL Project. All rights reserved. 201 | * 202 | * Redistribution and use in source and binary forms, with or without 203 | * modification, are permitted provided that the following conditions 204 | * are met: 205 | * 206 | * 1. Redistributions of source code must retain the above copyright 207 | * notice, this list of conditions and the following disclaimer. 208 | * 209 | * 2. Redistributions in binary form must reproduce the above copyright 210 | * notice, this list of conditions and the following disclaimer in 211 | * the documentation and/or other materials provided with the 212 | * distribution. 213 | * 214 | * 3. All advertising materials mentioning features or use of this 215 | * software must display the following acknowledgment: 216 | * "This product includes software developed by the OpenSSL Project 217 | * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" 218 | * 219 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to 220 | * endorse or promote products derived from this software without 221 | * prior written permission. For written permission, please contact 222 | * openssl-core@openssl.org. 223 | * 224 | * 5. Products derived from this software may not be called "OpenSSL" 225 | * nor may "OpenSSL" appear in their names without prior written 226 | * permission of the OpenSSL Project. 227 | * 228 | * 6. Redistributions of any form whatsoever must retain the following 229 | * acknowledgment: 230 | * "This product includes software developed by the OpenSSL Project 231 | * for use in the OpenSSL Toolkit (http://www.openssl.org/)" 232 | * 233 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY 234 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 235 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 236 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR 237 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 238 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 239 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 240 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 241 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 242 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 243 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 244 | * OF THE POSSIBILITY OF SUCH DAMAGE. 245 | * ==================================================================== 246 | * 247 | * This product includes cryptographic software written by Eric Young 248 | * (eay@cryptsoft.com). This product includes software written by Tim 249 | * Hudson (tjh@cryptsoft.com). 250 | * 251 | */ 252 | 253 | Original SSLeay License 254 | ----------------------- 255 | 256 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 257 | * All rights reserved. 258 | * 259 | * This package is an SSL implementation written 260 | * by Eric Young (eay@cryptsoft.com). 261 | * The implementation was written so as to conform with Netscapes SSL. 262 | * 263 | * This library is free for commercial and non-commercial use as long as 264 | * the following conditions are aheared to. The following conditions 265 | * apply to all code found in this distribution, be it the RC4, RSA, 266 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation 267 | * included with this distribution is covered by the same copyright terms 268 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). 269 | * 270 | * Copyright remains Eric Young's, and as such any Copyright notices in 271 | * the code are not to be removed. 272 | * If this package is used in a product, Eric Young should be given attribution 273 | * as the author of the parts of the library used. 274 | * This can be in the form of a textual message at program startup or 275 | * in documentation (online or textual) provided with the package. 276 | * 277 | * Redistribution and use in source and binary forms, with or without 278 | * modification, are permitted provided that the following conditions 279 | * are met: 280 | * 1. Redistributions of source code must retain the copyright 281 | * notice, this list of conditions and the following disclaimer. 282 | * 2. Redistributions in binary form must reproduce the above copyright 283 | * notice, this list of conditions and the following disclaimer in the 284 | * documentation and/or other materials provided with the distribution. 285 | * 3. All advertising materials mentioning features or use of this software 286 | * must display the following acknowledgement: 287 | * "This product includes cryptographic software written by 288 | * Eric Young (eay@cryptsoft.com)" 289 | * The word 'cryptographic' can be left out if the rouines from the library 290 | * being used are not cryptographic related :-). 291 | * 4. If you include any Windows specific code (or a derivative thereof) from 292 | * the apps directory (application code) you must include an acknowledgement: 293 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 294 | * 295 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 296 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 297 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 298 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 299 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 300 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 301 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 302 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 303 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 304 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 305 | * SUCH DAMAGE. 306 | * 307 | * The licence and distribution terms for any publically available version or 308 | * derivative of this code cannot be changed. i.e. this code cannot simply be 309 | * copied and put under another distribution licence 310 | * [including the GNU Public Licence.] 311 | */ 312 | 313 | **e. json** 314 | 315 | The Cognitive Services Client Speech SDK is using 'json - JSON for Modern C++', obtained from https://github.com/nlohmann/json. It is licensed under the [MIT License](https://github.com/nlohmann/json/blob/develop/LICENSE.MIT): 316 | 317 | MIT License 318 | 319 | Copyright (c) 2013-2018 Niels Lohmann 320 | 321 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 322 | 323 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 324 | 325 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 326 | 327 | *range-v3 license* 328 | 329 | Boost Software License - Version 1.0 - August 17th, 2003 330 | 331 | Copyright Eric Niebler 2013-2014 332 | 333 | Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the ""Software"") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following: 334 | 335 | The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor. 336 | 337 | THE SOFTWARE IS PROVIDED ""AS IS"", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." 338 | 339 | *Sample code from IETF RFC 7049* 340 | 341 | Copyright (c) 2013 IETF Trust and the persons identified as authors of the code. All rights reserved. 342 | 343 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 344 | 345 | Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 346 | 347 | Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 348 | 349 | Neither the name of Internet Society, IETF or IETF Trust, nor the names of specific contributors, may be used to endorse or promote products derived from this software without specific prior written permission. 350 | 351 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." 352 | 353 | **f. Android Open Source Project** 354 | 355 | The Cognitive Services Client Speech SDK is using sample code from the 'Android Open Source Project', obtained from https://github.com/googlesamples/android-ndk/. It is licensed under the following [license](https://github.com/googlesamples/android-ndk/blob/master/LICENSE): 356 | 357 | Copyright (C) 2015 The Android Open Source Project 358 | 359 | Licensed under the Apache License, Version 2.0 (the "License"); 360 | you may not use this file except in compliance with the License. 361 | You may obtain a copy of the License at 362 | 363 | http://www.apache.org/licenses/LICENSE-2.0 364 | 365 | Unless required by applicable law or agreed to in writing, software 366 | distributed under the License is distributed on an "AS IS" BASIS, 367 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 368 | See the License for the specific language governing permissions and 369 | limitations under the License. 370 | -------------------------------------------------------------------------------- /Assets/SpeechSDK/ThirdPartyNotices.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ff2744dc35aae75438b8213fa15794e3 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/SpeechSDK/license.md: -------------------------------------------------------------------------------- 1 | # MICROSOFT SOFTWARE LICENSE TERMS 2 | 3 | MICROSOFT COGNITIVE SERVICES SPEECH SDK 4 | 5 | **IF YOU LIVE IN (OR ARE A BUSINESS WITH YOUR PRINCIPAL PLACE OF BUSINESS IN) THE UNITED STATES, PLEASE READ THE “BINDING ARBITRATION AND CLASS ACTION WAIVER” SECTION BELOW. IT AFFECTS HOW DISPUTES ARE RESOLVED.** 6 | 7 | These license terms are an agreement between you and Microsoft Corporation (or one of its affiliates). They apply to the software named above and any Microsoft services or software updates (except to the extent such services or updates are accompanied by new or additional terms, in which case those different terms apply prospectively and do not alter your or Microsoft’s rights relating to pre-updated software or services). IF YOU COMPLY WITH THESE LICENSE TERMS, YOU HAVE THE RIGHTS BELOW. BY USING THE SOFTWARE, YOU ACCEPT THESE TERMS. 8 | 9 | ## 1. INSTALLATION AND USE RIGHTS. 10 | 11 | a) **General.** You may install and use any number of copies of the software to develop and test your applications integration of API(s) used to access Cognitive Services Speech Services. 12 | 13 | b) **Third Party Software.** The software may include third party applications that are licensed to you under this agreement or under their own terms. License terms, notices, and acknowledgments, if any, for the third party applications may be accessible online at http://aka.ms/thirdpartynotices or in an accompanying notices file. Even if such applications are governed by other agreements, the disclaimer, limitations on, and exclusions of damages below also apply to the extent allowed by applicable law. 14 | 15 | c) **Competitive Benchmarking.** If you are a direct competitor, and you access or use the software for purposes of competitive benchmarking, analysis, or intelligence gathering, you waive as against Microsoft, its subsidiaries, and its affiliated companies (including prospectively) any competitive use, access, and benchmarking test restrictions in the terms governing your software to the extent your terms of use are, or purport to be, more restrictive than Microsoft’s terms. If you do not waive any such purported restrictions in the terms governing your software, you are not allowed to access or use this software, and will not do so. 16 | 17 | ## 2. DISTRIBUTABLE CODE. 18 | 19 | The software may contain code you are permitted to distribute (i.e. make available for third parties) in applications you develop, as described in this Section. 20 | 21 | **a) Distribution Rights.** The code and test files described below are distributable if included with the software. 22 | 23 | i. REDIST.TXT Files. You may copy and distribute the object code form of code listed on the REDIST list in the software, if any; and 24 | 25 | ii. Third Party Distribution. You may permit distributors of your applications to copy and distribute any of this distributable code you elect to distribute with your applications. 26 | 27 | **b) Distribution Requirements.** For any code you distribute, you must: 28 | 29 | i. add significant primary functionality to it in your applications; 30 | 31 | ii. require distributors and external end users to agree to terms that protect it and Microsoft at least as much as this agreement; and 32 | 33 | iii. indemnify, defend, and hold harmless Microsoft from any claims, including attorneys’ fees, related to the distribution or use of your applications, except to the extent that any claim is based solely on the unmodified distributable code. 34 | 35 | **c) Distribution Restrictions.** You may not: 36 | 37 | i. use Microsoft’s trademarks or trade dress in your application in any way that suggests your application comes from or is endorsed by Microsoft; or 38 | 39 | ii. modify or distribute the source code of any distributable code so that any part of it becomes subject to any license that requires that the distributable code, any other part of the software, or any of Microsoft’s other intellectual property be disclosed or distributed in source code form, or that others have the right to modify it. 40 | 41 | ## 3. DATA COLLECTION. 42 | 43 | The software may collect information about you and your use of the software and send that to Microsoft. Microsoft may use this information to provide services and improve Microsoft’s products and services. Your opt-out rights, if any, are described in the product documentation. Some features in the software may enable collection of data from users of your applications that access or use the software. If you use these features to enable data collection in your applications, you must comply with applicable law, including getting any required user consent, and maintain a prominent privacy policy that accurately informs users about how you use, collect, and share their data. You can learn more about Microsoft’s data collection and use in the product documentation and the Microsoft Privacy Statement at https://go.microsoft.com/fwlink/?LinkId=512132. You agree to comply with all applicable provisions of the Microsoft Privacy Statement. 44 | 45 | ## 4. SCOPE OF LICENSE. 46 | 47 | The software is licensed, not sold. Microsoft reserves all other rights. Unless applicable law gives you more rights despite this limitation, you will not (and have no right to): 48 | 49 | a) work around any technical limitations in the software that only allow you to use it in certain ways; 50 | 51 | b) reverse engineer, decompile, or disassemble the software, or attempt to do so, except and only to the extent permitted by licensing terms governing the use of open-source components that may be included with the software; 52 | 53 | c) remove, minimize, block, or modify any notices of Microsoft or its suppliers in the software; 54 | 55 | d) use the software in any way that is against the law or to create or propagate malware; or 56 | 57 | e) share, publish, distribute, or lend the software (except for any distributable code, subject to the terms above), provide the software as a stand-alone hosted solution for others to use, or transfer the software or this agreement to any third party. 58 | 59 | 60 | ## 5. EXPORT RESTRICTIONS. 61 | 62 | You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information on export restrictions, visit http://aka.ms/exporting. 63 | 64 | ## 6. SUPPORT SERVICES. 65 | 66 | Microsoft is not obligated under this agreement to provide any support services for the software. Any support provided is “as is”, “with all faults”, and without warranty of any kind. 67 | 68 | ## 7. UPDATES. 69 | 70 | The software may periodically check for updates, and download and install them for you. You may obtain updates only from Microsoft or authorized sources. Microsoft may need to update your system to provide you with updates. You agree to receive these automatic updates without any additional notice. Updates may not include or support all existing software features, services, or peripheral devices. 71 | 72 | ## 8. BINDING ARBITRATION AND CLASS ACTION WAIVER. 73 | 74 | **This Section applies if you live in (or, if a business, your principal place of business is in) the United States.** If you and Microsoft have a dispute, you and Microsoft agree to try for 60 days to resolve it informally. If you and Microsoft can’t, you and Microsoft agree to **binding individual arbitration before the American Arbitration Association** under the Federal Arbitration Act (“FAA”), and **not to sue in court in front of a judge or jury.** Instead, a neutral arbitrator will decide. **Class action lawsuits, class-wide arbitrations, private attorney-general actions,** and any other proceeding where someone acts in a representative capacity **are not allowed;** nor is combining individual proceedings without the consent of all parties. The complete Arbitration Agreement contains more terms and is at http://aka.ms/arb-agreement-1. You and Microsoft agree to these terms. 75 | 76 | ## 9. TERMINATION. 77 | 78 | Without prejudice to any other rights, Microsoft may terminate this agreement if you fail to comply with any of its terms or conditions. In such event, you must destroy all copies of the software and all of its component parts. 79 | 80 | ## 10. ENTIRE AGREEMENT. 81 | 82 | This agreement, and any other terms Microsoft may provide for supplements, updates, or third-party applications, is the entire agreement for the software. 83 | 84 | ## 11. APPLICABLE LAW AND PLACE TO RESOLVE DISPUTES. 85 | 86 | If you acquired the software in the United States or Canada, the laws of the state or province where you live (or, if a business, where your principal place of business is located) govern the interpretation of this agreement, claims for its breach, and all other claims (including consumer protection, unfair competition, and tort claims), regardless of conflict of laws principles, except that the FAA governs everything related to arbitration. If you acquired the software in any other country, its laws apply, except that the FAA governs everything related to arbitration. If U.S. federal jurisdiction exists, you and Microsoft consent to exclusive jurisdiction and venue in the federal court in King County, Washington for all disputes heard in court (excluding arbitration). If not, you and Microsoft consent to exclusive jurisdiction and venue in the Superior Court of King County, Washington for all disputes heard in court (excluding arbitration). 87 | 88 | ## 12. CONSUMER RIGHTS; REGIONAL VARIATIONS. 89 | 90 | This agreement describes certain legal rights. You may have other rights, including consumer rights, under the laws of your state or country. Separate and apart from your relationship with Microsoft, you may also have rights with respect to the party from which you acquired the software. This agreement does not change those other rights if the laws of your state or country do not permit it to do so. For example, if you acquired the software in one of the below regions, or mandatory country law applies, then the following provisions apply to you: 91 | 92 | a) **Australia.** You have statutory guarantees under the Australian Consumer Law and nothing in this agreement is intended to affect those rights. 93 | 94 | b) **Canada.** If you acquired this software in Canada, you may stop receiving updates by turning off the automatic update feature, disconnecting your device from the Internet (if and when you re-connect to the Internet, however, the software will resume checking for and installing updates), or uninstalling the software. The product documentation, if any, may also specify how to turn off updates for your specific device or software. 95 | 96 | c) **Germany and Austria.** 97 | 98 | **i. Warranty.** The properly licensed software will perform substantially as described in any Microsoft materials that accompany the software. However, Microsoft gives no contractual guarantee in relation to the licensed software. 99 | 100 | **ii. Limitation of Liability.** In case of intentional conduct, gross negligence, claims based on the Product Liability Act, as well as, in case of death or personal or physical injury, Microsoft is liable according to the statutory law. 101 | 102 | Subject to the foregoing clause ii., Microsoft will only be liable for slight negligence if Microsoft is in breach of such material contractual obligations, the fulfillment of which facilitate the due performance of this agreement, the breach of which would endanger the purpose of this agreement and the compliance with which a party may constantly trust in (so-called "cardinal obligations"). In other cases of slight negligence, Microsoft will not be liable for slight negligence. 103 | 104 | ## 13. DISCLAIMER OF WARRANTY. 105 | 106 | THE SOFTWARE IS LICENSED “AS IS.” YOU BEAR THE RISK OF USING IT. MICROSOFT GIVES NO EXPRESS WARRANTIES, GUARANTEES, OR CONDITIONS. TO THE EXTENT PERMITTED UNDER APPLICABLE LAWS, MICROSOFT EXCLUDES ALL IMPLIED WARRANTIES, INCLUDING MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. 107 | 108 | ## 14. LIMITATION ON AND EXCLUSION OF DAMAGES. 109 | 110 | IF YOU HAVE ANY BASIS FOR RECOVERING DAMAGES DESPITE THE PRECEDING DISCLAIMER OF WARRANTY, YOU CAN RECOVER FROM MICROSOFT AND ITS SUPPLIERS ONLY DIRECT DAMAGES UP TO U.S. $5.00. YOU CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS, SPECIAL, INDIRECT, OR INCIDENTAL DAMAGES. 111 | This limitation applies to (a) anything related to the software, services, content (including code) on third party Internet sites, or third party applications; and (b) claims for breach of contract, warranty, guarantee, or condition; strict liability, negligence, or other tort; or any other claim; in each case to the extent permitted by applicable law. 112 | 113 | It also applies even if Microsoft knew or should have known about the possibility of the damages. The above limitation or exclusion may not apply to you because your state, province, or country may not allow the exclusion or limitation of incidental, consequential, or other damages. 114 | 115 | Please note: As this software is distributed in Canada, some of the clauses in this agreement are provided below in French. 116 | 117 | Remarque: Ce logiciel étant distribué au Canada, certaines des clauses dans ce contrat sont fournies ci-dessous en français. 118 | 119 | EXONÉRATION DE GARANTIE. Le logiciel visé par une licence est offert « tel quel ». Toute utilisation de ce logiciel est à votre seule risque et péril. Microsoft n’accorde aucune autre garantie expresse. Vous pouvez bénéficier de droits additionnels en vertu du droit local sur la protection des consommateurs, que ce contrat ne peut modifier. La ou elles sont permises par le droit locale, les garanties implicites de qualité marchande, d’adéquation à un usage particulier et d’absence de contrefaçon sont exclues. 120 | 121 | LIMITATION DES DOMMAGES-INTÉRÊTS ET EXCLUSION DE RESPONSABILITÉ POUR LES DOMMAGES. Vous pouvez obtenir de Microsoft et de ses fournisseurs une indemnisation en cas de dommages directs uniquement à hauteur de 5,00 $ US. Vous ne pouvez prétendre à aucune indemnisation pour les autres dommages, y compris les dommages spéciaux, indirects ou accessoires et pertes de bénéfices. 122 | 123 | Cette limitation concerne: 124 | 125 | • tout ce qui est relié au logiciel, aux services ou au contenu (y compris le code) figurant sur des sites Internet tiers ou dans des programmes tiers; et 126 | 127 | • les réclamations au titre de violation de contrat ou de garantie, ou au titre de responsabilité stricte, de négligence ou d’une autre faute dans la limite autorisée par la loi en vigueur. 128 | 129 | Elle s’applique également, même si Microsoft connaissait ou devrait connaître l’éventualité d’un tel dommage. Si votre pays n’autorise pas l’exclusion ou la limitation de responsabilité pour les dommages indirects, accessoires ou de quelque nature que ce soit, il se peut que la limitation ou l’exclusion ci-dessus ne s’appliquera pas à votre égard. 130 | 131 | EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous pourriez avoir d’autres droits prévus par les lois de votre pays. Le présent contrat ne modifie pas les droits que vous confèrent les lois de votre pays si celles-ci ne le permettent pas. 132 | -------------------------------------------------------------------------------- /Assets/SpeechSDK/license.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a0690530305ea7649b930f595eb056b2 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/WSATestCertificate.pfx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ActiveNick/Unity-Text-to-Speech/1865e9a86a3f37d7d7be4aa5ad59d5629998d1ca/Assets/WSATestCertificate.pfx -------------------------------------------------------------------------------- /Assets/WSATestCertificate.pfx.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5b5952642218d8d4381699fe83d537e7 3 | timeCreated: 1527209490 4 | licenseType: Pro 5 | DefaultImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/csc.rsp: -------------------------------------------------------------------------------- 1 | -r:System.Net.Http.dll -------------------------------------------------------------------------------- /Assets/csc.rsp.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 75864b3aa2128374f87ccb099fb577e1 3 | timeCreated: 1527036512 4 | licenseType: Pro 5 | DefaultImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Nick Landry 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!11 &1 4 | AudioManager: 5 | m_ObjectHideFlags: 0 6 | m_Volume: 1 7 | Rolloff Scale: 1 8 | Doppler Factor: 1 9 | Default Speaker Mode: 2 10 | m_SampleRate: 0 11 | m_DSPBufferSize: 0 12 | m_VirtualVoiceCount: 512 13 | m_RealVoiceCount: 32 14 | m_SpatializerPlugin: 15 | m_AmbisonicDecoderPlugin: 16 | m_DisableAudio: 0 17 | m_VirtualizeEffects: 1 18 | -------------------------------------------------------------------------------- /ProjectSettings/ClusterInputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!236 &1 4 | ClusterInputManager: 5 | m_ObjectHideFlags: 0 6 | m_Inputs: [] 7 | -------------------------------------------------------------------------------- /ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!55 &1 4 | PhysicsManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 7 7 | m_Gravity: {x: 0, y: -9.81, z: 0} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_BounceThreshold: 2 10 | m_SleepThreshold: 0.005 11 | m_DefaultContactOffset: 0.01 12 | m_DefaultSolverIterations: 6 13 | m_DefaultSolverVelocityIterations: 1 14 | m_QueriesHitBackfaces: 0 15 | m_QueriesHitTriggers: 1 16 | m_EnableAdaptiveForce: 0 17 | m_ClothInterCollisionDistance: 0 18 | m_ClothInterCollisionStiffness: 0 19 | m_ContactsGeneration: 1 20 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 21 | m_AutoSimulation: 1 22 | m_AutoSyncTransforms: 1 23 | m_ClothInterCollisionSettingsToggle: 0 24 | m_ContactPairsMode: 0 25 | m_BroadphaseType: 0 26 | m_WorldBounds: 27 | m_Center: {x: 0, y: 0, z: 0} 28 | m_Extent: {x: 250, y: 250, z: 250} 29 | m_WorldSubdivisions: 8 30 | -------------------------------------------------------------------------------- /ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1045 &1 4 | EditorBuildSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Scenes: 8 | - enabled: 1 9 | path: Assets/Scenes/DemoTTS.unity 10 | guid: 80e204d34d0aae9438bf119442bb1cb9 11 | -------------------------------------------------------------------------------- /ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!159 &1 4 | EditorSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 7 7 | m_ExternalVersionControlSupport: Hidden Meta Files 8 | m_SerializationMode: 2 9 | m_LineEndingsForNewScripts: 2 10 | m_DefaultBehaviorMode: 0 11 | m_SpritePackerMode: 0 12 | m_SpritePackerPaddingPower: 1 13 | m_EtcTextureCompressorBehavior: 1 14 | m_EtcTextureFastCompressor: 1 15 | m_EtcTextureNormalCompressor: 2 16 | m_EtcTextureBestCompressor: 4 17 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp 18 | m_ProjectGenerationRootNamespace: 19 | m_UserGeneratedProjectSuffix: 20 | m_CollabEditorSettings: 21 | inProgressEnabled: 1 22 | -------------------------------------------------------------------------------- /ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!30 &1 4 | GraphicsSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 12 7 | m_Deferred: 8 | m_Mode: 1 9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} 10 | m_DeferredReflections: 11 | m_Mode: 1 12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} 13 | m_ScreenSpaceShadows: 14 | m_Mode: 1 15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} 16 | m_LegacyDeferred: 17 | m_Mode: 1 18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} 19 | m_DepthNormals: 20 | m_Mode: 1 21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} 22 | m_MotionVectors: 23 | m_Mode: 1 24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} 25 | m_LightHalo: 26 | m_Mode: 1 27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} 28 | m_LensFlare: 29 | m_Mode: 1 30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} 31 | m_AlwaysIncludedShaders: 32 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} 33 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} 34 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} 35 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} 36 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} 37 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} 38 | - {fileID: 17000, guid: 0000000000000000f000000000000000, type: 0} 39 | - {fileID: 16000, guid: 0000000000000000f000000000000000, type: 0} 40 | m_PreloadedShaders: [] 41 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, 42 | type: 0} 43 | m_CustomRenderPipeline: {fileID: 0} 44 | m_TransparencySortMode: 0 45 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 46 | m_DefaultRenderingPath: 1 47 | m_DefaultMobileRenderingPath: 1 48 | m_TierSettings: [] 49 | m_LightmapStripping: 0 50 | m_FogStripping: 0 51 | m_InstancingStripping: 0 52 | m_LightmapKeepPlain: 1 53 | m_LightmapKeepDirCombined: 1 54 | m_LightmapKeepDynamicPlain: 1 55 | m_LightmapKeepDynamicDirCombined: 1 56 | m_LightmapKeepShadowMask: 1 57 | m_LightmapKeepSubtractive: 1 58 | m_FogKeepLinear: 1 59 | m_FogKeepExp: 1 60 | m_FogKeepExp2: 1 61 | m_AlbedoSwatchInfos: [] 62 | m_LightsUseLinearIntensity: 0 63 | m_LightsUseColorTemperature: 0 64 | -------------------------------------------------------------------------------- /ProjectSettings/InputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!13 &1 4 | InputManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Axes: 8 | - serializedVersion: 3 9 | m_Name: Horizontal 10 | descriptiveName: 11 | descriptiveNegativeName: 12 | negativeButton: left 13 | positiveButton: right 14 | altNegativeButton: a 15 | altPositiveButton: d 16 | gravity: 3 17 | dead: 0.001 18 | sensitivity: 3 19 | snap: 1 20 | invert: 0 21 | type: 0 22 | axis: 0 23 | joyNum: 0 24 | - serializedVersion: 3 25 | m_Name: Vertical 26 | descriptiveName: 27 | descriptiveNegativeName: 28 | negativeButton: down 29 | positiveButton: up 30 | altNegativeButton: s 31 | altPositiveButton: w 32 | gravity: 3 33 | dead: 0.001 34 | sensitivity: 3 35 | snap: 1 36 | invert: 0 37 | type: 0 38 | axis: 0 39 | joyNum: 0 40 | - serializedVersion: 3 41 | m_Name: Fire1 42 | descriptiveName: 43 | descriptiveNegativeName: 44 | negativeButton: 45 | positiveButton: left ctrl 46 | altNegativeButton: 47 | altPositiveButton: mouse 0 48 | gravity: 1000 49 | dead: 0.001 50 | sensitivity: 1000 51 | snap: 0 52 | invert: 0 53 | type: 0 54 | axis: 0 55 | joyNum: 0 56 | - serializedVersion: 3 57 | m_Name: Fire2 58 | descriptiveName: 59 | descriptiveNegativeName: 60 | negativeButton: 61 | positiveButton: left alt 62 | altNegativeButton: 63 | altPositiveButton: mouse 1 64 | gravity: 1000 65 | dead: 0.001 66 | sensitivity: 1000 67 | snap: 0 68 | invert: 0 69 | type: 0 70 | axis: 0 71 | joyNum: 0 72 | - serializedVersion: 3 73 | m_Name: Fire3 74 | descriptiveName: 75 | descriptiveNegativeName: 76 | negativeButton: 77 | positiveButton: left shift 78 | altNegativeButton: 79 | altPositiveButton: mouse 2 80 | gravity: 1000 81 | dead: 0.001 82 | sensitivity: 1000 83 | snap: 0 84 | invert: 0 85 | type: 0 86 | axis: 0 87 | joyNum: 0 88 | - serializedVersion: 3 89 | m_Name: Jump 90 | descriptiveName: 91 | descriptiveNegativeName: 92 | negativeButton: 93 | positiveButton: space 94 | altNegativeButton: 95 | altPositiveButton: 96 | gravity: 1000 97 | dead: 0.001 98 | sensitivity: 1000 99 | snap: 0 100 | invert: 0 101 | type: 0 102 | axis: 0 103 | joyNum: 0 104 | - serializedVersion: 3 105 | m_Name: Mouse X 106 | descriptiveName: 107 | descriptiveNegativeName: 108 | negativeButton: 109 | positiveButton: 110 | altNegativeButton: 111 | altPositiveButton: 112 | gravity: 0 113 | dead: 0 114 | sensitivity: 0.1 115 | snap: 0 116 | invert: 0 117 | type: 1 118 | axis: 0 119 | joyNum: 0 120 | - serializedVersion: 3 121 | m_Name: Mouse Y 122 | descriptiveName: 123 | descriptiveNegativeName: 124 | negativeButton: 125 | positiveButton: 126 | altNegativeButton: 127 | altPositiveButton: 128 | gravity: 0 129 | dead: 0 130 | sensitivity: 0.1 131 | snap: 0 132 | invert: 0 133 | type: 1 134 | axis: 1 135 | joyNum: 0 136 | - serializedVersion: 3 137 | m_Name: Mouse ScrollWheel 138 | descriptiveName: 139 | descriptiveNegativeName: 140 | negativeButton: 141 | positiveButton: 142 | altNegativeButton: 143 | altPositiveButton: 144 | gravity: 0 145 | dead: 0 146 | sensitivity: 0.1 147 | snap: 0 148 | invert: 0 149 | type: 1 150 | axis: 2 151 | joyNum: 0 152 | - serializedVersion: 3 153 | m_Name: Horizontal 154 | descriptiveName: 155 | descriptiveNegativeName: 156 | negativeButton: 157 | positiveButton: 158 | altNegativeButton: 159 | altPositiveButton: 160 | gravity: 0 161 | dead: 0.19 162 | sensitivity: 1 163 | snap: 0 164 | invert: 0 165 | type: 2 166 | axis: 0 167 | joyNum: 0 168 | - serializedVersion: 3 169 | m_Name: Vertical 170 | descriptiveName: 171 | descriptiveNegativeName: 172 | negativeButton: 173 | positiveButton: 174 | altNegativeButton: 175 | altPositiveButton: 176 | gravity: 0 177 | dead: 0.19 178 | sensitivity: 1 179 | snap: 0 180 | invert: 1 181 | type: 2 182 | axis: 1 183 | joyNum: 0 184 | - serializedVersion: 3 185 | m_Name: Fire1 186 | descriptiveName: 187 | descriptiveNegativeName: 188 | negativeButton: 189 | positiveButton: joystick button 0 190 | altNegativeButton: 191 | altPositiveButton: 192 | gravity: 1000 193 | dead: 0.001 194 | sensitivity: 1000 195 | snap: 0 196 | invert: 0 197 | type: 0 198 | axis: 0 199 | joyNum: 0 200 | - serializedVersion: 3 201 | m_Name: Fire2 202 | descriptiveName: 203 | descriptiveNegativeName: 204 | negativeButton: 205 | positiveButton: joystick button 1 206 | altNegativeButton: 207 | altPositiveButton: 208 | gravity: 1000 209 | dead: 0.001 210 | sensitivity: 1000 211 | snap: 0 212 | invert: 0 213 | type: 0 214 | axis: 0 215 | joyNum: 0 216 | - serializedVersion: 3 217 | m_Name: Fire3 218 | descriptiveName: 219 | descriptiveNegativeName: 220 | negativeButton: 221 | positiveButton: joystick button 2 222 | altNegativeButton: 223 | altPositiveButton: 224 | gravity: 1000 225 | dead: 0.001 226 | sensitivity: 1000 227 | snap: 0 228 | invert: 0 229 | type: 0 230 | axis: 0 231 | joyNum: 0 232 | - serializedVersion: 3 233 | m_Name: Jump 234 | descriptiveName: 235 | descriptiveNegativeName: 236 | negativeButton: 237 | positiveButton: joystick button 3 238 | altNegativeButton: 239 | altPositiveButton: 240 | gravity: 1000 241 | dead: 0.001 242 | sensitivity: 1000 243 | snap: 0 244 | invert: 0 245 | type: 0 246 | axis: 0 247 | joyNum: 0 248 | - serializedVersion: 3 249 | m_Name: Submit 250 | descriptiveName: 251 | descriptiveNegativeName: 252 | negativeButton: 253 | positiveButton: return 254 | altNegativeButton: 255 | altPositiveButton: joystick button 0 256 | gravity: 1000 257 | dead: 0.001 258 | sensitivity: 1000 259 | snap: 0 260 | invert: 0 261 | type: 0 262 | axis: 0 263 | joyNum: 0 264 | - serializedVersion: 3 265 | m_Name: Submit 266 | descriptiveName: 267 | descriptiveNegativeName: 268 | negativeButton: 269 | positiveButton: enter 270 | altNegativeButton: 271 | altPositiveButton: space 272 | gravity: 1000 273 | dead: 0.001 274 | sensitivity: 1000 275 | snap: 0 276 | invert: 0 277 | type: 0 278 | axis: 0 279 | joyNum: 0 280 | - serializedVersion: 3 281 | m_Name: Cancel 282 | descriptiveName: 283 | descriptiveNegativeName: 284 | negativeButton: 285 | positiveButton: escape 286 | altNegativeButton: 287 | altPositiveButton: joystick button 1 288 | gravity: 1000 289 | dead: 0.001 290 | sensitivity: 1000 291 | snap: 0 292 | invert: 0 293 | type: 0 294 | axis: 0 295 | joyNum: 0 296 | -------------------------------------------------------------------------------- /ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!126 &1 4 | NavMeshProjectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | areas: 8 | - name: Walkable 9 | cost: 1 10 | - name: Not Walkable 11 | cost: 1 12 | - name: Jump 13 | cost: 2 14 | - name: 15 | cost: 1 16 | - name: 17 | cost: 1 18 | - name: 19 | cost: 1 20 | - name: 21 | cost: 1 22 | - name: 23 | cost: 1 24 | - name: 25 | cost: 1 26 | - name: 27 | cost: 1 28 | - name: 29 | cost: 1 30 | - name: 31 | cost: 1 32 | - name: 33 | cost: 1 34 | - name: 35 | cost: 1 36 | - name: 37 | cost: 1 38 | - name: 39 | cost: 1 40 | - name: 41 | cost: 1 42 | - name: 43 | cost: 1 44 | - name: 45 | cost: 1 46 | - name: 47 | cost: 1 48 | - name: 49 | cost: 1 50 | - name: 51 | cost: 1 52 | - name: 53 | cost: 1 54 | - name: 55 | cost: 1 56 | - name: 57 | cost: 1 58 | - name: 59 | cost: 1 60 | - name: 61 | cost: 1 62 | - name: 63 | cost: 1 64 | - name: 65 | cost: 1 66 | - name: 67 | cost: 1 68 | - name: 69 | cost: 1 70 | - name: 71 | cost: 1 72 | m_LastAgentTypeID: -887442657 73 | m_Settings: 74 | - serializedVersion: 2 75 | agentTypeID: 0 76 | agentRadius: 0.5 77 | agentHeight: 2 78 | agentSlope: 45 79 | agentClimb: 0.75 80 | ledgeDropHeight: 0 81 | maxJumpAcrossDistance: 0 82 | minRegionArea: 2 83 | manualCellSize: 0 84 | cellSize: 0.16666667 85 | manualTileSize: 0 86 | tileSize: 256 87 | accuratePlacement: 0 88 | debug: 89 | m_Flags: 0 90 | m_SettingNames: 91 | - Humanoid 92 | -------------------------------------------------------------------------------- /ProjectSettings/NetworkManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!149 &1 4 | NetworkManager: 5 | m_ObjectHideFlags: 0 6 | m_DebugLevel: 0 7 | m_Sendrate: 15 8 | m_AssetToPrefab: {} 9 | -------------------------------------------------------------------------------- /ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!19 &1 4 | Physics2DSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 3 7 | m_Gravity: {x: 0, y: -9.81} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_VelocityIterations: 8 10 | m_PositionIterations: 3 11 | m_VelocityThreshold: 1 12 | m_MaxLinearCorrection: 0.2 13 | m_MaxAngularCorrection: 8 14 | m_MaxTranslationSpeed: 100 15 | m_MaxRotationSpeed: 360 16 | m_BaumgarteScale: 0.2 17 | m_BaumgarteTimeOfImpactScale: 0.75 18 | m_TimeToSleep: 0.5 19 | m_LinearSleepTolerance: 0.01 20 | m_AngularSleepTolerance: 2 21 | m_DefaultContactOffset: 0.01 22 | m_AutoSimulation: 1 23 | m_QueriesHitTriggers: 1 24 | m_QueriesStartInColliders: 1 25 | m_ChangeStopsCallbacks: 0 26 | m_CallbacksOnDisable: 1 27 | m_AutoSyncTransforms: 1 28 | m_AlwaysShowColliders: 0 29 | m_ShowColliderSleep: 1 30 | m_ShowColliderContacts: 0 31 | m_ShowColliderAABB: 0 32 | m_ContactArrowScale: 0.2 33 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} 34 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} 35 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} 36 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} 37 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 38 | -------------------------------------------------------------------------------- /ProjectSettings/PresetManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1386491679 &1 4 | PresetManager: 5 | m_ObjectHideFlags: 0 6 | m_DefaultList: [] 7 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!129 &1 4 | PlayerSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 15 7 | productGUID: 2ca2e971f20d81746bba22d96f3ded21 8 | AndroidProfiler: 0 9 | AndroidFilterTouchesWhenObscured: 0 10 | AndroidEnableSustainedPerformanceMode: 0 11 | defaultScreenOrientation: 4 12 | targetDevice: 2 13 | useOnDemandResources: 0 14 | accelerometerFrequency: 60 15 | companyName: Microsoft 16 | productName: Unity Text-to-Speech Demo 17 | defaultCursor: {fileID: 0} 18 | cursorHotspot: {x: 0, y: 0} 19 | m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} 20 | m_ShowUnitySplashScreen: 1 21 | m_ShowUnitySplashLogo: 1 22 | m_SplashScreenOverlayOpacity: 1 23 | m_SplashScreenAnimation: 1 24 | m_SplashScreenLogoStyle: 1 25 | m_SplashScreenDrawMode: 0 26 | m_SplashScreenBackgroundAnimationZoom: 1 27 | m_SplashScreenLogoAnimationZoom: 1 28 | m_SplashScreenBackgroundLandscapeAspect: 1 29 | m_SplashScreenBackgroundPortraitAspect: 1 30 | m_SplashScreenBackgroundLandscapeUvs: 31 | serializedVersion: 2 32 | x: 0 33 | y: 0 34 | width: 1 35 | height: 1 36 | m_SplashScreenBackgroundPortraitUvs: 37 | serializedVersion: 2 38 | x: 0 39 | y: 0 40 | width: 1 41 | height: 1 42 | m_SplashScreenLogos: [] 43 | m_VirtualRealitySplashScreen: {fileID: 0} 44 | m_HolographicTrackingLossScreen: {fileID: 0} 45 | defaultScreenWidth: 1024 46 | defaultScreenHeight: 768 47 | defaultScreenWidthWeb: 960 48 | defaultScreenHeightWeb: 600 49 | m_StereoRenderingPath: 0 50 | m_ActiveColorSpace: 0 51 | m_MTRendering: 1 52 | m_StackTraceTypes: 010000000100000001000000010000000100000001000000 53 | iosShowActivityIndicatorOnLoading: -1 54 | androidShowActivityIndicatorOnLoading: -1 55 | iosAppInBackgroundBehavior: 0 56 | displayResolutionDialog: 1 57 | iosAllowHTTPDownload: 1 58 | allowedAutorotateToPortrait: 1 59 | allowedAutorotateToPortraitUpsideDown: 1 60 | allowedAutorotateToLandscapeRight: 1 61 | allowedAutorotateToLandscapeLeft: 1 62 | useOSAutorotation: 1 63 | use32BitDisplayBuffer: 1 64 | preserveFramebufferAlpha: 0 65 | disableDepthAndStencilBuffers: 0 66 | androidStartInFullscreen: 1 67 | androidRenderOutsideSafeArea: 0 68 | androidBlitType: 0 69 | defaultIsNativeResolution: 1 70 | macRetinaSupport: 1 71 | runInBackground: 0 72 | captureSingleScreen: 0 73 | muteOtherAudioSources: 1 74 | Prepare IOS For Recording: 0 75 | Force IOS Speakers When Recording: 0 76 | deferSystemGesturesMode: 0 77 | hideHomeButton: 0 78 | submitAnalytics: 1 79 | usePlayerLog: 1 80 | bakeCollisionMeshes: 0 81 | forceSingleInstance: 0 82 | resizableWindow: 0 83 | useMacAppStoreValidation: 0 84 | macAppStoreCategory: public.app-category.games 85 | gpuSkinning: 0 86 | graphicsJobs: 0 87 | xboxPIXTextureCapture: 0 88 | xboxEnableAvatar: 0 89 | xboxEnableKinect: 0 90 | xboxEnableKinectAutoTracking: 0 91 | xboxEnableFitness: 0 92 | visibleInBackground: 1 93 | allowFullscreenSwitch: 1 94 | graphicsJobMode: 0 95 | fullscreenMode: 1 96 | xboxSpeechDB: 0 97 | xboxEnableHeadOrientation: 0 98 | xboxEnableGuest: 0 99 | xboxEnablePIXSampling: 0 100 | metalFramebufferOnly: 0 101 | xboxOneResolution: 0 102 | xboxOneSResolution: 0 103 | xboxOneXResolution: 3 104 | xboxOneMonoLoggingLevel: 0 105 | xboxOneLoggingLevel: 1 106 | xboxOneDisableEsram: 0 107 | xboxOnePresentImmediateThreshold: 0 108 | switchQueueCommandMemory: 1048576 109 | switchQueueControlMemory: 16384 110 | switchQueueComputeMemory: 262144 111 | switchNVNShaderPoolsGranularity: 33554432 112 | switchNVNDefaultPoolsGranularity: 16777216 113 | switchNVNOtherPoolsGranularity: 16777216 114 | vulkanEnableSetSRGBWrite: 0 115 | m_SupportedAspectRatios: 116 | 4:3: 1 117 | 5:4: 1 118 | 16:10: 1 119 | 16:9: 1 120 | Others: 1 121 | bundleVersion: 1.0 122 | preloadedAssets: [] 123 | metroInputSource: 0 124 | wsaTransparentSwapchain: 0 125 | m_HolographicPauseOnTrackingLoss: 1 126 | xboxOneDisableKinectGpuReservation: 0 127 | xboxOneEnable7thCore: 0 128 | isWsaHolographicRemotingEnabled: 0 129 | vrSettings: 130 | cardboard: 131 | depthFormat: 0 132 | enableTransitionView: 0 133 | daydream: 134 | depthFormat: 0 135 | useSustainedPerformanceMode: 0 136 | enableVideoLayer: 0 137 | useProtectedVideoMemory: 0 138 | minimumSupportedHeadTracking: 0 139 | maximumSupportedHeadTracking: 1 140 | hololens: 141 | depthFormat: 1 142 | depthBufferSharingEnabled: 0 143 | oculus: 144 | sharedDepthBuffer: 0 145 | dashSupport: 0 146 | enable360StereoCapture: 0 147 | protectGraphicsMemory: 0 148 | enableFrameTimingStats: 0 149 | useHDRDisplay: 0 150 | m_ColorGamuts: 00000000 151 | targetPixelDensity: 30 152 | resolutionScalingMode: 0 153 | androidSupportedAspectRatio: 1 154 | androidMaxAspectRatio: 2.1 155 | applicationIdentifier: 156 | Android: com.Microsoft.DemoTTS 157 | buildNumber: {} 158 | AndroidBundleVersionCode: 1 159 | AndroidMinSdkVersion: 23 160 | AndroidTargetSdkVersion: 0 161 | AndroidPreferredInstallLocation: 1 162 | aotOptions: 163 | stripEngineCode: 1 164 | iPhoneStrippingLevel: 0 165 | iPhoneScriptCallOptimization: 0 166 | ForceInternetPermission: 1 167 | ForceSDCardPermission: 0 168 | CreateWallpaper: 0 169 | APKExpansionFiles: 0 170 | keepLoadedShadersAlive: 0 171 | StripUnusedMeshComponents: 0 172 | VertexChannelCompressionMask: 214 173 | iPhoneSdkVersion: 988 174 | iOSTargetOSVersionString: 9.0 175 | tvOSSdkVersion: 0 176 | tvOSRequireExtendedGameController: 0 177 | tvOSTargetOSVersionString: 9.0 178 | uIPrerenderedIcon: 0 179 | uIRequiresPersistentWiFi: 0 180 | uIRequiresFullScreen: 1 181 | uIStatusBarHidden: 1 182 | uIExitOnSuspend: 0 183 | uIStatusBarStyle: 0 184 | iPhoneSplashScreen: {fileID: 0} 185 | iPhoneHighResSplashScreen: {fileID: 0} 186 | iPhoneTallHighResSplashScreen: {fileID: 0} 187 | iPhone47inSplashScreen: {fileID: 0} 188 | iPhone55inPortraitSplashScreen: {fileID: 0} 189 | iPhone55inLandscapeSplashScreen: {fileID: 0} 190 | iPhone58inPortraitSplashScreen: {fileID: 0} 191 | iPhone58inLandscapeSplashScreen: {fileID: 0} 192 | iPadPortraitSplashScreen: {fileID: 0} 193 | iPadHighResPortraitSplashScreen: {fileID: 0} 194 | iPadLandscapeSplashScreen: {fileID: 0} 195 | iPadHighResLandscapeSplashScreen: {fileID: 0} 196 | appleTVSplashScreen: {fileID: 0} 197 | appleTVSplashScreen2x: {fileID: 0} 198 | tvOSSmallIconLayers: [] 199 | tvOSSmallIconLayers2x: [] 200 | tvOSLargeIconLayers: [] 201 | tvOSLargeIconLayers2x: [] 202 | tvOSTopShelfImageLayers: [] 203 | tvOSTopShelfImageLayers2x: [] 204 | tvOSTopShelfImageWideLayers: [] 205 | tvOSTopShelfImageWideLayers2x: [] 206 | iOSLaunchScreenType: 0 207 | iOSLaunchScreenPortrait: {fileID: 0} 208 | iOSLaunchScreenLandscape: {fileID: 0} 209 | iOSLaunchScreenBackgroundColor: 210 | serializedVersion: 2 211 | rgba: 0 212 | iOSLaunchScreenFillPct: 100 213 | iOSLaunchScreenSize: 100 214 | iOSLaunchScreenCustomXibPath: 215 | iOSLaunchScreeniPadType: 0 216 | iOSLaunchScreeniPadImage: {fileID: 0} 217 | iOSLaunchScreeniPadBackgroundColor: 218 | serializedVersion: 2 219 | rgba: 0 220 | iOSLaunchScreeniPadFillPct: 100 221 | iOSLaunchScreeniPadSize: 100 222 | iOSLaunchScreeniPadCustomXibPath: 223 | iOSUseLaunchScreenStoryboard: 0 224 | iOSLaunchScreenCustomStoryboardPath: 225 | iOSDeviceRequirements: [] 226 | iOSURLSchemes: [] 227 | iOSBackgroundModes: 0 228 | iOSMetalForceHardShadows: 0 229 | metalEditorSupport: 1 230 | metalAPIValidation: 1 231 | iOSRenderExtraFrameOnPause: 0 232 | appleDeveloperTeamID: 233 | iOSManualSigningProvisioningProfileID: 234 | tvOSManualSigningProvisioningProfileID: 235 | iOSManualSigningProvisioningProfileType: 0 236 | tvOSManualSigningProvisioningProfileType: 0 237 | appleEnableAutomaticSigning: 0 238 | iOSRequireARKit: 0 239 | iOSAutomaticallyDetectAndAddCapabilities: 1 240 | appleEnableProMotion: 0 241 | clonedFromGUID: 00000000000000000000000000000000 242 | templatePackageId: 243 | templateDefaultScene: 244 | AndroidTargetArchitectures: 5 245 | AndroidSplashScreenScale: 0 246 | androidSplashScreen: {fileID: 0} 247 | AndroidKeystoreName: 248 | AndroidKeyaliasName: 249 | AndroidBuildApkPerCpuArchitecture: 0 250 | AndroidTVCompatibility: 1 251 | AndroidIsGame: 1 252 | AndroidEnableTango: 0 253 | androidEnableBanner: 1 254 | androidUseLowAccuracyLocation: 0 255 | m_AndroidBanners: 256 | - width: 320 257 | height: 180 258 | banner: {fileID: 0} 259 | androidGamepadSupportLevel: 0 260 | resolutionDialogBanner: {fileID: 0} 261 | m_BuildTargetIcons: [] 262 | m_BuildTargetPlatformIcons: [] 263 | m_BuildTargetBatching: [] 264 | m_BuildTargetGraphicsAPIs: [] 265 | m_BuildTargetVRSettings: [] 266 | m_BuildTargetEnableVuforiaSettings: [] 267 | openGLRequireES31: 0 268 | openGLRequireES31AEP: 0 269 | m_TemplateCustomTags: {} 270 | mobileMTRendering: 271 | Android: 1 272 | iPhone: 1 273 | tvOS: 1 274 | m_BuildTargetGroupLightmapEncodingQuality: [] 275 | m_BuildTargetGroupLightmapSettings: [] 276 | playModeTestRunnerEnabled: 0 277 | runPlayModeTestAsEditModeTest: 0 278 | actionOnDotNetUnhandledException: 1 279 | enableInternalProfiler: 0 280 | logObjCUncaughtExceptions: 1 281 | enableCrashReportAPI: 0 282 | cameraUsageDescription: 283 | locationUsageDescription: 284 | microphoneUsageDescription: 285 | switchNetLibKey: 286 | switchSocketMemoryPoolSize: 6144 287 | switchSocketAllocatorPoolSize: 128 288 | switchSocketConcurrencyLimit: 14 289 | switchScreenResolutionBehavior: 2 290 | switchUseCPUProfiler: 0 291 | switchApplicationID: 0x01004b9000490000 292 | switchNSODependencies: 293 | switchTitleNames_0: 294 | switchTitleNames_1: 295 | switchTitleNames_2: 296 | switchTitleNames_3: 297 | switchTitleNames_4: 298 | switchTitleNames_5: 299 | switchTitleNames_6: 300 | switchTitleNames_7: 301 | switchTitleNames_8: 302 | switchTitleNames_9: 303 | switchTitleNames_10: 304 | switchTitleNames_11: 305 | switchTitleNames_12: 306 | switchTitleNames_13: 307 | switchTitleNames_14: 308 | switchPublisherNames_0: 309 | switchPublisherNames_1: 310 | switchPublisherNames_2: 311 | switchPublisherNames_3: 312 | switchPublisherNames_4: 313 | switchPublisherNames_5: 314 | switchPublisherNames_6: 315 | switchPublisherNames_7: 316 | switchPublisherNames_8: 317 | switchPublisherNames_9: 318 | switchPublisherNames_10: 319 | switchPublisherNames_11: 320 | switchPublisherNames_12: 321 | switchPublisherNames_13: 322 | switchPublisherNames_14: 323 | switchIcons_0: {fileID: 0} 324 | switchIcons_1: {fileID: 0} 325 | switchIcons_2: {fileID: 0} 326 | switchIcons_3: {fileID: 0} 327 | switchIcons_4: {fileID: 0} 328 | switchIcons_5: {fileID: 0} 329 | switchIcons_6: {fileID: 0} 330 | switchIcons_7: {fileID: 0} 331 | switchIcons_8: {fileID: 0} 332 | switchIcons_9: {fileID: 0} 333 | switchIcons_10: {fileID: 0} 334 | switchIcons_11: {fileID: 0} 335 | switchIcons_12: {fileID: 0} 336 | switchIcons_13: {fileID: 0} 337 | switchIcons_14: {fileID: 0} 338 | switchSmallIcons_0: {fileID: 0} 339 | switchSmallIcons_1: {fileID: 0} 340 | switchSmallIcons_2: {fileID: 0} 341 | switchSmallIcons_3: {fileID: 0} 342 | switchSmallIcons_4: {fileID: 0} 343 | switchSmallIcons_5: {fileID: 0} 344 | switchSmallIcons_6: {fileID: 0} 345 | switchSmallIcons_7: {fileID: 0} 346 | switchSmallIcons_8: {fileID: 0} 347 | switchSmallIcons_9: {fileID: 0} 348 | switchSmallIcons_10: {fileID: 0} 349 | switchSmallIcons_11: {fileID: 0} 350 | switchSmallIcons_12: {fileID: 0} 351 | switchSmallIcons_13: {fileID: 0} 352 | switchSmallIcons_14: {fileID: 0} 353 | switchManualHTML: 354 | switchAccessibleURLs: 355 | switchLegalInformation: 356 | switchMainThreadStackSize: 1048576 357 | switchPresenceGroupId: 358 | switchLogoHandling: 0 359 | switchReleaseVersion: 0 360 | switchDisplayVersion: 1.0.0 361 | switchStartupUserAccount: 0 362 | switchTouchScreenUsage: 0 363 | switchSupportedLanguagesMask: 0 364 | switchLogoType: 0 365 | switchApplicationErrorCodeCategory: 366 | switchUserAccountSaveDataSize: 0 367 | switchUserAccountSaveDataJournalSize: 0 368 | switchApplicationAttribute: 0 369 | switchCardSpecSize: -1 370 | switchCardSpecClock: -1 371 | switchRatingsMask: 0 372 | switchRatingsInt_0: 0 373 | switchRatingsInt_1: 0 374 | switchRatingsInt_2: 0 375 | switchRatingsInt_3: 0 376 | switchRatingsInt_4: 0 377 | switchRatingsInt_5: 0 378 | switchRatingsInt_6: 0 379 | switchRatingsInt_7: 0 380 | switchRatingsInt_8: 0 381 | switchRatingsInt_9: 0 382 | switchRatingsInt_10: 0 383 | switchRatingsInt_11: 0 384 | switchLocalCommunicationIds_0: 385 | switchLocalCommunicationIds_1: 386 | switchLocalCommunicationIds_2: 387 | switchLocalCommunicationIds_3: 388 | switchLocalCommunicationIds_4: 389 | switchLocalCommunicationIds_5: 390 | switchLocalCommunicationIds_6: 391 | switchLocalCommunicationIds_7: 392 | switchParentalControl: 0 393 | switchAllowsScreenshot: 1 394 | switchAllowsVideoCapturing: 1 395 | switchAllowsRuntimeAddOnContentInstall: 0 396 | switchDataLossConfirmation: 0 397 | switchUserAccountLockEnabled: 0 398 | switchSystemResourceMemory: 16777216 399 | switchSupportedNpadStyles: 3 400 | switchNativeFsCacheSize: 32 401 | switchIsHoldTypeHorizontal: 0 402 | switchSupportedNpadCount: 8 403 | switchSocketConfigEnabled: 0 404 | switchTcpInitialSendBufferSize: 32 405 | switchTcpInitialReceiveBufferSize: 64 406 | switchTcpAutoSendBufferSizeMax: 256 407 | switchTcpAutoReceiveBufferSizeMax: 256 408 | switchUdpSendBufferSize: 9 409 | switchUdpReceiveBufferSize: 42 410 | switchSocketBufferEfficiency: 4 411 | switchSocketInitializeEnabled: 1 412 | switchNetworkInterfaceManagerInitializeEnabled: 1 413 | switchPlayerConnectionEnabled: 1 414 | ps4NPAgeRating: 12 415 | ps4NPTitleSecret: 416 | ps4NPTrophyPackPath: 417 | ps4ParentalLevel: 11 418 | ps4ContentID: ED1633-NPXX51362_00-0000000000000000 419 | ps4Category: 0 420 | ps4MasterVersion: 01.00 421 | ps4AppVersion: 01.00 422 | ps4AppType: 0 423 | ps4ParamSfxPath: 424 | ps4VideoOutPixelFormat: 0 425 | ps4VideoOutInitialWidth: 1920 426 | ps4VideoOutBaseModeInitialWidth: 1920 427 | ps4VideoOutReprojectionRate: 60 428 | ps4PronunciationXMLPath: 429 | ps4PronunciationSIGPath: 430 | ps4BackgroundImagePath: 431 | ps4StartupImagePath: 432 | ps4StartupImagesFolder: 433 | ps4IconImagesFolder: 434 | ps4SaveDataImagePath: 435 | ps4SdkOverride: 436 | ps4BGMPath: 437 | ps4ShareFilePath: 438 | ps4ShareOverlayImagePath: 439 | ps4PrivacyGuardImagePath: 440 | ps4NPtitleDatPath: 441 | ps4RemotePlayKeyAssignment: -1 442 | ps4RemotePlayKeyMappingDir: 443 | ps4PlayTogetherPlayerCount: 0 444 | ps4EnterButtonAssignment: 1 445 | ps4ApplicationParam1: 0 446 | ps4ApplicationParam2: 0 447 | ps4ApplicationParam3: 0 448 | ps4ApplicationParam4: 0 449 | ps4DownloadDataSize: 0 450 | ps4GarlicHeapSize: 2048 451 | ps4ProGarlicHeapSize: 2560 452 | ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ 453 | ps4pnSessions: 1 454 | ps4pnPresence: 1 455 | ps4pnFriends: 1 456 | ps4pnGameCustomData: 1 457 | playerPrefsSupport: 0 458 | enableApplicationExit: 0 459 | resetTempFolder: 1 460 | restrictedAudioUsageRights: 0 461 | ps4UseResolutionFallback: 0 462 | ps4ReprojectionSupport: 0 463 | ps4UseAudio3dBackend: 0 464 | ps4SocialScreenEnabled: 0 465 | ps4ScriptOptimizationLevel: 0 466 | ps4Audio3dVirtualSpeakerCount: 14 467 | ps4attribCpuUsage: 0 468 | ps4PatchPkgPath: 469 | ps4PatchLatestPkgPath: 470 | ps4PatchChangeinfoPath: 471 | ps4PatchDayOne: 0 472 | ps4attribUserManagement: 0 473 | ps4attribMoveSupport: 0 474 | ps4attrib3DSupport: 0 475 | ps4attribShareSupport: 0 476 | ps4attribExclusiveVR: 0 477 | ps4disableAutoHideSplash: 0 478 | ps4videoRecordingFeaturesUsed: 0 479 | ps4contentSearchFeaturesUsed: 0 480 | ps4attribEyeToEyeDistanceSettingVR: 0 481 | ps4IncludedModules: [] 482 | monoEnv: 483 | splashScreenBackgroundSourceLandscape: {fileID: 0} 484 | splashScreenBackgroundSourcePortrait: {fileID: 0} 485 | spritePackerPolicy: 486 | webGLMemorySize: 256 487 | webGLExceptionSupport: 1 488 | webGLNameFilesAsHashes: 0 489 | webGLDataCaching: 0 490 | webGLDebugSymbols: 0 491 | webGLEmscriptenArgs: 492 | webGLModulesDirectory: 493 | webGLTemplate: APPLICATION:Default 494 | webGLAnalyzeBuildSize: 0 495 | webGLUseEmbeddedResources: 0 496 | webGLCompressionFormat: 1 497 | webGLLinkerTarget: 1 498 | webGLThreadsSupport: 0 499 | scriptingDefineSymbols: {} 500 | platformArchitecture: {} 501 | scriptingBackend: 502 | Metro: 2 503 | il2cppCompilerConfiguration: {} 504 | managedStrippingLevel: {} 505 | incrementalIl2cppBuild: {} 506 | allowUnsafeCode: 0 507 | additionalIl2CppArgs: 508 | scriptingRuntimeVersion: 1 509 | apiCompatibilityLevelPerPlatform: 510 | Metro: 6 511 | m_RenderingPath: 1 512 | m_MobileRenderingPath: 1 513 | metroPackageName: Unity-Text-to-Speech 514 | metroPackageVersion: 1.0.0.0 515 | metroCertificatePath: Assets\WSATestCertificate.pfx 516 | metroCertificatePassword: 517 | metroCertificateSubject: Microsoft 518 | metroCertificateIssuer: Microsoft 519 | metroCertificateNotAfter: 00451d48c612d501 520 | metroApplicationDescription: Unity-Text-to-Speech 521 | wsaImages: {} 522 | metroTileShortName: 523 | metroTileShowName: 0 524 | metroMediumTileShowName: 0 525 | metroLargeTileShowName: 0 526 | metroWideTileShowName: 0 527 | metroSupportStreamingInstall: 0 528 | metroLastRequiredScene: 0 529 | metroDefaultTileSize: 1 530 | metroTileForegroundText: 2 531 | metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} 532 | metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, 533 | a: 1} 534 | metroSplashScreenUseBackgroundColor: 0 535 | platformCapabilities: 536 | WindowsStoreApps: 537 | AllJoyn: False 538 | BlockedChatMessages: False 539 | Bluetooth: False 540 | Chat: False 541 | CodeGeneration: False 542 | EnterpriseAuthentication: False 543 | HumanInterfaceDevice: False 544 | InputInjectionBrokered: False 545 | InternetClient: True 546 | InternetClientServer: False 547 | Location: False 548 | Microphone: False 549 | MusicLibrary: False 550 | Objects3D: False 551 | PhoneCall: False 552 | PicturesLibrary: False 553 | PrivateNetworkClientServer: False 554 | Proximity: False 555 | RemovableStorage: False 556 | SharedUserCertificates: False 557 | SpatialPerception: False 558 | UserAccountInformation: False 559 | VideosLibrary: False 560 | VoipCall: False 561 | WebCam: False 562 | metroTargetDeviceFamilies: {} 563 | metroFTAName: 564 | metroFTAFileTypes: [] 565 | metroProtocolName: 566 | metroCompilationOverrides: 1 567 | XboxOneProductId: 568 | XboxOneUpdateKey: 569 | XboxOneSandboxId: 570 | XboxOneContentId: 571 | XboxOneTitleId: 572 | XboxOneSCId: 573 | XboxOneGameOsOverridePath: 574 | XboxOnePackagingOverridePath: 575 | XboxOneAppManifestOverridePath: 576 | XboxOneVersion: 1.0.0.0 577 | XboxOnePackageEncryption: 0 578 | XboxOnePackageUpdateGranularity: 2 579 | XboxOneDescription: 580 | XboxOneLanguage: 581 | - enus 582 | XboxOneCapability: [] 583 | XboxOneGameRating: {} 584 | XboxOneIsContentPackage: 0 585 | XboxOneEnableGPUVariability: 0 586 | XboxOneSockets: {} 587 | XboxOneSplashScreen: {fileID: 0} 588 | XboxOneAllowedProductIds: [] 589 | XboxOnePersistentLocalStorageSize: 0 590 | XboxOneXTitleMemory: 8 591 | xboxOneScriptCompiler: 0 592 | XboxOneOverrideIdentityName: 593 | vrEditorSettings: 594 | daydream: 595 | daydreamIconForeground: {fileID: 0} 596 | daydreamIconBackground: {fileID: 0} 597 | cloudServicesEnabled: {} 598 | luminIcon: 599 | m_Name: 600 | m_ModelFolderPath: 601 | m_PortalFolderPath: 602 | luminCert: 603 | m_CertPath: 604 | m_PrivateKeyPath: 605 | luminIsChannelApp: 0 606 | luminVersion: 607 | m_VersionCode: 1 608 | m_VersionName: 609 | facebookSdkVersion: 7.9.4 610 | facebookAppId: 611 | facebookCookies: 1 612 | facebookLogging: 1 613 | facebookStatus: 1 614 | facebookXfbml: 0 615 | facebookFrictionlessRequests: 1 616 | apiCompatibilityLevel: 3 617 | cloudProjectId: 618 | framebufferDepthMemorylessMode: 0 619 | projectName: 620 | organizationId: 621 | cloudEnabled: 0 622 | enableNativePlatformBackendsForNewInputSystem: 0 623 | disableOldInputManagerSupport: 0 624 | legacyClampBlendShapeWeights: 1 625 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2018.4.6f1 2 | -------------------------------------------------------------------------------- /ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!47 &1 4 | QualitySettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 5 7 | m_CurrentQuality: 2 8 | m_QualitySettings: 9 | - serializedVersion: 2 10 | name: Very Low 11 | pixelLightCount: 0 12 | shadows: 0 13 | shadowResolution: 0 14 | shadowProjection: 1 15 | shadowCascades: 1 16 | shadowDistance: 15 17 | shadowNearPlaneOffset: 3 18 | shadowCascade2Split: 0.33333334 19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 20 | shadowmaskMode: 0 21 | blendWeights: 1 22 | textureQuality: 1 23 | anisotropicTextures: 0 24 | antiAliasing: 0 25 | softParticles: 0 26 | softVegetation: 0 27 | realtimeReflectionProbes: 0 28 | billboardsFaceCameraPosition: 0 29 | vSyncCount: 0 30 | lodBias: 0.3 31 | maximumLODLevel: 0 32 | particleRaycastBudget: 4 33 | asyncUploadTimeSlice: 2 34 | asyncUploadBufferSize: 4 35 | resolutionScalingFixedDPIFactor: 1 36 | excludedTargetPlatforms: [] 37 | - serializedVersion: 2 38 | name: Low 39 | pixelLightCount: 0 40 | shadows: 0 41 | shadowResolution: 0 42 | shadowProjection: 1 43 | shadowCascades: 1 44 | shadowDistance: 20 45 | shadowNearPlaneOffset: 3 46 | shadowCascade2Split: 0.33333334 47 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 48 | shadowmaskMode: 0 49 | blendWeights: 2 50 | textureQuality: 0 51 | anisotropicTextures: 0 52 | antiAliasing: 0 53 | softParticles: 0 54 | softVegetation: 0 55 | realtimeReflectionProbes: 0 56 | billboardsFaceCameraPosition: 0 57 | vSyncCount: 0 58 | lodBias: 0.4 59 | maximumLODLevel: 0 60 | particleRaycastBudget: 16 61 | asyncUploadTimeSlice: 2 62 | asyncUploadBufferSize: 4 63 | resolutionScalingFixedDPIFactor: 1 64 | excludedTargetPlatforms: [] 65 | - serializedVersion: 2 66 | name: Medium 67 | pixelLightCount: 1 68 | shadows: 1 69 | shadowResolution: 0 70 | shadowProjection: 1 71 | shadowCascades: 1 72 | shadowDistance: 20 73 | shadowNearPlaneOffset: 3 74 | shadowCascade2Split: 0.33333334 75 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 76 | shadowmaskMode: 0 77 | blendWeights: 2 78 | textureQuality: 0 79 | anisotropicTextures: 1 80 | antiAliasing: 0 81 | softParticles: 0 82 | softVegetation: 0 83 | realtimeReflectionProbes: 0 84 | billboardsFaceCameraPosition: 0 85 | vSyncCount: 1 86 | lodBias: 0.7 87 | maximumLODLevel: 0 88 | particleRaycastBudget: 64 89 | asyncUploadTimeSlice: 2 90 | asyncUploadBufferSize: 4 91 | resolutionScalingFixedDPIFactor: 1 92 | excludedTargetPlatforms: [] 93 | - serializedVersion: 2 94 | name: High 95 | pixelLightCount: 2 96 | shadows: 2 97 | shadowResolution: 1 98 | shadowProjection: 1 99 | shadowCascades: 2 100 | shadowDistance: 40 101 | shadowNearPlaneOffset: 3 102 | shadowCascade2Split: 0.33333334 103 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 104 | shadowmaskMode: 1 105 | blendWeights: 2 106 | textureQuality: 0 107 | anisotropicTextures: 1 108 | antiAliasing: 0 109 | softParticles: 0 110 | softVegetation: 1 111 | realtimeReflectionProbes: 1 112 | billboardsFaceCameraPosition: 1 113 | vSyncCount: 1 114 | lodBias: 1 115 | maximumLODLevel: 0 116 | particleRaycastBudget: 256 117 | asyncUploadTimeSlice: 2 118 | asyncUploadBufferSize: 4 119 | resolutionScalingFixedDPIFactor: 1 120 | excludedTargetPlatforms: [] 121 | - serializedVersion: 2 122 | name: Very High 123 | pixelLightCount: 3 124 | shadows: 2 125 | shadowResolution: 2 126 | shadowProjection: 1 127 | shadowCascades: 2 128 | shadowDistance: 70 129 | shadowNearPlaneOffset: 3 130 | shadowCascade2Split: 0.33333334 131 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 132 | shadowmaskMode: 1 133 | blendWeights: 4 134 | textureQuality: 0 135 | anisotropicTextures: 2 136 | antiAliasing: 2 137 | softParticles: 1 138 | softVegetation: 1 139 | realtimeReflectionProbes: 1 140 | billboardsFaceCameraPosition: 1 141 | vSyncCount: 1 142 | lodBias: 1.5 143 | maximumLODLevel: 0 144 | particleRaycastBudget: 1024 145 | asyncUploadTimeSlice: 2 146 | asyncUploadBufferSize: 4 147 | resolutionScalingFixedDPIFactor: 1 148 | excludedTargetPlatforms: [] 149 | - serializedVersion: 2 150 | name: Ultra 151 | pixelLightCount: 4 152 | shadows: 2 153 | shadowResolution: 2 154 | shadowProjection: 1 155 | shadowCascades: 4 156 | shadowDistance: 150 157 | shadowNearPlaneOffset: 3 158 | shadowCascade2Split: 0.33333334 159 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 160 | shadowmaskMode: 1 161 | blendWeights: 4 162 | textureQuality: 0 163 | anisotropicTextures: 2 164 | antiAliasing: 2 165 | softParticles: 1 166 | softVegetation: 1 167 | realtimeReflectionProbes: 1 168 | billboardsFaceCameraPosition: 1 169 | vSyncCount: 1 170 | lodBias: 2 171 | maximumLODLevel: 0 172 | particleRaycastBudget: 4096 173 | asyncUploadTimeSlice: 2 174 | asyncUploadBufferSize: 4 175 | resolutionScalingFixedDPIFactor: 1 176 | excludedTargetPlatforms: [] 177 | m_PerPlatformDefaultQuality: 178 | Android: 2 179 | Nintendo 3DS: 5 180 | Nintendo Switch: 5 181 | PS4: 5 182 | PSM: 5 183 | PSP2: 2 184 | Standalone: 5 185 | Tizen: 2 186 | WebGL: 3 187 | WiiU: 5 188 | Windows Store Apps: 5 189 | XboxOne: 5 190 | iPhone: 2 191 | tvOS: 2 192 | -------------------------------------------------------------------------------- /ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!78 &1 4 | TagManager: 5 | serializedVersion: 2 6 | tags: [] 7 | layers: 8 | - Default 9 | - TransparentFX 10 | - Ignore Raycast 11 | - 12 | - Water 13 | - UI 14 | - 15 | - 16 | - 17 | - 18 | - 19 | - 20 | - 21 | - 22 | - 23 | - 24 | - 25 | - 26 | - 27 | - 28 | - 29 | - 30 | - 31 | - 32 | - 33 | - 34 | - 35 | - 36 | - 37 | - 38 | - 39 | - 40 | m_SortingLayers: 41 | - name: Default 42 | uniqueID: 0 43 | locked: 0 44 | -------------------------------------------------------------------------------- /ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!5 &1 4 | TimeManager: 5 | m_ObjectHideFlags: 0 6 | Fixed Timestep: 0.02 7 | Maximum Allowed Timestep: 0.33333334 8 | m_TimeScale: 1 9 | Maximum Particle Timestep: 0.03 10 | -------------------------------------------------------------------------------- /ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!310 &1 4 | UnityConnectSettings: 5 | m_ObjectHideFlags: 0 6 | m_Enabled: 0 7 | m_TestMode: 0 8 | m_TestEventUrl: 9 | m_TestConfigUrl: 10 | m_TestInitMode: 0 11 | CrashReportingSettings: 12 | m_EventUrl: https://perf-events.cloud.unity3d.com/api/events/crashes 13 | m_NativeEventUrl: https://perf-events.cloud.unity3d.com/symbolicate 14 | m_Enabled: 0 15 | m_CaptureEditorExceptions: 1 16 | UnityPurchasingSettings: 17 | m_Enabled: 0 18 | m_TestMode: 0 19 | UnityAnalyticsSettings: 20 | m_Enabled: 0 21 | m_InitializeOnStartup: 1 22 | m_TestMode: 0 23 | m_TestEventUrl: 24 | m_TestConfigUrl: 25 | UnityAdsSettings: 26 | m_Enabled: 0 27 | m_InitializeOnStartup: 1 28 | m_TestMode: 0 29 | m_IosGameId: 30 | m_AndroidGameId: 31 | m_GameIds: {} 32 | m_GameId: 33 | PerformanceReportingSettings: 34 | m_Enabled: 0 35 | -------------------------------------------------------------------------------- /ProjectSettings/VFXManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ActiveNick/Unity-Text-to-Speech/1865e9a86a3f37d7d7be4aa5ad59d5629998d1ca/ProjectSettings/VFXManager.asset -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Unity-Text-to-Speech 2 | Sample app used to demonstrate the use of [Microsoft Cognitive Services Speech Service](https://docs.microsoft.com/azure/cognitive-services/speech-service/) [Text-to-Speech (TTS) APIs](https://azure.microsoft.com/services/cognitive-services/text-to-speech/) from within the Unity game engine. These cloud-based APIs provide access to higher quality voices, providing consistency across all client platforms. Check out the [Text-to-Speech Overview page](https://azure.microsoft.com/services/cognitive-services/text-to-speech/) to try out & hear a sample of these voices. 3 | 4 | This sample provides a self-contained **SpeechManager** component that is easy to reuse in your own Unity projects. Given that Cognitive Services are cloud APIs, they are therefore not available when offline. It is recommended to fallback on local platform-specific Text-to-Speech APIs when offline. 5 | 6 | The code in this sample demonstrates two ways to call the Speech Synthesis service. The first makes use of the [Text-to-Speech REST API endpoint](https://docs.microsoft.com/azure/cognitive-services/speech-service/rest-apis). When running the sample, make sure the checkbox "Use SDK Plugin" is unchecked to use this method. The second approach uses the new Cognitive Services Speech SDK for Unity, which features a plugin for Windows Desktop, UWP and Android, available as part of of a [Unity package](https://aka.ms/csspeech/unitypackage). **IMPORTANT: The plugin is not included with this repo and you must import it in your project or the sample won't run. [You can download the Unity package from here](https://aka.ms/csspeech/unitypackage)**. 7 | 8 | - **Unity version:** 2018.3.14f1 9 | - **Target platforms tested (REST API):** Unity Editor, Windows Desktop (standalone x64), UWP, Android, iOS 10 | - **Target platforms tested (Plugin):** Unity Editor 11 | 12 | ## Implementation Notes 13 | - **THE CODE IN THIS SAMPLE APP ONLY WORKS WITH THE .NET 4.6 SCRIPTING RUNTIME**. Additionally, there seems to be an issue [with the use of HttpClient in Unity 2018.1](https://forum.unity.com/threads/httpclient-not-available-in-2018-1-with-net-4-x.532684/). 14 | - This sample requires a Microsoft Cognitive Services Speech API key. FOR MORE INFO ON AUTHENTICATION AND HOW TO GET YOUR API KEY, [PLEASE VISIT THIS PAGE](https://docs.microsoft.com/azure/cognitive-services/speech/how-to/how-to-authentication). Don't use the key in this sample app, it's mine and I reserve the right to invalidate it if/when I want, use [this link](https://docs.microsoft.com/azure/cognitive-services/speech/how-to/how-to-authentication) and go get your own. The free tier gives you 5,000 free API transactions / month. 15 | - The **CustomCertificatePolicy** class in SpeechManager.cs is required to circumvent a TLS bug in Unity 2018.1, otherwise Unity will throw an error stating the certificate is invalid. This temporary workaround simply bypasses certificate validation. This has been fixed in Unity 2018.2+ and will be removed after more testing is done. Note that UWP doesn't have this bug, only Mono, hence the conditional code. 16 | - **TTSClient.cs** contains a **VoiceName** enum with all the voices currently implemented in this sample. *This may not include all the voices supported by the Cognitive Services Text-to-Speech API*. [Please visit this page to get the most up-to-date list of supported languages](https://docs.microsoft.com/azure/cognitive-services/speech/api-reference-rest/bingvoiceoutput). Don't forget to edit **ConvertVoiceNametoString()** if you add more values to this enum to use more supported languages. 17 | - To change the pitch of the voice playback, use a delta value in Hz. Default is 0 (zero). Typical accepted delta changes can range from -10 to 10. *Note: This currently only works with the REST API*. 18 | 19 | ## Follow Me 20 | * Twitter: [@ActiveNick](http://twitter.com/ActiveNick) 21 | * SlideShare: [http://www.slideshare.net/ActiveNick](http://www.slideshare.net/ActiveNick) 22 | 23 | -------------------------------------------------------------------------------- /Unity-Text-to-Speech.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Assembly-CSharp", "Assembly-CSharp.csproj", "{D1FBEC06-63A8-A0AE-C7CC-E7A7B8B035F8}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|Any CPU = Debug|Any CPU 9 | Release|Any CPU = Release|Any CPU 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {D1FBEC06-63A8-A0AE-C7CC-E7A7B8B035F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 13 | {D1FBEC06-63A8-A0AE-C7CC-E7A7B8B035F8}.Debug|Any CPU.Build.0 = Debug|Any CPU 14 | {D1FBEC06-63A8-A0AE-C7CC-E7A7B8B035F8}.Release|Any CPU.ActiveCfg = Release|Any CPU 15 | {D1FBEC06-63A8-A0AE-C7CC-E7A7B8B035F8}.Release|Any CPU.Build.0 = Release|Any CPU 16 | EndGlobalSection 17 | GlobalSection(SolutionProperties) = preSolution 18 | HideSolutionNode = FALSE 19 | EndGlobalSection 20 | EndGlobal 21 | --------------------------------------------------------------------------------