Merge remote-tracking branch 'remote/main' into feature/proxy-2

# Conflicts:
#	src/ui/Forms/Tts/TextToSpeech.cs
This commit is contained in:
Ivandro Jao 2024-10-27 17:48:38 +00:00
commit 34a25473bd
13 changed files with 488 additions and 286 deletions

View File

@ -13,8 +13,13 @@
* Update Polish translation - thx admas
* Update Italian translation - thx bovirus
* Update Romanian installer translation - thx mircea
* Update Dutch translation - thx Flitskikker
* Update Whisper CPP to V1.7.1
* Update ffmpeg to 7.1
* Improvements for "Beautify time codes" - thx Flitskikker
* Add new options for TTS with ElevenLabs - thx cvrle77
* Add large-v3-turbo to Whisper OpenAI/CPP
* Update Anthropic Claude Sonnet model name to "claude-3-5-sonnet-latest"
* Minor improvements for color picker - thx MitchSirco/Siamak
* Fix some wrong OCR (English) corrections - thx Zoltan
* Add Icelandic language to ChatGPT + Gemini - thx dhofverberg

View File

@ -2540,14 +2540,14 @@ can edit in same subtitle file (collaboration)</Information>
<ContinuationStyleCustom>Custom</ContinuationStyleCustom>
<CpsLineLengthStyle>Cps/line-length</CpsLineLengthStyle>
<CpsLineLengthStyleCalcAll>Count all characters</CpsLineLengthStyleCalcAll>
<CpsLineLengthStyleCalcNoSpaceCpsOnly>Count all except space, cps only</CpsLineLengthStyleCalcNoSpaceCpsOnly>
<CpsLineLengthStyleCalcNoSpaceCpsOnly>Count all except space, CPS only</CpsLineLengthStyleCalcNoSpaceCpsOnly>
<CpsLineLengthStyleCalcNoSpace>Count all except space</CpsLineLengthStyleCalcNoSpace>
<CpsLineLengthStyleCalcCjk>CJK 1, Latin 0.5</CpsLineLengthStyleCalcCjk>
<CpsLineLengthStyleCalcCjkNoSpace>CJK 1, Latin 0.5, space 0</CpsLineLengthStyleCalcCjkNoSpace>
<CpsLineLengthStyleCalcIncludeCompositionCharacters>Include composition characters</CpsLineLengthStyleCalcIncludeCompositionCharacters>
<CpsLineLengthStyleCalcIncludeCompositionCharactersNotSpace>Include composition characters, not space</CpsLineLengthStyleCalcIncludeCompositionCharactersNotSpace>
<CpsLineLengthStyleCalcNoSpaceOrPunctuation>No space or punctuation ()[]-:;,.!?</CpsLineLengthStyleCalcNoSpaceOrPunctuation>
<CpsLineLengthStyleCalcNoSpaceOrPunctuationCpsOnly>No space or punctuation, cps only</CpsLineLengthStyleCalcNoSpaceOrPunctuationCpsOnly>
<CpsLineLengthStyleCalcNoSpaceOrPunctuationCpsOnly>No space or punctuation, CPS only</CpsLineLengthStyleCalcNoSpaceOrPunctuationCpsOnly>
<MusicSymbol>Music symbol</MusicSymbol>
<MusicSymbolsReplace>Music symbols to replace (separate by comma)</MusicSymbolsReplace>
<FixCommonOcrErrorsUseHardcodedRules>Fix common OCR errors - also use hard-coded rules</FixCommonOcrErrorsUseHardcodedRules>

View File

@ -36,6 +36,7 @@
<s:Boolean x:Key="/Default/UserDictionary/Words/=Groq/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Immersive/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Imsc/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Lappish/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Libre/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Matroska/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Nikse/@EntryIndexedValue">True</s:Boolean>
@ -43,6 +44,7 @@
<s:Boolean x:Key="/Default/UserDictionary/Words/=Nuendo/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Ollama/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Persistable/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Programme/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Purfview/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Spectrograms/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Stbl/@EntryIndexedValue">True</s:Boolean>
@ -54,4 +56,5 @@
<s:Boolean x:Key="/Default/UserDictionary/Words/=Undocked/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Unescape/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Vanc/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Vosk/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Vosk/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Wallon/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>

View File

