Можете ли вы дать мне алгоритм тембрового преверсора высоты тона?
Можете ли вы дать мне алгоритм тембрового преверсора высоты тона?
Это может быть C++ или C# или любой другой язык, просто дайте мне или скажите, как его создать.
Мне это нужно для собственного двигателя TTS.
Что я уже пробовал:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Speech.Synthesis; using System.Speech.AudioFormat; public partial class Form1 : Form { public Form1() { InitializeComponent(); } List<string> all_lines_List = new List<string>(); private void Read_Click(object sender, EventArgs e) { if(comboBox1.SelectedItem!=null) { button1.Enabled = false; SpeechSynthesizer speech_synthesizer = new SpeechSynthesizer(); ReadOnlyCollection<InstalledVoice> InstalledVoices = speech_synthesizer.GetInstalledVoices(); speech_synthesizer.SelectVoice(comboBox1.SelectedItem.ToString()); //speech_synthesizer.SelectVoice("MSMary"); speech_synthesizer.SetOutputToDefaultAudioDevice(); //PromptBuilder builder = new PromptBuilder(); //builder.AppendSsmlMarkup("<say-as interpret-as = \"chs\"> chair </say-as>"); //speech_synthesizer.AddLexicon(new Uri("C:\\W7\\Spelling.pls"), "application/pls"); speech_synthesizer.Volume = 100; speech_synthesizer.Rate = 0; PromptBuilder builder = new PromptBuilder(); builder.AppendText("This is sample output to a WAVE file.", PromptEmphasis.Strong); builder.AppendSsmlMarkup("<say-as interpret-as = \"WAVE\"> chair </say-as>"); speech_synthesizer.Speak(builder); speech_synthesizer.Speak(richTextBox2.Text); //speech_synthesizer.RemoveLexicon(new Uri("C:\\W7\\Spelling.pls")); button1.Enabled = true; System.Media.SystemSounds.Asterisk.Play(); Application.DoEvents(); } else { System.Media.SystemSounds.Hand.Play(); MessageBox.Show("Please, Select a Voice."); } } private void Save_Without_Reading_Click(object sender, EventArgs e) { if (comboBox1.SelectedItem != null) { SpeechSynthesizer speech_synthesizer = new SpeechSynthesizer(); speech_synthesizer.SelectVoice(comboBox1.SelectedItem.ToString()); speech_synthesizer.SetOutputToDefaultAudioDevice(); speech_synthesizer.Volume = 100; speech_synthesizer.Rate = 0; speech_synthesizer.SetOutputToWaveFile(comboBox1.SelectedItem.ToString() + " - Speech.wav", new SpeechAudioFormatInfo(44100, AudioBitsPerSample.Sixteen, AudioChannel.Mono)); speech_synthesizer.Speak(richTextBox2.Text); System.Media.SystemSounds.Asterisk.Play(); } else { System.Media.SystemSounds.Hand.Play(); MessageBox.Show("Please, Select a Voice."); } }
Sergey Alexandrovich Kryukov
Извините, алгоритмы такой сложности-это не то, что можно "дать". Дано — в каком смысле?
Похоже, что вы используете System.Speech.Synthesis.SpeechSynthesizer
Если да, то как это связано с вашим "собственным ТТС"? (Если это действительно ваше, Я сожалею о своей ошибке.)
—СА
Roland-HE-C#
Это образец с моей первой попытки, но качество sapi для меня недостаточно, поэтому я начну новый проект после того, как получу алгоритм тембрового предверс-тона.
Sergey Alexandrovich Kryukov
Я все прекрасно понимаю. Этот фрагмент кода просто не имеет отношения к проблеме, которая довольно сложна.
—СА
Roland-HE-C#
В Интернете я нашел простой код pitch shifter c++ ранее, но его качество плохое и базовое.