Форум программистов, компьютерный форум, киберфорум
C#: API, боты
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/65: Рейтинг темы: голосов - 65, средняя оценка - 4.54
3 / 3 / 0
Регистрация: 31.08.2013
Сообщений: 25

Распознавание речи. Google Speech API

12.04.2015, 21:13. Показов 12960. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Я прикрепляю простую программу для распознавания речи с помощью Google API. Она работает, но есть некоторые вопросы.
1)Пока программа реализована с двумя кнопками: первая кнопка - запись wav-файла, второе нажатие по ней - конец записи, и вторая кнопка - распознать, отправляющая и принимающая ответ. Суть в том, что я хочу, чтобы все действия выполнялись по нажатии одной кнопки, но вылазит исключение о том, что файлом еще пользуются, Вы можете сами это увидеть, если раскомментируете 52 строку. Помогите пожалуйста это исправить. Я пробовал вставлять паузу после 48 строки, но безуспешно.
2) Почему первый запрос так долог? Около 10-15 секунд. И сама программа подвисает... Но потом все в порядке
3) Не совсем по теме. Во вложении находятся все файлы, который создает студия, но наверняка там есть несущественные для подобного распространения, и все время таскать их не обязательно. Скажите пожалуйста, какие файлы нужно переносить, а какие необязательно.
Вложения
Тип файла: rar SpeechToText.rar (1.11 Мб, 595 просмотров)
1
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.04.2015, 21:13
Ответы с готовыми решениями:

Распознавание речи
Привет. Есть такой вопрос: Прикручиваю к своему приложению на андроид (Xamarin.Forms) распознование речи. До этого в Windows Forms...

распознавание русской речи на C#
ФОРУМЧАНЕ поделитесь опытом и знаниями кто что знает о распознавании русской речи, любая информация будет полезна, итак в .net есть...

Распознавание речи с использованием Speech API
Есть более-менее рабочая программа на C# по распознаванию речи и аккуратным интерфейсом, которую можно доработать. Чтобы на диплом была...

7
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10425 / 5155 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
13.04.2015, 10:20
Лучший ответ Сообщение было отмечено assvard как решение

Решение

Цитата Сообщение от assvard Посмотреть сообщение
Суть в том, что я хочу, чтобы все действия выполнялись по нажатии одной кнопки, но вылазит исключение о том, что файлом еще пользуются, Вы можете сами это увидеть, если раскомментируете 52 строку.
C#
1
2
3
4
5
6
7
8
                waveIn.StopRecording();
                label2.Text = "";
                ON = false;
                button1.Text = "Запись";
 
                writer.Flush();//<-------
                writer.Dispose();//<-------
                button2_Click(this, EventArgs.Empty);
Добавлено через 1 минуту
Цитата Сообщение от assvard Посмотреть сообщение
есть несущественные для подобного распространения, и все время таскать их не обязательно
Для распространения без исходного кода достаточно файлов
NAudio.dll и SpeechToText.exe
С исходным кодом - желательно иметь все файлы, кроме разве что папок bin и obj.
2
 Аватар для raxper
10236 / 6614 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
13.04.2015, 10:35
2- чтобы не подвисало, запускайте запрос на распознавание в отдельном потоке.

чтобы все действия выполнялись по нажатии одной кнопки
а зачем вообще нажатия, кнопки? Сделайте отслеживание уровня окружающего фона, триггер тишины и таймер выдержки интервала окончания фразы.
1
0 / 0 / 0
Регистрация: 10.07.2015
Сообщений: 1
11.07.2015, 05:46
Идея конечно не очень умная, но можно просто использовать таймер.
Выставлять интервал в зависимости от интернета, в моем случае 1000 миллисекунд достаточно. (Даже можно меньше, для повышение реакции)

