Minor refact

This commit is contained in:
niksedk 2022-01-20 07:04:51 +01:00
parent bab49280fe
commit ca9534f8f4
3 changed files with 138 additions and 133 deletions

View File

@ -0,0 +1,132 @@
namespace Nikse.SubtitleEdit.Core.AudioToText
{
public class DownloadModel
{
public string Url { get; set; }
public string TwoLetterLanguageCode { get; set; }
public string LanguageName { get; set; }
public override string ToString()
{
return LanguageName;
}
public static readonly DownloadModel[] VoskModels = new[]
{
new DownloadModel
{
TwoLetterLanguageCode = "en",
LanguageName = "English",
Url = "https://alphacephei.com/vosk/models/vosk-model-en-us-0.22-lgraph.zip",
},
new DownloadModel
{
TwoLetterLanguageCode = "cn",
LanguageName = "Chinese",
Url = "https://alphacephei.com/vosk/models/vosk-model-cn-kaldi-multicn-2-lgraph.zip",
},
new DownloadModel
{
TwoLetterLanguageCode = "fr",
LanguageName = "French",
Url = "https://alphacephei.com/vosk/models/vosk-model-small-fr-pguyot-0.3.zip",
},
new DownloadModel
{
TwoLetterLanguageCode = "es",
LanguageName = "Spanish",
Url = "https://alphacephei.com/vosk/models/vosk-model-small-es-0.3.zip",
},
new DownloadModel
{
TwoLetterLanguageCode = "de",
LanguageName = "German",
Url = "https://alphacephei.com/vosk/models/vosk-model-small-de-0.15.zip",
},
new DownloadModel
{
TwoLetterLanguageCode = "pt",
LanguageName = "Portuguese",
Url = "https://alphacephei.com/vosk/models/vosk-model-small-pt-0.3.zip",
},
new DownloadModel
{
TwoLetterLanguageCode = "it",
LanguageName = "Italian",
Url = "https://alphacephei.com/vosk/models/vosk-model-small-it-0.4.zip",
},
new DownloadModel
{
TwoLetterLanguageCode = "nl",
LanguageName = "Dutch",
Url = "https://alphacephei.com/vosk/models/vosk-model-nl-spraakherkenning-0.6-lgraph.zip",
},
new DownloadModel
{
TwoLetterLanguageCode = "sv",
LanguageName = "Swedish",
Url = "https://alphacephei.com/vosk/models/vosk-model-small-sv-rhasspy-0.15.zip",
},
new DownloadModel
{
TwoLetterLanguageCode = "ru",
LanguageName = "Russian",
Url = "https://alphacephei.com/vosk/models/vosk-model-small-ru-0.22.zip",
},
new DownloadModel
{
TwoLetterLanguageCode = "fa",
LanguageName = "Farsi",
Url = "https://alphacephei.com/vosk/models/vosk-model-small-fa-0.5.zip",
},
new DownloadModel
{
TwoLetterLanguageCode = "tr",
LanguageName = "Turkish",
Url = "https://alphacephei.com/vosk/models/vosk-model-small-tr-0.3.zip",
},
new DownloadModel
{
TwoLetterLanguageCode = "el",
LanguageName = "Greek",
Url = "https://alphacephei.com/vosk/models/vosk-model-el-gr-0.7.zip",
},
new DownloadModel
{
TwoLetterLanguageCode = "ar",
LanguageName = "Arabic",
Url = "https://alphacephei.com/vosk/models/vosk-model-ar-mgb2-0.4.zip",
},
new DownloadModel
{
TwoLetterLanguageCode = "uk",
LanguageName = "Ukrainian",
Url = "https://alphacephei.com/vosk/models/vosk-model-small-uk-v3-small.zip",
},
new DownloadModel
{
TwoLetterLanguageCode = "ph",
LanguageName = "Filipino",
Url = "https://alphacephei.com/vosk/models/vosk-model-tl-ph-generic-0.6.zip",
},
new DownloadModel
{
TwoLetterLanguageCode = "kz",
LanguageName = "Kazakh",
Url = "https://alphacephei.com/vosk/models/vosk-model-kz-0.15.zip",
},
new DownloadModel
{
TwoLetterLanguageCode = "jp",
LanguageName = "Japanese",
Url = "https://alphacephei.com/vosk/models/vosk-model-small-ja-0.22.zip",
},
new DownloadModel
{
TwoLetterLanguageCode = "ca",
LanguageName = "Catalan",
Url = "https://alphacephei.com/vosk/models/vosk-model-small-ca-0.4.zip",
},
};
}
}