@ -14,6 +14,8 @@ namespace Nikse.SubtitleEdit.Core.Forms.FixCommonErrors
{
var fixAction = Language.RemoveDialogFirstInNonDialogs;
var noOfFixes = 0;
const char hyphenMinus = '-'; // Hyphen-Minus (-, U+002D)
const char hyphen = ''; // Hyphen (, U+2010)
for (int i = 0; i < subtitle.Paragraphs.Count; i++)
{
var p = subtitle.Paragraphs[i];
@ -22,15 +24,15 @@ namespace Nikse.SubtitleEdit.Core.Forms.FixCommonErrors
var noHtml = HtmlUtil.RemoveHtmlTags(text, true).TrimStart();
var count = Utilities.CountTagInText(text, '-') + Utilities.CountTagInText(text, '');
if (count == 0 || !noHtml.StartsWith('-') && !noHtml.StartsWith(''))
var count = Utilities.CountTagInText(text, hyphenMinus) + Utilities.CountTagInText(text, hyphen);
if (count == 0 || !noHtml.StartsWith(hyphenMinus) && !noHtml.StartsWith(hyphen))
{
continue;
}
// test the two different dashes
text = RemoveDash(text, noHtml, '-');
text = RemoveDash(text, noHtml, '');
text = RemoveDash(text, noHtml, hyphenMinus);
text = RemoveDash(text, noHtml, hyphen);
if (oldText != text && callbacks.AllowFix(p, fixAction))
{

View File

@ -168,7 +168,7 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
return 60.0;
}
return 30.0; // should be DiskFormatcode STL30.01
return 30.0; // should be DiskFormatCode STL30.01
}
}
@ -282,34 +282,28 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
CommentFlag = 0;
}
public byte[] GetBytes(EbuGeneralSubtitleInformation header)
public byte[] GetBytesExtra(EbuGeneralSubtitleInformation header, MemoryStream extra)
{
var buffer = new byte[128]; // Text and Timing Information (TTI) block consists of 128 bytes
var buffer = SaveHeader(header);
var bytes = extra.ToArray();
for (var i = 0; i < 112; i++)
{
if (i < bytes.Length)
{
buffer[16 + i] = bytes[i];
}
else
{
buffer[16 + i] = 0x8f;
}
}
buffer[0] = SubtitleGroupNumber;
var temp = BitConverter.GetBytes(SubtitleNumber);
buffer[1] = temp[0];
buffer[2] = temp[1];
buffer[3] = ExtensionBlockNumber;
buffer[4] = CumulativeStatus;
return buffer;
}
var frames = GetFrameFromMilliseconds(TimeCodeInMilliseconds, header.FrameRate, out var extraSeconds);
var tc = new TimeCode(TimeCodeInHours, TimeCodeInMinutes, TimeCodeInSeconds + extraSeconds, 0);
buffer[5] = (byte)tc.Hours;
buffer[6] = (byte)tc.Minutes;
buffer[7] = (byte)tc.Seconds;
buffer[8] = frames;
frames = GetFrameFromMilliseconds(TimeCodeOutMilliseconds, header.FrameRate, out extraSeconds);
tc = new TimeCode(TimeCodeOutHours, TimeCodeOutMinutes, TimeCodeOutSeconds + extraSeconds, 0);
buffer[9] = (byte)tc.Hours;
buffer[10] = (byte)tc.Minutes;
buffer[11] = (byte)tc.Seconds;
buffer[12] = frames;
buffer[13] = VerticalPosition;
buffer[14] = JustificationCode;
buffer[15] = CommentFlag;
public byte[] GetBytes(EbuGeneralSubtitleInformation header, MemoryStream extra)
{
var buffer = SaveHeader(header);
var encoding = GetEncoding(header.CodePageNumber);
if (header.LanguageCode == LanguageCodeChinese)
@ -340,6 +334,11 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
}
}
if (byteList.Count > 112)
{
extra.Write(byteList.ToArray(), 112, byteList.Count - 112);
}
return buffer;
}
@ -572,6 +571,43 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
buffer[16 + i] = 0x8f;
}
}
if (bytes.Length > 112)
{
extra.Write(bytes, 112, bytes.Length - 112);
}
return buffer;
}
private byte[] SaveHeader(EbuGeneralSubtitleInformation header)
{
var buffer = new byte[128]; // Text and Timing Information (TTI) block consists of 128 bytes
buffer[0] = SubtitleGroupNumber;
var temp = BitConverter.GetBytes(SubtitleNumber);
buffer[1] = temp[0];
buffer[2] = temp[1];
buffer[3] = ExtensionBlockNumber;
buffer[4] = CumulativeStatus;
var frames = GetFrameFromMilliseconds(TimeCodeInMilliseconds, header.FrameRate, out var extraSeconds);
var tc = new TimeCode(TimeCodeInHours, TimeCodeInMinutes, TimeCodeInSeconds + extraSeconds, 0);
buffer[5] = (byte)tc.Hours;
buffer[6] = (byte)tc.Minutes;
buffer[7] = (byte)tc.Seconds;
buffer[8] = frames;
frames = GetFrameFromMilliseconds(TimeCodeOutMilliseconds, header.FrameRate, out extraSeconds);
tc = new TimeCode(TimeCodeOutHours, TimeCodeOutMinutes, TimeCodeOutSeconds + extraSeconds, 0);
buffer[9] = (byte)tc.Hours;
buffer[10] = (byte)tc.Minutes;
buffer[11] = (byte)tc.Seconds;
buffer[12] = frames;
buffer[13] = VerticalPosition;
buffer[14] = JustificationCode;
buffer[15] = CommentFlag;
return buffer;
}
@ -1532,8 +1568,20 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
tti.TimeCodeOutMilliseconds = p.EndTime.Milliseconds;
}
buffer = tti.GetBytes(header);
stream.Write(buffer, 0, buffer.Length);
var extra = new MemoryStream();
buffer = tti.GetBytes(header, extra);
if (extra.Length > 0)
{
buffer[3] = 0; // ExtensionBlockNumber
stream.Write(buffer, 0, buffer.Length);
buffer = tti.GetBytesExtra(header, extra);
stream.Write(buffer, 0, buffer.Length);
}
else
{
stream.Write(buffer, 0, buffer.Length);
}
subtitleNumber++;
}
return true;
@ -1606,8 +1654,8 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
{
try
{
byte[] buffer = FileUtil.ReadAllBytesShared(fileName);
EbuGeneralSubtitleInformation header = ReadHeader(buffer);
var buffer = FileUtil.ReadAllBytesShared(fileName);
var header = ReadHeader(buffer);
if (header.DiskFormatCode.StartsWith("STL23", StringComparison.Ordinal) ||
header.DiskFormatCode.StartsWith("STL24", StringComparison.Ordinal) ||
header.DiskFormatCode.StartsWith("STL25", StringComparison.Ordinal) ||

View File

@ -51,7 +51,7 @@ namespace Nikse.SubtitleEdit.Forms
private void DownloadFfmpeg_Shown(object sender, EventArgs e)
{
var url = "https://github.com/SubtitleEdit/support-files/releases/download/ffmpeg-2024-05/ffmpeg-2024-05-23.zip";
var url = "https://github.com/SubtitleEdit/support-files/releases/download/ffmpeg-v7-1/ffmpeg-7.1.zip";
if (IntPtr.Size == 32)
{
url = "https://github.com/SubtitleEdit/support-files/releases/download/ffmpegwin32v5.1/ffmpeg-win32-n5.1.zip";
@ -59,7 +59,7 @@ namespace Nikse.SubtitleEdit.Forms
if (_title.Contains("ffprobe", StringComparison.OrdinalIgnoreCase))
{
url = "https://github.com/SubtitleEdit/support-files/releases/download/ffmpeg-2024-03-25/ffprobe-2024-03-25-git-ecdc94b97f.zip";
url = "https://github.com/SubtitleEdit/support-files/releases/download/ffmpeg-v7-1/ffprobe-7.1.zip";
}
try
@ -115,8 +115,8 @@ namespace Nikse.SubtitleEdit.Forms
var sha512Hashes = new[]
{
"c07de58f2006565d7864bea7f3f8e0648e3b0596b0bab94fb1d8ff5a18ea7626bacc8c5206049549c01cda5176350df311e469d6f1f2bf99d968d55817852d4d", // ffprobe-2024-03-25-git-ecdc94b97f
"fe70d60e9fc0a59c24c0be15f0a8d8af33f1fb7d0027b6fcccce72b6dc41a4023ae276d3e033010b6f628ca6c8d34fc932052622e16a23b5258ec959d20daca9", // ffmpeg-2024-05-23
"42a42cbed3175165a71cc573960306f422373a3f30864cf81b476675bdb485aca81d904f1f5c67b0a3397b62a468ca4a4fcad6507103e7b8908e56ab63be6255", // ffmpeg
"74db8a0b8226c3104c52a986f3bd000b6eb57ab4a017d44aa10c00fb9310ce06a634e581cce76c5d82410dfd7b6cddfaceb8b7bdca17ee6c39e7213843041ab4", // ffprobe
};
var hash = Utilities.GetSha512Hash(downloadStream.ToArray());
if (!sha512Hashes.Contains(hash))

View File

@ -36,6 +36,10 @@
this.buttonPlay = new System.Windows.Forms.Button();
this.nikseComboBoxVoice = new Nikse.SubtitleEdit.Controls.NikseComboBox();
this.TextBoxReGenerate = new Nikse.SubtitleEdit.Controls.NikseTextBox();
this.nikseUpDownStability = new Nikse.SubtitleEdit.Controls.NikseUpDown();
this.nikseUpDownSimilarity = new Nikse.SubtitleEdit.Controls.NikseUpDown();
this.labelSimilarity = new Nikse.SubtitleEdit.Controls.NikseLabel();
this.labelStability = new Nikse.SubtitleEdit.Controls.NikseLabel();
this.SuspendLayout();
//
// buttonCancel
@ -57,7 +61,7 @@
this.buttonReGenerate.Location = new System.Drawing.Point(362, 208);
this.buttonReGenerate.Name = "buttonReGenerate";
this.buttonReGenerate.Size = new System.Drawing.Size(171, 24);
this.buttonReGenerate.TabIndex = 21;
this.buttonReGenerate.TabIndex = 4;
this.buttonReGenerate.Text = "Regenerate ";
this.buttonReGenerate.UseVisualStyleBackColor = true;
this.buttonReGenerate.Click += new System.EventHandler(this.buttonReGenerate_Click);
@ -89,7 +93,7 @@
this.buttonOK.Location = new System.Drawing.Point(640, 208);
this.buttonOK.Name = "buttonOK";
this.buttonOK.Size = new System.Drawing.Size(84, 24);
this.buttonOK.TabIndex = 26;
this.buttonOK.TabIndex = 6;
this.buttonOK.Text = "OK";
this.buttonOK.UseVisualStyleBackColor = true;
this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click);
@ -101,7 +105,7 @@
this.buttonPlay.Location = new System.Drawing.Point(539, 208);
this.buttonPlay.Name = "buttonPlay";
this.buttonPlay.Size = new System.Drawing.Size(95, 24);
this.buttonPlay.TabIndex = 27;
this.buttonPlay.TabIndex = 5;
this.buttonPlay.Text = "Play";
this.buttonPlay.UseVisualStyleBackColor = true;
this.buttonPlay.Click += new System.EventHandler(this.buttonPlay_Click);
@ -127,7 +131,7 @@
this.nikseComboBoxVoice.SelectedItem = null;
this.nikseComboBoxVoice.SelectedText = "";
this.nikseComboBoxVoice.Size = new System.Drawing.Size(278, 23);
this.nikseComboBoxVoice.TabIndex = 23;
this.nikseComboBoxVoice.TabIndex = 3;
this.nikseComboBoxVoice.UsePopupWindow = false;
//
// TextBoxReGenerate
@ -139,14 +143,116 @@
this.TextBoxReGenerate.Location = new System.Drawing.Point(12, 40);
this.TextBoxReGenerate.Multiline = true;
this.TextBoxReGenerate.Name = "TextBoxReGenerate";
this.TextBoxReGenerate.Size = new System.Drawing.Size(802, 162);
this.TextBoxReGenerate.TabIndex = 22;
this.TextBoxReGenerate.Size = new System.Drawing.Size(802, 126);
this.TextBoxReGenerate.TabIndex = 0;
//
// nikseUpDownStability
//
this.nikseUpDownStability.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.nikseUpDownStability.BackColor = System.Drawing.SystemColors.Window;
this.nikseUpDownStability.BackColorDisabled = System.Drawing.Color.FromArgb(((int)(((byte)(240)))), ((int)(((byte)(240)))), ((int)(((byte)(240)))));
this.nikseUpDownStability.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(173)))), ((int)(((byte)(179)))));
this.nikseUpDownStability.BorderColorDisabled = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
this.nikseUpDownStability.ButtonForeColor = System.Drawing.SystemColors.ControlText;
this.nikseUpDownStability.ButtonForeColorDown = System.Drawing.Color.Orange;
this.nikseUpDownStability.ButtonForeColorOver = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(120)))), ((int)(((byte)(215)))));
this.nikseUpDownStability.DecimalPlaces = 0;
this.nikseUpDownStability.Increment = new decimal(new int[] {
1,
0,
0,
0});
this.nikseUpDownStability.Location = new System.Drawing.Point(78, 179);
this.nikseUpDownStability.Maximum = new decimal(new int[] {
100,
0,
0,
0});
this.nikseUpDownStability.Minimum = new decimal(new int[] {
0,
0,
0,
0});
this.nikseUpDownStability.Name = "nikseUpDownStability";
this.nikseUpDownStability.Size = new System.Drawing.Size(75, 23);
this.nikseUpDownStability.TabIndex = 1;
this.nikseUpDownStability.TabStop = false;
this.nikseUpDownStability.Text = "nikseUpDownStability";
this.nikseUpDownStability.ThousandsSeparator = false;
this.nikseUpDownStability.Value = new decimal(new int[] {
0,
0,
0,
0});
//
// nikseUpDownSimilarity
//
this.nikseUpDownSimilarity.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.nikseUpDownSimilarity.BackColor = System.Drawing.SystemColors.Window;
this.nikseUpDownSimilarity.BackColorDisabled = System.Drawing.Color.FromArgb(((int)(((byte)(240)))), ((int)(((byte)(240)))), ((int)(((byte)(240)))));
this.nikseUpDownSimilarity.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(173)))), ((int)(((byte)(179)))));
this.nikseUpDownSimilarity.BorderColorDisabled = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
this.nikseUpDownSimilarity.ButtonForeColor = System.Drawing.SystemColors.ControlText;
this.nikseUpDownSimilarity.ButtonForeColorDown = System.Drawing.Color.Orange;
this.nikseUpDownSimilarity.ButtonForeColorOver = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(120)))), ((int)(((byte)(215)))));
this.nikseUpDownSimilarity.DecimalPlaces = 0;
this.nikseUpDownSimilarity.Increment = new decimal(new int[] {
1,
0,
0,
0});
this.nikseUpDownSimilarity.Location = new System.Drawing.Point(231, 179);
this.nikseUpDownSimilarity.Maximum = new decimal(new int[] {
100,
0,
0,
0});
this.nikseUpDownSimilarity.Minimum = new decimal(new int[] {
0,
0,
0,
0});
this.nikseUpDownSimilarity.Name = "nikseUpDownSimilarity";
this.nikseUpDownSimilarity.Size = new System.Drawing.Size(75, 23);
this.nikseUpDownSimilarity.TabIndex = 2;
this.nikseUpDownSimilarity.TabStop = false;
this.nikseUpDownSimilarity.Text = "nikseUpDownSimilarity";
this.nikseUpDownSimilarity.ThousandsSeparator = false;
this.nikseUpDownSimilarity.Value = new decimal(new int[] {
0,
0,
0,
0});
//
// labelSimilarity
//
this.labelSimilarity.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.labelSimilarity.AutoSize = true;
this.labelSimilarity.Location = new System.Drawing.Point(178, 183);
this.labelSimilarity.Name = "labelSimilarity";
this.labelSimilarity.Size = new System.Drawing.Size(47, 13);
this.labelSimilarity.TabIndex = 103;
this.labelSimilarity.Text = "Similarity";
//
// labelStability
//
this.labelStability.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.labelStability.AutoSize = true;
this.labelStability.Location = new System.Drawing.Point(29, 183);
this.labelStability.Name = "labelStability";
this.labelStability.Size = new System.Drawing.Size(43, 13);
this.labelStability.TabIndex = 102;
this.labelStability.Text = "Stability";
//
// RegenerateAudioClip
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(826, 243);
this.Controls.Add(this.nikseUpDownStability);
this.Controls.Add(this.nikseUpDownSimilarity);
this.Controls.Add(this.labelSimilarity);
this.Controls.Add(this.labelStability);
this.Controls.Add(this.buttonPlay);
this.Controls.Add(this.buttonOK);
this.Controls.Add(this.labelText);
@ -177,5 +283,9 @@
private System.Windows.Forms.Label labelText;
private System.Windows.Forms.Button buttonOK;
private System.Windows.Forms.Button buttonPlay;
private Controls.NikseUpDown nikseUpDownStability;
private Controls.NikseUpDown nikseUpDownSimilarity;
private Controls.NikseLabel labelSimilarity;
private Controls.NikseLabel labelStability;
}
}

