Michael Twohey
Committed by GitHub

Fixed the C api calls and created the TTS project file (#1324)

Co-authored-by: Michael Twohey <mtwohey@americanambulance.com>
@@ -14,9 +14,13 @@ internal class Program @@ -14,9 +14,13 @@ internal class Program
14 provider = "cpu", 14 provider = "cpu",
15 vits = new SherpaOnnxOfflineTtsVitsModelConfig 15 vits = new SherpaOnnxOfflineTtsVitsModelConfig
16 { 16 {
17 - lexicon = "vits-zh-aishell3/lexicon.txt",  
18 - model = "vits-zh-aishell3/vits-aishell3.onnx",  
19 - tokens = "vits-zh-aishell3/tokens.txt", 17 + //lexicon = "vits-zh-aishell3/lexicon.txt",
  18 + //model = "vits-zh-aishell3/vits-aishell3.onnx",
  19 + //tokens = "vits-zh-aishell3/tokens.txt",
  20 + model = @"C:\Services\Sherpa\model.onnx",
  21 + lexicon = "",
  22 + tokens = @"C:\Services\Sherpa\tokens.txt",
  23 + data_dir = @"C:\Services\Sherpa\espeak-ng-data",
20 24
21 noise_scale = 0.667f, 25 noise_scale = 0.667f,
22 noise_scale_w = 0.8f, 26 noise_scale_w = 0.8f,
@@ -6,5 +6,13 @@ namespace TTS.Struct @@ -6,5 +6,13 @@ namespace TTS.Struct
6 public struct SherpaOnnxOfflineTtsConfig 6 public struct SherpaOnnxOfflineTtsConfig
7 { 7 {
8 public SherpaOnnxOfflineTtsModelConfig model; 8 public SherpaOnnxOfflineTtsModelConfig model;
  9 +
  10 + [MarshalAs(UnmanagedType.LPStr)]
  11 + public string rule_fsts;
  12 +
  13 + public int max_num_sentences;
  14 +
  15 + [MarshalAs(UnmanagedType.LPStr)]
  16 + public string rule_fars;
9 } 17 }
10 } 18 }
@@ -21,6 +21,9 @@ namespace TTS.Struct @@ -21,6 +21,9 @@ namespace TTS.Struct
21 [MarshalAs(UnmanagedType.LPStr)] 21 [MarshalAs(UnmanagedType.LPStr)]
22 public string tokens; 22 public string tokens;
23 23
  24 + [MarshalAs(UnmanagedType.LPStr)]
  25 + public string data_dir;
  26 +
24 /// <summary> 27 /// <summary>
25 /// VITS模型的noise_scale (float,默认值= 0.667) 28 /// VITS模型的noise_scale (float,默认值= 0.667)
26 /// </summary> 29 /// </summary>
@@ -34,6 +37,9 @@ namespace TTS.Struct @@ -34,6 +37,9 @@ namespace TTS.Struct
34 /// </summary> 37 /// </summary>
35 public float length_scale = 1f; 38 public float length_scale = 1f;
36 39
  40 + [MarshalAs(UnmanagedType.LPStr)]
  41 + public string dict_dir;
  42 +
37 public SherpaOnnxOfflineTtsVitsModelConfig() 43 public SherpaOnnxOfflineTtsVitsModelConfig()
38 { 44 {
39 noise_scale = 0.667f; 45 noise_scale = 0.667f;
@@ -43,6 +49,8 @@ namespace TTS.Struct @@ -43,6 +49,8 @@ namespace TTS.Struct
43 model = "vits-zh-aishell3/vits-aishell3.onnx"; 49 model = "vits-zh-aishell3/vits-aishell3.onnx";
44 lexicon = "vits-zh-aishell3/lexicon.txt"; 50 lexicon = "vits-zh-aishell3/lexicon.txt";
45 tokens = "vits-zh-aishell3/tokens.txt"; 51 tokens = "vits-zh-aishell3/tokens.txt";
  52 + data_dir = "";
  53 + dict_dir = "";
46 } 54 }
47 } 55 }
48 } 56 }
  1 +<Project Sdk="Microsoft.NET.Sdk">
  2 +
  3 + <PropertyGroup>
  4 + <OutputType>Exe</OutputType>
  5 + <TargetFramework>net6.0</TargetFramework>
  6 + <ImplicitUsings>enable</ImplicitUsings>
  7 + <Nullable>enable</Nullable>
  8 + <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
  9 + </PropertyGroup>
  10 + <ItemGroup>
  11 + <PackageReference Include="NAudio" Version="2.2.1" />
  12 + <PackageReference Include="org.k2fsa.sherpa.onnx" Version="1.10.23" />
  13 + </ItemGroup>
  14 +
  15 +</Project>