View File

@ -7,6 +7,7 @@ using System.Diagnostics;
using System.Drawing; using System.Drawing;
using System.Globalization; using System.Globalization;
using System.IO; using System.IO;
using System.Linq;
using System.Windows.Forms; using System.Windows.Forms;
using Vosk; using Vosk;
@ -109,7 +110,7 @@ namespace Nikse.SubtitleEdit.Forms
internal static string GetLanguage(string text) internal static string GetLanguage(string text)
{ {
var languageCodeList = new[] { "en", "ru", "cn", "fr", "sv", "de", "es", "fa", "tr", "ca", "uk", "kz", "ph", "ar", "nl", "el", "pt" }; var languageCodeList = DownloadModel.VoskModels.Select(p => p.TwoLetterLanguageCode);
foreach (var languageCode in languageCodeList) foreach (var languageCode in languageCodeList)
{ {
if (text.Contains("model-" + languageCode) || text.Contains("model-small-" + languageCode) || text.StartsWith(languageCode, StringComparison.OrdinalIgnoreCase)) if (text.Contains("model-" + languageCode) || text.Contains("model-small-" + languageCode) || text.StartsWith(languageCode, StringComparison.OrdinalIgnoreCase))

View File

@ -1,4 +1,5 @@
using Nikse.SubtitleEdit.Core.Common; using Nikse.SubtitleEdit.Core.AudioToText;
using Nikse.SubtitleEdit.Core.Common;
using Nikse.SubtitleEdit.Logic; using Nikse.SubtitleEdit.Logic;
using System; using System;
using System.IO; using System.IO;
@ -11,135 +12,6 @@ namespace Nikse.SubtitleEdit.Forms
{ {
public bool AutoClose { get; internal set; } public bool AutoClose { get; internal set; }
public class DownloadModel
{
public string Url { get; set; }
public string TwoLetterLanguageCode { get; set; }
public string LanguageName { get; set; }
public override string ToString()
{
return LanguageName;
}
}
private readonly DownloadModel[] _voskModels = new[]
{
new DownloadModel
{
TwoLetterLanguageCode = "en",
LanguageName = "English",
Url = "https://alphacephei.com/vosk/models/vosk-model-en-us-0.22-lgraph.zip",
},
new DownloadModel
{
TwoLetterLanguageCode = "cn",
LanguageName = "Chinese",
Url = "https://alphacephei.com/vosk/models/vosk-model-cn-kaldi-multicn-2-lgraph.zip",
},
new DownloadModel
{
TwoLetterLanguageCode = "fr",
LanguageName = "French",
Url = "https://alphacephei.com/vosk/models/vosk-model-small-fr-pguyot-0.3.zip",
},
new DownloadModel
{
TwoLetterLanguageCode = "es",
LanguageName = "Spanish",
Url = "https://alphacephei.com/vosk/models/vosk-model-small-es-0.3.zip",
},
new DownloadModel
{
TwoLetterLanguageCode = "de",
LanguageName = "German",
Url = "https://alphacephei.com/vosk/models/vosk-model-small-de-0.15.zip",
},
new DownloadModel
{
TwoLetterLanguageCode = "pt",
LanguageName = "Portuguese",
Url = "https://alphacephei.com/vosk/models/vosk-model-small-pt-0.3.zip",
},
new DownloadModel
{
TwoLetterLanguageCode = "it",
LanguageName = "Italian",
Url = "https://alphacephei.com/vosk/models/vosk-model-small-it-0.4.zip",
},
new DownloadModel
{
TwoLetterLanguageCode = "nl",
LanguageName = "Dutch",
Url = "https://alphacephei.com/vosk/models/vosk-model-nl-spraakherkenning-0.6-lgraph.zip",
},
new DownloadModel
{
TwoLetterLanguageCode = "sv",
LanguageName = "Swedish",
Url = "https://alphacephei.com/vosk/models/vosk-model-small-sv-rhasspy-0.15.zip",
},
new DownloadModel
{
TwoLetterLanguageCode = "ru",
LanguageName = "Russian",
Url = "https://alphacephei.com/vosk/models/vosk-model-small-ru-0.22.zip",
},
new DownloadModel
{
TwoLetterLanguageCode = "fa",
LanguageName = "Farsi",
Url = "https://alphacephei.com/vosk/models/vosk-model-small-fa-0.5.zip",
},
new DownloadModel
{
TwoLetterLanguageCode = "tr",
LanguageName = "Turkish",
Url = "https://alphacephei.com/vosk/models/vosk-model-small-tr-0.3.zip",
},
new DownloadModel
{
TwoLetterLanguageCode = "el",
LanguageName = "Greek",
Url = "https://alphacephei.com/vosk/models/vosk-model-el-gr-0.7.zip",
},
new DownloadModel
{
TwoLetterLanguageCode = "ar",
LanguageName = "Arabic",
Url = "https://alphacephei.com/vosk/models/vosk-model-ar-mgb2-0.4.zip",
},
new DownloadModel
{
TwoLetterLanguageCode = "uk",
LanguageName = "Ukrainian",
Url = "https://alphacephei.com/vosk/models/vosk-model-small-uk-v3-small.zip",
},
new DownloadModel
{
TwoLetterLanguageCode = "ph",
LanguageName = "Filipino",
Url = "https://alphacephei.com/vosk/models/vosk-model-tl-ph-generic-0.6.zip",
},
new DownloadModel
{
TwoLetterLanguageCode = "kz",
LanguageName = "Kazakh",
Url = "https://alphacephei.com/vosk/models/vosk-model-kz-0.15.zip",
},
new DownloadModel
{
TwoLetterLanguageCode = "jp",
LanguageName = "Japanese",
Url = "https://alphacephei.com/vosk/models/vosk-model-small-ja-0.22.zip",
},
new DownloadModel
{
TwoLetterLanguageCode = "ca",
LanguageName = "Catalan",
Url = "https://alphacephei.com/vosk/models/vosk-model-small-ca-0.4.zip",
},
};
public AudioToTextModelDownload() public AudioToTextModelDownload()
{ {
UiUtil.PreInitialize(this); UiUtil.PreInitialize(this);
@ -150,7 +22,7 @@ namespace Nikse.SubtitleEdit.Forms
buttonCancel.Text = LanguageSettings.Current.General.Cancel; buttonCancel.Text = LanguageSettings.Current.General.Cancel;
UiUtil.FixLargeFonts(this, buttonDownload); UiUtil.FixLargeFonts(this, buttonDownload);
foreach (var downloadModel in _voskModels) foreach (var downloadModel in DownloadModel.VoskModels)
{ {
comboBoxModels.Items.Add(downloadModel); comboBoxModels.Items.Add(downloadModel);
} }
@ -181,7 +53,7 @@ namespace Nikse.SubtitleEdit.Forms
buttonDownload.Enabled = false; buttonDownload.Enabled = false;
Refresh(); Refresh();
Cursor = Cursors.WaitCursor; Cursor = Cursors.WaitCursor;
string url = downloadModel.Url; var url = downloadModel.Url;
var wc = new WebClient { Proxy = Utilities.GetProxy() }; var wc = new WebClient { Proxy = Utilities.GetProxy() };
wc.DownloadDataCompleted += wc_DownloadDataCompleted; wc.DownloadDataCompleted += wc_DownloadDataCompleted;