View File

@ -16,7 +16,7 @@ namespace Nikse.SubtitleEdit.Forms.Tts
private readonly int _index;
private LibMpvDynamic _libMpv;
public RegenerateAudioClip(TextToSpeech textToSpeech, Subtitle subtitle, int idx)
public RegenerateAudioClip(TextToSpeech textToSpeech, Subtitle subtitle, int idx, TextToSpeech.TextToSpeechEngine engine)
{
UiUtil.PreInitialize(this);
InitializeComponent();
@ -29,6 +29,8 @@ namespace Nikse.SubtitleEdit.Forms.Tts
Text = LanguageSettings.Current.ExportCustomText.Edit;
labelText.Text = LanguageSettings.Current.General.Text;
labelVoice.Text = LanguageSettings.Current.TextToSpeech.Voice;
labelStability.Text = LanguageSettings.Current.TextToSpeech.Stability;
labelSimilarity.Text = LanguageSettings.Current.TextToSpeech.Similarity;
buttonReGenerate.Text = LanguageSettings.Current.TextToSpeech.Regenerate;
buttonCancel.Text = LanguageSettings.Current.General.Cancel;
buttonOK.Text = LanguageSettings.Current.General.Ok;
@ -38,10 +40,27 @@ namespace Nikse.SubtitleEdit.Forms.Tts
TextBoxReGenerate.Text = subtitle.Paragraphs[idx].Text;
textToSpeech.SetCurrentVoices(nikseComboBoxVoice);
buttonPlay.Enabled = false;
nikseUpDownStability.Value = (int)Math.Round(Configuration.Settings.Tools.TextToSpeechElevenLabsStability * 100.0);
nikseUpDownSimilarity.Value = (int)Math.Round(Configuration.Settings.Tools.TextToSpeechElevenLabsSimilarity * 100.0);
if (engine.Id != TextToSpeech.TextToSpeechEngineId.ElevenLabs)
{
labelStability.Visible = false;
labelSimilarity.Visible = false;
nikseUpDownStability.Visible = false;
nikseUpDownSimilarity.Visible = false;
TextBoxReGenerate.Height = buttonOK.Top - TextBoxReGenerate.Top - 10;
nikseUpDownSimilarity.Left = labelSimilarity.Right + 3;
}
}
private void buttonReGenerate_Click(object sender, EventArgs e)
{
_libMpv?.Stop();
Configuration.Settings.Tools.TextToSpeechElevenLabsStability = (double)nikseUpDownStability.Value / 100.0;
Configuration.Settings.Tools.TextToSpeechElevenLabsSimilarity = (double)nikseUpDownSimilarity.Value / 100.0;
var paragraph = _subtitle.Paragraphs[_index];
paragraph.Text = TextBoxReGenerate.Text.Trim();
@ -69,21 +88,26 @@ namespace Nikse.SubtitleEdit.Forms.Tts
private void buttonCancel_Click(object sender, EventArgs e)
{
_libMpv?.Stop();
DialogResult = DialogResult.Cancel;
}
private void buttonOK_Click(object sender, EventArgs e)
{
_libMpv?.Stop();
DialogResult = DialogResult.OK;
}
private void buttonPlay_Click(object sender, EventArgs e)
{
_libMpv?.Stop();
if (FileNameAndSpeedFactor == null)
{
return;
}
buttonPlay.Enabled = false;
var waveFileName = FileNameAndSpeedFactor.Filename;
if (_libMpv != null)
@ -116,6 +140,7 @@ namespace Nikse.SubtitleEdit.Forms.Tts
using (var soundPlayer = new System.Media.SoundPlayer(waveFileName))
{
soundPlayer.PlaySync();
buttonPlay.Enabled = true;
}
}
}

View File

@ -23,8 +23,9 @@ namespace Nikse.SubtitleEdit.Forms.Tts
private bool _playing;
private LibMpvDynamic _libMpv;
private Timer _mpvDoneTimer;
private TextToSpeech.TextToSpeechEngine _engine;
public ReviewAudioClips(TextToSpeech textToSpeech, Subtitle subtitle, List<TextToSpeech.FileNameAndSpeedFactor> fileNames)
public ReviewAudioClips(TextToSpeech textToSpeech, Subtitle subtitle, List<TextToSpeech.FileNameAndSpeedFactor> fileNames, TextToSpeech.TextToSpeechEngine engine)
{
UiUtil.PreInitialize(this);
InitializeComponent();
@ -45,6 +46,7 @@ namespace Nikse.SubtitleEdit.Forms.Tts
_textToSpeech = textToSpeech;
_subtitle = subtitle;
_fileNames = fileNames;
_engine = engine;
SkipIndices = new List<int>();
@ -204,6 +206,7 @@ namespace Nikse.SubtitleEdit.Forms.Tts
return;
}
_libMpv?.Stop();
buttonPlay.Enabled = false;
_playing = true;
_abortPlay = false;
@ -263,8 +266,10 @@ namespace Nikse.SubtitleEdit.Forms.Tts
return;
}
buttonStop_Click(null, null);
var idx = listViewAudioClips.SelectedItems[0].Index;
using (var form = new RegenerateAudioClip(_textToSpeech, _subtitle, idx))
using (var form = new RegenerateAudioClip(_textToSpeech, _subtitle, idx, _engine))
{
var dr = form.ShowDialog(this);
if (dr == DialogResult.OK)

View File

@ -35,34 +35,34 @@
this.progressBar1 = new System.Windows.Forms.ProgressBar();
this.labelEngine = new System.Windows.Forms.Label();
this.groupBoxSettings = new System.Windows.Forms.GroupBox();
this.nikseUpDownStability = new Nikse.SubtitleEdit.Controls.NikseUpDown();
this.nikseUpDownSimilarity = new Nikse.SubtitleEdit.Controls.NikseUpDown();
this.labelSimilarity = new Nikse.SubtitleEdit.Controls.NikseLabel();
this.labelStability = new Nikse.SubtitleEdit.Controls.NikseLabel();
this.labelLanguage = new System.Windows.Forms.Label();
this.nikseComboBoxLanguage = new Nikse.SubtitleEdit.Controls.NikseComboBox();
this.linkLabelCustomAudio = new System.Windows.Forms.LinkLabel();
this.checkBoxAudioEncoding = new System.Windows.Forms.CheckBox();
this.labelRegion = new System.Windows.Forms.Label();
this.nikseComboBoxRegion = new Nikse.SubtitleEdit.Controls.NikseComboBox();
this.labelVoiceCount = new System.Windows.Forms.Label();
this.checkBoxShowPreview = new System.Windows.Forms.CheckBox();
this.labelApiKey = new System.Windows.Forms.Label();
this.nikseTextBoxApiKey = new Nikse.SubtitleEdit.Controls.NikseTextBox();
this.TextBoxTest = new Nikse.SubtitleEdit.Controls.NikseTextBox();
this.buttonTestVoice = new System.Windows.Forms.Button();
this.checkBoxAddToVideoFile = new System.Windows.Forms.CheckBox();
this.labelVoice = new System.Windows.Forms.Label();
this.nikseComboBoxVoice = new Nikse.SubtitleEdit.Controls.NikseComboBox();
this.contextMenuStripVoices = new System.Windows.Forms.ContextMenuStrip(this.components);
this.refreshVoicesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.nikseComboBoxEngine = new Nikse.SubtitleEdit.Controls.NikseComboBox();
this.listViewActors = new System.Windows.Forms.ListView();
this.columnHeaderActor = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.columnHeaderVoice = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.contextMenuStripActors = new System.Windows.Forms.ContextMenuStrip(this.components);
this.labelActors = new System.Windows.Forms.Label();
this.buttonCancel = new System.Windows.Forms.Button();
this.nikseUpDownStability = new Nikse.SubtitleEdit.Controls.NikseUpDown();
this.nikseUpDownSimilarity = new Nikse.SubtitleEdit.Controls.NikseUpDown();
this.labelSimilarity = new Nikse.SubtitleEdit.Controls.NikseLabel();
this.labelStability = new Nikse.SubtitleEdit.Controls.NikseLabel();
this.nikseComboBoxLanguage = new Nikse.SubtitleEdit.Controls.NikseComboBox();
this.nikseComboBoxRegion = new Nikse.SubtitleEdit.Controls.NikseComboBox();
this.nikseTextBoxApiKey = new Nikse.SubtitleEdit.Controls.NikseTextBox();
this.TextBoxTest = new Nikse.SubtitleEdit.Controls.NikseTextBox();
this.nikseComboBoxVoice = new Nikse.SubtitleEdit.Controls.NikseComboBox();
this.nikseComboBoxEngine = new Nikse.SubtitleEdit.Controls.NikseComboBox();
this.groupBoxSettings.SuspendLayout();
this.contextMenuStripVoices.SuspendLayout();
this.SuspendLayout();
@ -153,6 +153,100 @@
this.groupBoxSettings.TabStop = false;
this.groupBoxSettings.Text = "Settings";
//
// nikseUpDownStability
//
this.nikseUpDownStability.BackColor = System.Drawing.SystemColors.Window;
this.nikseUpDownStability.BackColorDisabled = System.Drawing.Color.FromArgb(((int)(((byte)(240)))), ((int)(((byte)(240)))), ((int)(((byte)(240)))));
this.nikseUpDownStability.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(173)))), ((int)(((byte)(179)))));
this.nikseUpDownStability.BorderColorDisabled = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
this.nikseUpDownStability.ButtonForeColor = System.Drawing.SystemColors.ControlText;
this.nikseUpDownStability.ButtonForeColorDown = System.Drawing.Color.Orange;
this.nikseUpDownStability.ButtonForeColorOver = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(120)))), ((int)(((byte)(215)))));
this.nikseUpDownStability.DecimalPlaces = 0;
this.nikseUpDownStability.Increment = new decimal(new int[] {
1,
0,
0,
0});
this.nikseUpDownStability.Location = new System.Drawing.Point(102, 298);
this.nikseUpDownStability.Maximum = new decimal(new int[] {
100,
0,
0,
0});
this.nikseUpDownStability.Minimum = new decimal(new int[] {
0,
0,
0,
0});
this.nikseUpDownStability.Name = "nikseUpDownStability";
this.nikseUpDownStability.Size = new System.Drawing.Size(75, 23);
this.nikseUpDownStability.TabIndex = 34;
this.nikseUpDownStability.TabStop = false;
this.nikseUpDownStability.Text = "nikseUpDownStability";
this.nikseUpDownStability.ThousandsSeparator = false;
this.nikseUpDownStability.Value = new decimal(new int[] {
0,
0,
0,
0});
//
// nikseUpDownSimilarity
//
this.nikseUpDownSimilarity.BackColor = System.Drawing.SystemColors.Window;
this.nikseUpDownSimilarity.BackColorDisabled = System.Drawing.Color.FromArgb(((int)(((byte)(240)))), ((int)(((byte)(240)))), ((int)(((byte)(240)))));
this.nikseUpDownSimilarity.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(173)))), ((int)(((byte)(179)))));
this.nikseUpDownSimilarity.BorderColorDisabled = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
this.nikseUpDownSimilarity.ButtonForeColor = System.Drawing.SystemColors.ControlText;
this.nikseUpDownSimilarity.ButtonForeColorDown = System.Drawing.Color.Orange;
this.nikseUpDownSimilarity.ButtonForeColorOver = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(120)))), ((int)(((byte)(215)))));
this.nikseUpDownSimilarity.DecimalPlaces = 0;
this.nikseUpDownSimilarity.Increment = new decimal(new int[] {
1,
0,
0,
0});
this.nikseUpDownSimilarity.Location = new System.Drawing.Point(251, 298);
this.nikseUpDownSimilarity.Maximum = new decimal(new int[] {
100,
0,
0,
0});
this.nikseUpDownSimilarity.Minimum = new decimal(new int[] {
0,
0,
0,
0});
this.nikseUpDownSimilarity.Name = "nikseUpDownSimilarity";
this.nikseUpDownSimilarity.Size = new System.Drawing.Size(75, 23);
this.nikseUpDownSimilarity.TabIndex = 35;
this.nikseUpDownSimilarity.TabStop = false;
this.nikseUpDownSimilarity.Text = "nikseUpDownSimilarity";
this.nikseUpDownSimilarity.ThousandsSeparator = false;
this.nikseUpDownSimilarity.Value = new decimal(new int[] {
0,
0,
0,
0});
//
// labelSimilarity
//
this.labelSimilarity.AutoSize = true;
this.labelSimilarity.Location = new System.Drawing.Point(198, 302);
this.labelSimilarity.Name = "labelSimilarity";
this.labelSimilarity.Size = new System.Drawing.Size(47, 13);
this.labelSimilarity.TabIndex = 99;
this.labelSimilarity.Text = "Similarity";
//
// labelStability
//
this.labelStability.AutoSize = true;
this.labelStability.Location = new System.Drawing.Point(15, 302);
this.labelStability.Name = "labelStability";
this.labelStability.Size = new System.Drawing.Size(43, 13);
this.labelStability.TabIndex = 97;
this.labelStability.Text = "Stability";
//
// labelLanguage
//
this.labelLanguage.AutoSize = true;
@ -163,6 +257,31 @@
this.labelLanguage.TabIndex = 36;
this.labelLanguage.Text = "Language";
//
// nikseComboBoxLanguage
//
this.nikseComboBoxLanguage.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.nikseComboBoxLanguage.BackColor = System.Drawing.SystemColors.Window;
this.nikseComboBoxLanguage.BackColorDisabled = System.Drawing.Color.FromArgb(((int)(((byte)(240)))), ((int)(((byte)(240)))), ((int)(((byte)(240)))));
this.nikseComboBoxLanguage.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(173)))), ((int)(((byte)(179)))));
this.nikseComboBoxLanguage.BorderColorDisabled = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
this.nikseComboBoxLanguage.ButtonForeColor = System.Drawing.SystemColors.ControlText;
this.nikseComboBoxLanguage.ButtonForeColorDown = System.Drawing.Color.Orange;
this.nikseComboBoxLanguage.ButtonForeColorOver = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(120)))), ((int)(((byte)(215)))));
this.nikseComboBoxLanguage.DropDownHeight = 400;
this.nikseComboBoxLanguage.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.nikseComboBoxLanguage.DropDownWidth = 0;
this.nikseComboBoxLanguage.FormattingEnabled = false;
this.nikseComboBoxLanguage.Location = new System.Drawing.Point(102, 269);
this.nikseComboBoxLanguage.MaxLength = 32767;
this.nikseComboBoxLanguage.Name = "nikseComboBoxLanguage";
this.nikseComboBoxLanguage.SelectedIndex = -1;
this.nikseComboBoxLanguage.SelectedItem = null;
this.nikseComboBoxLanguage.SelectedText = "";
this.nikseComboBoxLanguage.Size = new System.Drawing.Size(266, 23);
this.nikseComboBoxLanguage.TabIndex = 35;
this.nikseComboBoxLanguage.UsePopupWindow = false;
//
// linkLabelCustomAudio
//
this.linkLabelCustomAudio.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
@ -196,6 +315,32 @@
this.labelRegion.TabIndex = 32;
this.labelRegion.Text = "Region";
//
// nikseComboBoxRegion
//
this.nikseComboBoxRegion.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.nikseComboBoxRegion.BackColor = System.Drawing.SystemColors.Window;
this.nikseComboBoxRegion.BackColorDisabled = System.Drawing.Color.FromArgb(((int)(((byte)(240)))), ((int)(((byte)(240)))), ((int)(((byte)(240)))));
this.nikseComboBoxRegion.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(173)))), ((int)(((byte)(179)))));
this.nikseComboBoxRegion.BorderColorDisabled = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
this.nikseComboBoxRegion.ButtonForeColor = System.Drawing.SystemColors.ControlText;
this.nikseComboBoxRegion.ButtonForeColorDown = System.Drawing.Color.Orange;
this.nikseComboBoxRegion.ButtonForeColorOver = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(120)))), ((int)(((byte)(215)))));
this.nikseComboBoxRegion.DropDownHeight = 400;
this.nikseComboBoxRegion.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.nikseComboBoxRegion.DropDownWidth = 0;
this.nikseComboBoxRegion.FormattingEnabled = false;
this.nikseComboBoxRegion.Location = new System.Drawing.Point(102, 240);
this.nikseComboBoxRegion.MaxLength = 32767;
this.nikseComboBoxRegion.Name = "nikseComboBoxRegion";
this.nikseComboBoxRegion.SelectedIndex = -1;
this.nikseComboBoxRegion.SelectedItem = null;
this.nikseComboBoxRegion.SelectedText = "";
this.nikseComboBoxRegion.Size = new System.Drawing.Size(266, 23);
this.nikseComboBoxRegion.TabIndex = 31;
this.nikseComboBoxRegion.UsePopupWindow = false;
this.nikseComboBoxRegion.SelectedIndexChanged += new System.EventHandler(this.nikseComboBoxRegion_SelectedIndexChanged);
//
// labelVoiceCount
//
this.labelVoiceCount.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
@ -229,6 +374,28 @@
this.labelApiKey.TabIndex = 28;
this.labelApiKey.Text = "API key";
//
// nikseTextBoxApiKey
//
this.nikseTextBoxApiKey.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.nikseTextBoxApiKey.FocusedColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(120)))), ((int)(((byte)(215)))));
this.nikseTextBoxApiKey.Location = new System.Drawing.Point(102, 213);
this.nikseTextBoxApiKey.Name = "nikseTextBoxApiKey";
this.nikseTextBoxApiKey.Size = new System.Drawing.Size(266, 20);
this.nikseTextBoxApiKey.TabIndex = 27;
//
// TextBoxTest
//
this.TextBoxTest.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.TextBoxTest.FocusedColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(120)))), ((int)(((byte)(215)))));
this.TextBoxTest.Location = new System.Drawing.Point(17, 172);
this.TextBoxTest.Name = "TextBoxTest";
this.TextBoxTest.Size = new System.Drawing.Size(351, 20);
this.TextBoxTest.TabIndex = 20;
this.TextBoxTest.Text = "Hello, how are you?";
this.TextBoxTest.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TextBoxTest_KeyDown);
//
// buttonTestVoice
//
this.buttonTestVoice.Location = new System.Drawing.Point(17, 141);
@ -262,6 +429,32 @@
this.labelVoice.TabIndex = 16;
this.labelVoice.Text = "Voice";
//
// nikseComboBoxVoice
//
this.nikseComboBoxVoice.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.nikseComboBoxVoice.BackColor = System.Drawing.SystemColors.Window;
this.nikseComboBoxVoice.BackColorDisabled = System.Drawing.Color.FromArgb(((int)(((byte)(240)))), ((int)(((byte)(240)))), ((int)(((byte)(240)))));
this.nikseComboBoxVoice.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(173)))), ((int)(((byte)(179)))));
this.nikseComboBoxVoice.BorderColorDisabled = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
this.nikseComboBoxVoice.ButtonForeColor = System.Drawing.SystemColors.ControlText;
this.nikseComboBoxVoice.ButtonForeColorDown = System.Drawing.Color.Orange;
this.nikseComboBoxVoice.ButtonForeColorOver = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(120)))), ((int)(((byte)(215)))));
this.nikseComboBoxVoice.ContextMenuStrip = this.contextMenuStripVoices;
this.nikseComboBoxVoice.DropDownHeight = 400;
this.nikseComboBoxVoice.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.nikseComboBoxVoice.DropDownWidth = 0;
this.nikseComboBoxVoice.FormattingEnabled = false;
this.nikseComboBoxVoice.Location = new System.Drawing.Point(17, 110);
this.nikseComboBoxVoice.MaxLength = 32767;
this.nikseComboBoxVoice.Name = "nikseComboBoxVoice";
this.nikseComboBoxVoice.SelectedIndex = -1;
this.nikseComboBoxVoice.SelectedItem = null;
this.nikseComboBoxVoice.SelectedText = "";
this.nikseComboBoxVoice.Size = new System.Drawing.Size(351, 23);
this.nikseComboBoxVoice.TabIndex = 10;
this.nikseComboBoxVoice.UsePopupWindow = false;
//
// contextMenuStripVoices
//
this.contextMenuStripVoices.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
@ -277,6 +470,33 @@
this.refreshVoicesToolStripMenuItem.Text = "Refresh voices";
this.refreshVoicesToolStripMenuItem.Click += new System.EventHandler(this.refreshVoicesToolStripMenuItem_Click);
//
// nikseComboBoxEngine
//
this.nikseComboBoxEngine.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.nikseComboBoxEngine.BackColor = System.Drawing.SystemColors.Window;
this.nikseComboBoxEngine.BackColorDisabled = System.Drawing.Color.FromArgb(((int)(((byte)(240)))), ((int)(((byte)(240)))), ((int)(((byte)(240)))));
this.nikseComboBoxEngine.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(173)))), ((int)(((byte)(179)))));
this.nikseComboBoxEngine.BorderColorDisabled = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
this.nikseComboBoxEngine.ButtonForeColor = System.Drawing.SystemColors.ControlText;
this.nikseComboBoxEngine.ButtonForeColorDown = System.Drawing.Color.Orange;
this.nikseComboBoxEngine.ButtonForeColorOver = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(120)))), ((int)(((byte)(215)))));
this.nikseComboBoxEngine.DropDownHeight = 400;
this.nikseComboBoxEngine.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDown;
this.nikseComboBoxEngine.DropDownWidth = 391;
this.nikseComboBoxEngine.FormattingEnabled = false;
this.nikseComboBoxEngine.Location = new System.Drawing.Point(17, 40);
this.nikseComboBoxEngine.MaxLength = 32767;
this.nikseComboBoxEngine.Name = "nikseComboBoxEngine";
this.nikseComboBoxEngine.SelectedIndex = -1;
this.nikseComboBoxEngine.SelectedItem = null;
this.nikseComboBoxEngine.SelectedText = "";
this.nikseComboBoxEngine.Size = new System.Drawing.Size(351, 23);
this.nikseComboBoxEngine.TabIndex = 5;
this.nikseComboBoxEngine.TabStop = false;
this.nikseComboBoxEngine.Text = "nikseComboBoxEngine";
this.nikseComboBoxEngine.UsePopupWindow = false;
//
// listViewActors
//
this.listViewActors.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
@ -334,226 +554,6 @@
this.buttonCancel.UseVisualStyleBackColor = true;
this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click);
//
// nikseUpDownStability
//
this.nikseUpDownStability.BackColor = System.Drawing.SystemColors.Window;
this.nikseUpDownStability.BackColorDisabled = System.Drawing.Color.FromArgb(((int)(((byte)(240)))), ((int)(((byte)(240)))), ((int)(((byte)(240)))));
this.nikseUpDownStability.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(173)))), ((int)(((byte)(179)))));
this.nikseUpDownStability.BorderColorDisabled = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
this.nikseUpDownStability.ButtonForeColor = System.Drawing.SystemColors.ControlText;
this.nikseUpDownStability.ButtonForeColorDown = System.Drawing.Color.Orange;
this.nikseUpDownStability.ButtonForeColorOver = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(120)))), ((int)(((byte)(215)))));
this.nikseUpDownStability.DecimalPlaces = 0;
this.nikseUpDownStability.Increment = new decimal(new int[] {
1,
0,
0,
0});
this.nikseUpDownStability.Location = new System.Drawing.Point(102, 270);
this.nikseUpDownStability.Maximum = new decimal(new int[] {
100,
0,
0,
0});
this.nikseUpDownStability.Minimum = new decimal(new int[] {
0,
0,
0,
0});
this.nikseUpDownStability.Name = "nikseUpDownStability";
this.nikseUpDownStability.Size = new System.Drawing.Size(75, 23);
this.nikseUpDownStability.TabIndex = 34;
this.nikseUpDownStability.TabStop = false;
this.nikseUpDownStability.Text = "nikseUpDownStability";
this.nikseUpDownStability.ThousandsSeparator = false;
this.nikseUpDownStability.Value = new decimal(new int[] {
0,
0,
0,
0});
//
// nikseUpDownSimilarity
//
this.nikseUpDownSimilarity.BackColor = System.Drawing.SystemColors.Window;
this.nikseUpDownSimilarity.BackColorDisabled = System.Drawing.Color.FromArgb(((int)(((byte)(240)))), ((int)(((byte)(240)))), ((int)(((byte)(240)))));
this.nikseUpDownSimilarity.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(173)))), ((int)(((byte)(179)))));
this.nikseUpDownSimilarity.BorderColorDisabled = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
this.nikseUpDownSimilarity.ButtonForeColor = System.Drawing.SystemColors.ControlText;
this.nikseUpDownSimilarity.ButtonForeColorDown = System.Drawing.Color.Orange;
this.nikseUpDownSimilarity.ButtonForeColorOver = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(120)))), ((int)(((byte)(215)))));
this.nikseUpDownSimilarity.DecimalPlaces = 0;
this.nikseUpDownSimilarity.Increment = new decimal(new int[] {
1,
0,
0,
0});
this.nikseUpDownSimilarity.Location = new System.Drawing.Point(102, 299);
this.nikseUpDownSimilarity.Maximum = new decimal(new int[] {
100,
0,
0,
0});
this.nikseUpDownSimilarity.Minimum = new decimal(new int[] {
0,
0,
0,
0});
this.nikseUpDownSimilarity.Name = "nikseUpDownSimilarity";
this.nikseUpDownSimilarity.Size = new System.Drawing.Size(75, 23);
this.nikseUpDownSimilarity.TabIndex = 35;
this.nikseUpDownSimilarity.TabStop = false;
this.nikseUpDownSimilarity.Text = "nikseUpDownSimilarity";
this.nikseUpDownSimilarity.ThousandsSeparator = false;
this.nikseUpDownSimilarity.Value = new decimal(new int[] {
0,
0,
0,
0});
//
// labelSimilarity
//
this.labelSimilarity.AutoSize = true;
this.labelSimilarity.Location = new System.Drawing.Point(14, 305);
this.labelSimilarity.Name = "labelSimilarity";
this.labelSimilarity.Size = new System.Drawing.Size(47, 13);
this.labelSimilarity.TabIndex = 99;
this.labelSimilarity.Text = "Similarity";
//
// labelStability
//
this.labelStability.AutoSize = true;
this.labelStability.Location = new System.Drawing.Point(15, 274);
this.labelStability.Name = "labelStability";
this.labelStability.Size = new System.Drawing.Size(43, 13);
this.labelStability.TabIndex = 97;
this.labelStability.Text = "Stability";
//
// nikseComboBoxLanguage
//
this.nikseComboBoxLanguage.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.nikseComboBoxLanguage.BackColor = System.Drawing.SystemColors.Window;
this.nikseComboBoxLanguage.BackColorDisabled = System.Drawing.Color.FromArgb(((int)(((byte)(240)))), ((int)(((byte)(240)))), ((int)(((byte)(240)))));
this.nikseComboBoxLanguage.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(173)))), ((int)(((byte)(179)))));
this.nikseComboBoxLanguage.BorderColorDisabled = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
this.nikseComboBoxLanguage.ButtonForeColor = System.Drawing.SystemColors.ControlText;
this.nikseComboBoxLanguage.ButtonForeColorDown = System.Drawing.Color.Orange;
this.nikseComboBoxLanguage.ButtonForeColorOver = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(120)))), ((int)(((byte)(215)))));
this.nikseComboBoxLanguage.DropDownHeight = 400;
this.nikseComboBoxLanguage.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.nikseComboBoxLanguage.DropDownWidth = 0;
this.nikseComboBoxLanguage.FormattingEnabled = false;
this.nikseComboBoxLanguage.Location = new System.Drawing.Point(102, 269);
this.nikseComboBoxLanguage.MaxLength = 32767;
this.nikseComboBoxLanguage.Name = "nikseComboBoxLanguage";
this.nikseComboBoxLanguage.SelectedIndex = -1;
this.nikseComboBoxLanguage.SelectedItem = null;
this.nikseComboBoxLanguage.SelectedText = "";
this.nikseComboBoxLanguage.Size = new System.Drawing.Size(266, 23);
this.nikseComboBoxLanguage.TabIndex = 35;
this.nikseComboBoxLanguage.UsePopupWindow = false;
//
// nikseComboBoxRegion
//
this.nikseComboBoxRegion.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.nikseComboBoxRegion.BackColor = System.Drawing.SystemColors.Window;
this.nikseComboBoxRegion.BackColorDisabled = System.Drawing.Color.FromArgb(((int)(((byte)(240)))), ((int)(((byte)(240)))), ((int)(((byte)(240)))));
this.nikseComboBoxRegion.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(173)))), ((int)(((byte)(179)))));
this.nikseComboBoxRegion.BorderColorDisabled = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
this.nikseComboBoxRegion.ButtonForeColor = System.Drawing.SystemColors.ControlText;
this.nikseComboBoxRegion.ButtonForeColorDown = System.Drawing.Color.Orange;
this.nikseComboBoxRegion.ButtonForeColorOver = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(120)))), ((int)(((byte)(215)))));
this.nikseComboBoxRegion.DropDownHeight = 400;
this.nikseComboBoxRegion.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.nikseComboBoxRegion.DropDownWidth = 0;
this.nikseComboBoxRegion.FormattingEnabled = false;
this.nikseComboBoxRegion.Location = new System.Drawing.Point(102, 240);
this.nikseComboBoxRegion.MaxLength = 32767;
this.nikseComboBoxRegion.Name = "nikseComboBoxRegion";
this.nikseComboBoxRegion.SelectedIndex = -1;
this.nikseComboBoxRegion.SelectedItem = null;
this.nikseComboBoxRegion.SelectedText = "";
this.nikseComboBoxRegion.Size = new System.Drawing.Size(266, 23);
this.nikseComboBoxRegion.TabIndex = 31;
this.nikseComboBoxRegion.UsePopupWindow = false;
this.nikseComboBoxRegion.SelectedIndexChanged += new System.EventHandler(this.nikseComboBoxRegion_SelectedIndexChanged);
//
// nikseTextBoxApiKey
//
this.nikseTextBoxApiKey.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.nikseTextBoxApiKey.FocusedColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(120)))), ((int)(((byte)(215)))));
this.nikseTextBoxApiKey.Location = new System.Drawing.Point(102, 213);
this.nikseTextBoxApiKey.Name = "nikseTextBoxApiKey";
this.nikseTextBoxApiKey.Size = new System.Drawing.Size(266, 20);
this.nikseTextBoxApiKey.TabIndex = 27;
//
// TextBoxTest
//
this.TextBoxTest.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.TextBoxTest.FocusedColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(120)))), ((int)(((byte)(215)))));
this.TextBoxTest.Location = new System.Drawing.Point(17, 172);
this.TextBoxTest.Name = "TextBoxTest";
this.TextBoxTest.Size = new System.Drawing.Size(351, 20);
this.TextBoxTest.TabIndex = 20;
this.TextBoxTest.Text = "Hello, how are you?";
this.TextBoxTest.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TextBoxTest_KeyDown);
//
// nikseComboBoxVoice
//
this.nikseComboBoxVoice.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.nikseComboBoxVoice.BackColor = System.Drawing.SystemColors.Window;
this.nikseComboBoxVoice.BackColorDisabled = System.Drawing.Color.FromArgb(((int)(((byte)(240)))), ((int)(((byte)(240)))), ((int)(((byte)(240)))));
this.nikseComboBoxVoice.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(173)))), ((int)(((byte)(179)))));
this.nikseComboBoxVoice.BorderColorDisabled = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
this.nikseComboBoxVoice.ButtonForeColor = System.Drawing.SystemColors.ControlText;
this.nikseComboBoxVoice.ButtonForeColorDown = System.Drawing.Color.Orange;
this.nikseComboBoxVoice.ButtonForeColorOver = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(120)))), ((int)(((byte)(215)))));
this.nikseComboBoxVoice.ContextMenuStrip = this.contextMenuStripVoices;
this.nikseComboBoxVoice.DropDownHeight = 400;
this.nikseComboBoxVoice.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.nikseComboBoxVoice.DropDownWidth = 0;
this.nikseComboBoxVoice.FormattingEnabled = false;
this.nikseComboBoxVoice.Location = new System.Drawing.Point(17, 110);
this.nikseComboBoxVoice.MaxLength = 32767;
this.nikseComboBoxVoice.Name = "nikseComboBoxVoice";
this.nikseComboBoxVoice.SelectedIndex = -1;
this.nikseComboBoxVoice.SelectedItem = null;
this.nikseComboBoxVoice.SelectedText = "";
this.nikseComboBoxVoice.Size = new System.Drawing.Size(351, 23);
this.nikseComboBoxVoice.TabIndex = 10;
this.nikseComboBoxVoice.UsePopupWindow = false;
//
// nikseComboBoxEngine
//
this.nikseComboBoxEngine.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.nikseComboBoxEngine.BackColor = System.Drawing.SystemColors.Window;
this.nikseComboBoxEngine.BackColorDisabled = System.Drawing.Color.FromArgb(((int)(((byte)(240)))), ((int)(((byte)(240)))), ((int)(((byte)(240)))));
this.nikseComboBoxEngine.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(171)))), ((int)(((byte)(173)))), ((int)(((byte)(179)))));
this.nikseComboBoxEngine.BorderColorDisabled = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
this.nikseComboBoxEngine.ButtonForeColor = System.Drawing.SystemColors.ControlText;
this.nikseComboBoxEngine.ButtonForeColorDown = System.Drawing.Color.Orange;
this.nikseComboBoxEngine.ButtonForeColorOver = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(120)))), ((int)(((byte)(215)))));
this.nikseComboBoxEngine.DropDownHeight = 400;
this.nikseComboBoxEngine.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDown;
this.nikseComboBoxEngine.DropDownWidth = 391;
this.nikseComboBoxEngine.FormattingEnabled = false;
this.nikseComboBoxEngine.Location = new System.Drawing.Point(17, 40);
this.nikseComboBoxEngine.MaxLength = 32767;
this.nikseComboBoxEngine.Name = "nikseComboBoxEngine";
this.nikseComboBoxEngine.SelectedIndex = -1;
this.nikseComboBoxEngine.SelectedItem = null;
this.nikseComboBoxEngine.SelectedText = "";
this.nikseComboBoxEngine.Size = new System.Drawing.Size(351, 23);
this.nikseComboBoxEngine.TabIndex = 5;
this.nikseComboBoxEngine.TabStop = false;
this.nikseComboBoxEngine.Text = "nikseComboBox1";
this.nikseComboBoxEngine.UsePopupWindow = false;
//
// TextToSpeech
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);