@@ -7,7 +7,7 @@ namespace TTS @@ -7,7 +7,7 @@ namespace TTS
7 { 7 {
8 public const string Filename = "sherpa-onnx-c-api"; 8 public const string Filename = "sherpa-onnx-c-api";
9 9
10 - [DllImport(Filename)] 10 + [DllImport(Filename, CallingConvention = CallingConvention.Cdecl)]
11 private static extern IntPtr SherpaOnnxCreateOfflineTts(SherpaOnnxOfflineTtsConfig handle); 11 private static extern IntPtr SherpaOnnxCreateOfflineTts(SherpaOnnxOfflineTtsConfig handle);
12 12
13 [DllImport(Filename)] 13 [DllImport(Filename)]
@@ -23,7 +23,12 @@ namespace TTS @@ -23,7 +23,12 @@ namespace TTS
23 23
24 public TTSCore(SherpaOnnxOfflineTtsConfig modelConfig) 24 public TTSCore(SherpaOnnxOfflineTtsConfig modelConfig)
25 { 25 {
26 - thisHandle = SherpaOnnxCreateOfflineTts(modelConfig); 26 + IntPtr ttsHandle = SherpaOnnxCreateOfflineTts(modelConfig);
  27 + if (ttsHandle == IntPtr.Zero)
  28 + {
  29 + throw new InvalidOperationException("Failed to create SherpaOnnx TTS engine.");
  30 + }
  31 + thisHandle = ttsHandle;
27 } 32 }
28 33
29 /// <summary> 34 /// <summary>
@@ -23,11 +23,13 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "offline-punctuation", "offl @@ -23,11 +23,13 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "offline-punctuation", "offl
23 EndProject 23 EndProject
24 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "vad-non-streaming-asr-paraformer", "vad-non-streaming-asr-paraformer\vad-non-streaming-asr-paraformer.csproj", "{8CD6B7E5-F59F-47B3-BB87-2B2E3678924D}" 24 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "vad-non-streaming-asr-paraformer", "vad-non-streaming-asr-paraformer\vad-non-streaming-asr-paraformer.csproj", "{8CD6B7E5-F59F-47B3-BB87-2B2E3678924D}"
25 EndProject 25 EndProject
26 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common", "Common\Common.csproj", "{401E963F-E25A-43CE-987D-8DB2D4715756}" 26 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common", "Common\Common.csproj", "{401E963F-E25A-43CE-987D-8DB2D4715756}"
27 EndProject 27 EndProject
28 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "keyword-spotting-from-files", "keyword-spotting-from-files\keyword-spotting-from-files.csproj", "{A87EDD31-D654-4C9F-AED7-F6F2825659BD}" 28 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "keyword-spotting-from-files", "keyword-spotting-from-files\keyword-spotting-from-files.csproj", "{A87EDD31-D654-4C9F-AED7-F6F2825659BD}"
29 EndProject 29 EndProject
30 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "keyword-spotting-from-microphone", "keyword-spotting-from-microphone\keyword-spotting-from-microphone.csproj", "{AEE0ED2B-C86F-4952-863C-EAD3219CB4EC}" 30 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "keyword-spotting-from-microphone", "keyword-spotting-from-microphone\keyword-spotting-from-microphone.csproj", "{AEE0ED2B-C86F-4952-863C-EAD3219CB4EC}"
  31 +EndProject
  32 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TTS", "TTS\TTS.csproj", "{DACE4A18-4FC8-4437-92BF-5A90BA81286C}"
31 EndProject 33 EndProject
32 Global 34 Global
33 GlobalSection(SolutionConfigurationPlatforms) = preSolution 35 GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -87,6 +89,10 @@ Global @@ -87,6 +89,10 @@ Global
87 {AEE0ED2B-C86F-4952-863C-EAD3219CB4EC}.Debug|Any CPU.Build.0 = Debug|Any CPU 89 {AEE0ED2B-C86F-4952-863C-EAD3219CB4EC}.Debug|Any CPU.Build.0 = Debug|Any CPU
88 {AEE0ED2B-C86F-4952-863C-EAD3219CB4EC}.Release|Any CPU.ActiveCfg = Release|Any CPU 90 {AEE0ED2B-C86F-4952-863C-EAD3219CB4EC}.Release|Any CPU.ActiveCfg = Release|Any CPU
89 {AEE0ED2B-C86F-4952-863C-EAD3219CB4EC}.Release|Any CPU.Build.0 = Release|Any CPU 91 {AEE0ED2B-C86F-4952-863C-EAD3219CB4EC}.Release|Any CPU.Build.0 = Release|Any CPU
  92 + {DACE4A18-4FC8-4437-92BF-5A90BA81286C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
  93 + {DACE4A18-4FC8-4437-92BF-5A90BA81286C}.Debug|Any CPU.Build.0 = Debug|Any CPU
  94 + {DACE4A18-4FC8-4437-92BF-5A90BA81286C}.Release|Any CPU.ActiveCfg = Release|Any CPU
  95 + {DACE4A18-4FC8-4437-92BF-5A90BA81286C}.Release|Any CPU.Build.0 = Release|Any CPU
90 EndGlobalSection 96 EndGlobalSection
91 GlobalSection(SolutionProperties) = preSolution 97 GlobalSection(SolutionProperties) = preSolution
92 HideSolutionNode = FALSE 98 HideSolutionNode = FALSE