C#
1
2
3
reader.Close();
response.Close();
timer1.Enabled = false;
И весь скрипт. Автору спасибо за исходник =)

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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
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 NAudio;
using NAudio.Wave;
using System.Net;
using System.IO;
using System.IO.Compression;
 
 
namespace SpeechToText
{
    public partial class Form1 : Form
    {
        WaveIn waveIn;
        WaveFileWriter writer;
        string outputFilename = "demo.wav";
        bool ON = false;
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            if (ON == false)
            {
                waveIn = new WaveIn();
                waveIn.DeviceNumber = 0;
                waveIn.DataAvailable += waveIn_DataAvailable;
                waveIn.RecordingStopped += new EventHandler<NAudio.Wave.StoppedEventArgs>(waveIn_RecordingStopped);
                waveIn.WaveFormat = new WaveFormat(16000, 1);
                writer = new WaveFileWriter(outputFilename, waveIn.WaveFormat);
                label2.Text = "Идет запись...";
                button1.Text = "Стоп";
                waveIn.StartRecording();
                ON = true;
                
            }
            else
            {
                waveIn.StopRecording();
                label2.Text = "";
                ON = false;
                button1.Text = "Запись";
                timer1.Enabled = true;
            }
        }
        void waveIn_DataAvailable(object sender, WaveInEventArgs e)
        {
            writer.WriteData(e.Buffer, 0, e.BytesRecorded);
        }
 
 
        void waveIn_RecordingStopped(object sender, EventArgs e)
        {
            waveIn.Dispose();
            waveIn = null;
            writer.Close();
            writer = null;
        }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            WebRequest request = WebRequest.Create("https://www.google.com/speech-api/v2/recognize?output=json&lang=ru-RU&key=AIzaSyBOti4mM-6x9WDnZIjIeyEU21OpBXqWBgw");
            //
            request.Method = "POST";
            byte[] byteArray = File.ReadAllBytes(outputFilename);
            request.ContentType = "audio/l16; rate=16000"; //"16000";
            request.ContentLength = byteArray.Length;
            request.GetRequestStream().Write(byteArray, 0, byteArray.Length);
 
 
            // Получить ответ.
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            // Откройте поток, используя StreamReader для легкого доступа.
            StreamReader reader = new StreamReader(response.GetResponseStream());
            //Читайте содержание.
            label1.Text = reader.ReadToEnd();
            // Очистите потоки.
            reader.Close();
            response.Close();
            timer1.Enabled = false; //Получить результат
            //button1_Click(this, EventArgs.Empty); //Распознавать после ответа 
        }
    }
}
0
0 / 0 / 1
Регистрация: 12.11.2014
Сообщений: 118
09.02.2017, 00:57
Вставил в программу онлайн распознавание от Гугл, но результатом служит пустое значение {result;}. Вопрос, работает ли еще распознавание речи через гугл API?
0
0 / 0 / 0
Регистрация: 20.08.2017
Сообщений: 1
20.08.2017, 18:18
Если я правильно понял, то программа возвращает запрос от api в двух формфакторах: alternative - конкретно, распознанный текст и в transcript - транскрипция представляемая интерпретатором, а не проще отфильтровать полученные данные, и да, первый запрос 10-15 секунд в зависимости от качества соединения. В ближайшее время напишу код, в котором отфильтрую данные.)
0
0 / 0 / 0
Регистрация: 19.07.2015
Сообщений: 2
16.01.2018, 21:59
Никто не знает как реализовать потоковое распознование речи?|
0
6 / 4 / 3
Регистрация: 23.10.2010
Сообщений: 293
07.09.2018, 23:28
Никто не знает как реализовать потоковое распознование речи?|
Поддерживаю вопрос! Очень интересная тема, а информации в интернете мало
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.09.2018, 23:28
Помогаю со студенческими работами здесь

Распознавание речи в текст, Google
Друзья, я знаю что наверняка я не первый уже это спрашиваю, но может кто использовал в своих работах распознаватель от гугла ? Смотрел...

HttpWebRequest к Google speech api
Всем привет! Давненько уже интересуюсь ASR и TTS от гугла....давненько ищу, читаю материал что есть в инете. Таить не буду мысли в...

Распознавание речи Google и сохранение результатов в текстовый файл
Здравствуйте. Передо мной стоит задача в создании программы для непрерывного распознавания речи введенной с микрофона и сохранения...

Google Speech API - управление голосом
Привет. Мне нужно чтобы моя прога реагировала на голосовые команды. Хочу использовать Google Speech API, но не знаю как им пользоватся. Вот...

Распознавание речи
Пожалуйста помогите как распознавать звук в языке C#_2010. У меня курсовая работа срок до 15.09.2013г :


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Ниже машинный перевод статьи The Thinkpad X220 Tablet is the best budget school laptop period . Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы,. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru