Как я могу разработать собственное программное обеспечение для преобразования текста в речь с нуля?
Как я могу разработать собственное программное обеспечение для преобразования текста в речь с нуля? Я хочу запустить его на языке C++ .net или C#. У меня есть навыки программирования на c# и C++ .net, но я не могу использовать сторонние библиотеки, я хочу полностью собственную.
Мой проект ниже не достаточно для меня и образец из моего проекта только.
У меня есть несколько лет музыкальных аудио навыков и программно несколько месяцев, но у меня есть некоторые проблемы с Fast FT и Shortime FT.
Что я уже пробовал:
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."); } }
El_Codero
Я думаю, что было бы огромной задачей действительно построить свой собственный TTS-проект. В настоящее время вы используете класс SpeechSynthesizer из .net Framework. Что не работает с вашим кодом? Кроме того ВАС МОЖЕТ ЗАИНТЕРЕСОВАТЬ CmuSphinx который является открытым исходным кодом и расширяемым CMUSphinx
Sergey Alexandrovich Kryukov
Очень интересная Ссылка; Спасибо, что поделились. Проверяли ли вы само распознавание, его качество?
—СА
El_Codero
Привет, Сергей, О да, я провел довольно много времени с cmusphinx два года назад. Существующая языковая модель для EN language довольно хорошо обучена (к сожалению, ясно, что в настоящее время она не может работать параллельно с "облачными" системами распознавания, такими как google speech recognition), но в рамках cmusphinx есть много инструментов для создания пользовательской языковой модели и ее обучения, документация хороша для проекта с открытым исходным кодом.
т.е. здесь это рекомендация от разработчика, как обучить вашу модель. "1 час записи для командования и управления одним динамиком" до "50 часов записи 200 динамиков для диктовки многих динамиков". так что нам нужны записи для обучения :D ...Кстати, я ждал годами, чтобы получить этот, теперь он вышел для сторонних разработчиков, таких как я :)
Sergey Alexandrovich Kryukov
Просто примечание для других: сейчас мы обсуждаем распознавание речи (а не преобразование текста в речь, что является темой первоначального вопроса), но это то, что меня интересует.
Я только попробовал распознавание, которое установил на Android, в виде виртуальной клавиатуры на двух разных языках (я не знаю происхождения исходного кода); и был доволен качеством даже в диктовке; он даже может сделать "речевой набор текста" практичным.
Раньше я пробовал распознавание в моем Microsoft для Windows; это действительно работает; но в целом я охарактеризовал его как"впечатляющий провал". Он может распознавать вещи, основанные на крошечной грамматике, но диктовку, формально существующую, лучше забыть.
Итак, мой другой вопрос: работает ли сборка Windows? Вы тоже пробовали?
Возможно, ваш опыт будет очень полезен, если вы разработаете хорошие демонстрационные приложения с полными инструкциями по сборке и пакетной сборкой в один клик, тестами, обсуждением результатов и т. д.-В довольно подробной статье.
—СА
El_Codero
да, распознавание речи на android опирается на api распознавания речи google, и, к сожалению, да, работа с api распознавания речи windows из .net framework - это первое, с чем мне пришлось отказаться из-за качества, скорости обнаружения и многого другого (как вы сказали, это, к сожалению, действительно большой провал). Гораздо лучше то, что API распознавания речи BING но api speech rec google является (в моем варианте и после долгих тестов) вершиной API speech rec. Да, я действительно хотел бы написать об этом статью, надеюсь, у меня будет для этого немного времени в ближайшем будущем :) Какое демо-приложение вас интересует (больше всего)?С CMUSphinx? Бьерн Ранфт
Sergey Alexandrovich Kryukov
Опять же, очень хорошая информация. Как насчет создания CMUSphinx или Google (они как-то связаны?) на Windows?
—СА
El_Codero
Я бы сказал, что они технически связаны, но для практического использования совершенно разные и зависят от требований. CMUSphinx и другие библиотеки распознавания речи больше подходят для встроенных / локальных устройств без подключения к Интернету. то есть, если вы хотите создать систему навигации, вам лучше использовать cmusphinx, и вы можете реализовать «обучение-команды-с-моим-голосом», поэтому, если вы тренируете навигацию с помощью таких команд, как «Показать трафик», это будет простая задача »для алгоритма распознавания, и вы можете достичь уровня обнаружения 98%. будет огромное снижение успешного обнаружения, если не обученные слова появятся из-за недостаточно хорошо обученной локальной базы данных, и вам придется заставить пользователя обучать db с более чем 50 часами его речи, чтобы достичь хорошего уровня обнаружения, если пользователь говорит (перейдите к (CityName и Adress). Я думаю, что большинство людей знают об этой проблеме, и вы часто будете слышать такие вещи, как «аааа, я сейчас напечатаю ее вручную, она меня не понимает»). полагается на веб-сервисы и уверены, что они используют голос пользователей для обучения своих баз данных, и в результате получается API распознавания речи, который понимает немецкий (с довольно большим польским акцентом) полностью, без каких-либо ошибок. cmusphinx мог бы быть таким же хорошим, как Google, если бы они также используйте эту концепцию. Я действительно хотел бы разработать "облачный" CMUSphinx, если кому-то будет интересно :)
Sergey Alexandrovich Kryukov
Спасибо еще раз. Действительно, подумайте о том, чтобы написать статью. А вы бы хотели?
—СА
El_Codero
Я рад, что здесь, на КП, есть люди, которым это интересно. Я думаю, что буду работать над статьей после тестирования api google speech rec, который находится в альфа-версии, мы можем написать PM. С наилучшими пожеланиями, Бьерн
Sergey Alexandrovich Kryukov
Могу вас заверить: если вы сделаете это хорошо, то это будет, безусловно, гораздо интереснее, чем большинство статей на сайте (под "Хорошо" я в основном подразумеваю качество и полноту демонстрационного/тестового кода, тестов, не так много обычного текста статьи, но все должно быть правильно объяснено.)
Если вы это сделаете, пожалуйста, не забудьте уведомить меня, добавив еще один комментарий к этому комментарию.
—СА
El_Codero
Привет, Сергей, как дела?время идет быстро, но я думаю, что у меня будет достаточно свободного времени с 17 января. Тем временем мы можем начать собирать то, что должна содержать наша статья и какие системы распознавания мы хотели бы охватить. Все еще интересуешься?
Roland-HE-C#
Я хочу создать венгерский TTS, у меня есть буквенные голоса (мои собственные образцы голоса)
Я знаю, как смешать их в финальную волну, но мне нужен алгоритм тембрового преверсора высоты тона, поэтому я здесь за чьей-то помощью.
Sergey Alexandrovich Kryukov
С нуля? По моим приблизительным оценкам, вам нужно выполнить хотя бы одно из двух требований:
1) получить так много таланта для выполнения этой задачи;
2) получить продолжительность жизни в несколько сотен лет.
Выполнение второго требования гораздо более вероятно.
—СА
Roland-HE-C#
Я хочу создать венгерский TTS, у меня есть буквенные голоса (мои собственные образцы голоса)
Я знаю, как смешать их в финальную волну, но мне нужен алгоритм тембрового преверсора высоты тона, поэтому я здесь за чьей-то помощью.
Sergey Alexandrovich Kryukov
Да... В дополнение к тому, что я говорю: я знаю, что венгерский язык-один из самых сложных...
—СА
Roland-HE-C#
Без алгоритма тембрового преверсора он в настоящее время слишком роботизирован и слаб для использования.