View File

@ -129,6 +129,7 @@ namespace Nikse.SubtitleEdit.Forms.Tts
linkLabelCustomAudio.Left = checkBoxAudioEncoding.Right;
labelStability.Text = LanguageSettings.Current.TextToSpeech.Stability;
labelSimilarity.Text = LanguageSettings.Current.TextToSpeech.Similarity;
nikseUpDownSimilarity.Left = labelSimilarity.Right + 3;
buttonOK.Text = LanguageSettings.Current.General.Ok;
buttonCancel.Text = LanguageSettings.Current.General.Cancel;
UiUtil.FixLargeFonts(this, buttonOK);
@ -259,7 +260,8 @@ namespace Nikse.SubtitleEdit.Forms.Tts
if (checkBoxShowPreview.Checked)
{
using (var form = new ReviewAudioClips(this, _subtitle, fileNameAndSpeedFactors))
var engine = _engines.First(p => p.Index == nikseComboBoxEngine.SelectedIndex);
using (var form = new ReviewAudioClips(this, _subtitle, fileNameAndSpeedFactors, engine))
{
var dr = form.ShowDialog(this);
if (dr != DialogResult.OK)
@ -1138,7 +1140,7 @@ namespace Nikse.SubtitleEdit.Forms.Tts
}
}
var stability = Math.Round(Configuration.Settings.Tools.TextToSpeechElevenLabsStability, 1).ToString(CultureInfo.InvariantCulture);
var stability = Math.Round(Configuration.Settings.Tools.TextToSpeechElevenLabsStability, 1).ToString(CultureInfo.InvariantCulture);
var similarity = Math.Round(Configuration.Settings.Tools.TextToSpeechElevenLabsSimilarity, 1).ToString(CultureInfo.InvariantCulture);
var data = "{ \"text\": \"" + Json.EncodeJsonText(text) + $"\", \"model_id\": \"{model}\"{language}, \"voice_settings\": {{ \"stability\": {stability}, \"similarity_boost\": {similarity} }} }}";
var content = new StringContent(data, Encoding.UTF8);
@ -2133,7 +2135,7 @@ namespace Nikse.SubtitleEdit.Forms.Tts
if (!useCache)
{
using(var httpClient = HttpClientFactory.CreateProxiedHttpClient())
using (var httpClient = HttpClientFactory.CreateProxiedHttpClient())
{
httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "application/json");
httpClient.DefaultRequestHeaders.TryAddWithoutValidation("accept", "application/json");
@ -2494,7 +2496,7 @@ namespace Nikse.SubtitleEdit.Forms.Tts
{
using (var form = new TtsAudioEncoding())
{
form.ShowDialog(this);
form.ShowDialog(this);
}
}

View File

@ -3187,6 +3187,8 @@ FFmpeg를 다운로드하고 사용하시겠습니까?</FfmpegNotFound>
<AutoContinue>자동 계속</AutoContinue>
<Regenerate>재생성</Regenerate>
<Speed>속도</Speed>
<Stability>안정성</Stability>
<Similarity>유사성</Similarity>
</TextToSpeech>
<TimedTextSmpteTiming>
<Title>SMPTE 타이밍</Title>

View File

@ -2891,14 +2891,14 @@ can edit in same subtitle file (collaboration)",
ContinuationStyle = "Continuation style",
CpsLineLengthStyle = "Cps/line-length",
CpsLineLengthStyleCalcAll = "Count all characters",
CpsLineLengthStyleCalcNoSpaceCpsOnly = "Count all except space, cps only",
CpsLineLengthStyleCalcNoSpaceCpsOnly = "Count all except space, CPS only",
CpsLineLengthStyleCalcNoSpace = "Count all except space",
CpsLineLengthStyleCalcCjk = "CJK 1, Latin 0.5",
CpsLineLengthStyleCalcCjkNoSpace = "CJK 1, Latin 0.5, space 0",
CpsLineLengthStyleCalcIncludeCompositionCharacters = "Include composition characters",
CpsLineLengthStyleCalcIncludeCompositionCharactersNotSpace = "Include composition characters, not space",
CpsLineLengthStyleCalcNoSpaceOrPunctuation = "No space or punctuation ()[]-:;,.!?",
CpsLineLengthStyleCalcNoSpaceOrPunctuationCpsOnly = "No space or punctuation, cps only",
CpsLineLengthStyleCalcNoSpaceOrPunctuationCpsOnly = "No space or punctuation, CPS only",
ContinuationStyleNone = "None",
ContinuationStyleNoneTrailingDots = "None, dots for pauses (trailing only)",
ContinuationStyleNoneLeadingTrailingDots = "None, dots for pauses",