├── .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 |
--------------------------------------------------------------------------------