Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
3 / 2 / 1
Регистрация: 23.10.2010
Сообщений: 216
1

Программа по распознаванию речи и перевода текста в русскую речь

30.08.2018, 22:31. Просмотров 1046. Ответов 6
Метки нет (Все метки)

Здравствуйте, уважаемые знатоки!
Подскажите, пожалуйста, информацию по написанию программы по распознаванию речи и перевода текста в русскую речь.
Третий день перекапываю инет, но там нашел только этот рабочий пример.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.Speech.Recognition;
 
namespace SpeechRecognition
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        static Label l;
 
        static void sre_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
        {
            if (e.Result.Confidence > 0.7) l.Text = e.Result.Text;
        }   
         
        private void Form1_Shown(object sender, EventArgs e)
        {
            l = label1;
             
            System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("ru-ru");
            SpeechRecognitionEngine sre = new SpeechRecognitionEngine(ci);
            sre.SetInputToDefaultAudioDevice();
           
            sre.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(sre_SpeechRecognized);
           
 
            Choices numbers = new Choices();
            numbers.Add(new string[] { "один", "два", "три", "четыре", "пять" });
 
    
            GrammarBuilder gb = new GrammarBuilder();
            gb.Culture = ci;
            gb.Append(numbers);
 
 
            Grammar g = new Grammar(gb);
            sre.LoadGrammar(g);
 
            sre.RecognizeAsync(RecognizeMode.Multiple);
        }
    }
}
Однако данный метод мне не подходит, т.к. в нем нет собственной базы слов. А если подключить загрузку из файла, то прога зависает. (В файл я запихнул чуть больше 197000 слов, что явно было перебор). Так же данный метод слова распознает только с достаточной паузой между произносимыми словами, что очень не удобно.
Заранее спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.08.2018, 22:31
Ответы с готовыми решениями:

Программа перевода речи в текст
Всем доброго времени суток! Есть ли рабочие программы переводящие речь в текстовый формат?

Требуется синтезировать русскую речь
Добрый вечер. У меня острая необходимость научить мою программу говорить по-русски. Есть программы,...

Windows 7 не распознаёт русскую речь
Windows 7 не распознаёт русскую речь. Если использовать микрофон в программах типо Skype, то...

Код по распознаванию речи
Добрый день! Скажите пожалуйста, сталкивался ли кто с распознаванием речи? Существует ли готовый...

6
3 / 2 / 1
Регистрация: 23.10.2010
Сообщений: 216
01.09.2018, 12:35  [ТС] 2
Продолжая поиски этой темы, наткнулся на такое видео https://youtu.be/yM8vTOkQWVc
Как такое можно сделать????????
0
797 / 547 / 236
Регистрация: 01.07.2018
Сообщений: 1,810
01.09.2018, 13:07 3
WersaT, На видео используется Yandex API, еще есть Microsoft Speech Platform, Google Cloud Speech и т.д. вся инфа есть в сети.
1
3 / 2 / 1
Регистрация: 23.10.2010
Сообщений: 216
01.09.2018, 15:34  [ТС] 4
WersaT, На видео используется Yandex API, еще есть Microsoft Speech Platform, Google Cloud Speech и т.д. вся инфа есть в сети.
А можно какой-нибудь пример по использованию и подключению Yandex API? В инете искал - информации мало, а то что есть не понятно.
0
797 / 547 / 236
Регистрация: 01.07.2018
Сообщений: 1,810
01.09.2018, 18:12 5
WersaT, Всё есть на самом яндексе https://tech.yandex.ru/speechk... t-docpage/

Добавлено через 4 минуты
А вообще Вот
1
3 / 2 / 1
Регистрация: 23.10.2010
Сообщений: 216
03.09.2018, 23:15  [ТС] 6
C#
1
2
3
4
5
6
7
8
9
10
11
 WebRequest request = WebRequest.Create("https://asr.yandex.net/asr_xml?" + "uuid=01ae13cb744628b58fb536d496daa1e6&" +"key=" + API_USER + "&" + "topic=queries");
 
                request.Method = "POST";
                byte[] byteArray = File.ReadAllBytes(outputFilename);
                request.ContentType = "audio/x-wav;bit=16;rate=16000";
 
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
                label1.Text = reader.ReadToEnd();
                reader.Close();
                response.Close();
При попытке отправить запрос выдает такую ошибку
"System.Net.WebException: "Удаленный сервер возвратил ошибку: (400) Недопустимый запрос."

Подскажите пожалуйста, что я не так делаю?

Добавлено через 4 часа 19 минут
Чуть изменил подход, но проблема та же самая

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
string str_URL = "https://asr.yandex.net/asr_xml?" + "uuid=01ae13cb744628b58fb536d496daa1e6&" + "key=" + API_USER + "&" + "topic=queries";
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(str_URL);
                request.Method = "POST";
                request.Host = "asr.yandex.net";
                request.SendChunked = true;
                request.UserAgent = "Oleg";
 
                request.ContentType = "audio/x-wav;bit=16;rate=16000";
                request.ContentLength = bytes.Length;
 
                using (var newStream = request.GetRequestStream())
                {
                    newStream.Write(bytes, 0, bytes.Length);
                }
 
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                string responseToString = "";
                if (response != null)
                {
                    var strreader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
                    responseToString = strreader.ReadToEnd();
                }
 
                int index = responseToString.IndexOf("<variant confidence=\"1\">");
 
                responseToString = responseToString.Substring(index + 24, responseToString.Length - index - 24);
 
                int index2 = responseToString.IndexOf("</variant>");
 
                responseToString = responseToString.Substring(0, index2);
 
                //return responseToString;
                StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
                // Read the content.
                label1.Text = reader.ReadToEnd();
                reader.Close();
                response.Close();
Если кто-то это читает подскажите в чем проблема??? Уже третий день головой об стену долблюсь.
А может быть проблема в яндексе? Может yandexkit не переводит речь в текст?
0
3 / 2 / 1
Регистрация: 23.10.2010
Сообщений: 216
04.09.2018, 21:33  [ТС] 7
неужели ни кто подсказать не может?

Добавлено через 5 часов 43 минуты
Вот решил проверить адрес запроса запихнуть в адресную строку браузера.
Если IE то выдает ошибку 400
Если Google Crome или Яндекс браузер то Streaming clients must specify audio field! (Но это хотя бы логично)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.09.2018, 21:33

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Как заставить телефон распознавать русскую речь?
В общем долгое время пытаюсь приучить мобилу работать с голосом (ее преобразование в текст). ...

Материалы/литература по распознаванию речи, советы, библиотеки
В общем хочу написать программу для распознавания речи в качестве лабораторной работы по...

Программа реализации SAPI5 - преобразования текста в речь и сохранения в звуковой файл
Прошу Вашего внимания ознакомиться с программой SoftVoice, написанной на BCB5. Делалась она...

Запись речи, отправка файла на Google, получение текста речи
Нужна помощь! Нужно написать простую программу. Программа должна при клике на кнопку слушать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.