Форум программистов, компьютерный форум, киберфорум
Наши страницы

C# Windows Forms

Войти
Регистрация
Восстановить пароль
 
Tabigon
6 / 6 / 1
Регистрация: 06.06.2014
Сообщений: 179
#1

Проверка уровня шума и таймер завершения команды - C#

18.02.2016, 13:42. Просмотров 171. Ответов 0
Метки нет (Все метки)

Здравствуйте. Есть код
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 = "Запись";
                //button2_Click(this, EventArgs.Empty);
            }
        }
 
        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 button2_Click(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);
 
 
            // Get the response.
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            // Open the stream using a StreamReader for easy access.
            StreamReader reader = new StreamReader(response.GetResponseStream());
            // Read the content.
            label1.Text = reader.ReadToEnd();
            // Clean up the streams.
            reader.Close();
            response.Close();       
        }
    }
}
По первому нажатию первой кнопки идёт запись речи, по второму - остановка, а по нажатию второй кнопки - с помощью google speech api получение текста.
Подскажите, пожалуйста, как сделать, чтобы распознавание постоянно работало. То есть когда уровень шума превысит заданный уровень, начнётся запись речи. А потом, когда уровень шума станет ниже отметки по истечении, например, секунды, закончится запись. Как это сделать? И это как я себе представляю, может, у вас будут идеи получше. Только, пожалуйста, с пояснениями либо ссылками на литературу.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2016, 13:42
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Проверка уровня шума и таймер завершения команды (C#):

Как определить с высокой точностью момент времени максимального уровня шума - C#
Допустим есть wav-запись, в котором максимальный уровень шума происходит чере 3.868 секунды. Как это можно определить используя шарп?

Таймер и проверка клика - C#
Привет всем. Как сделать проверку на нажатие кнопки мыши в таймере? private void timer1_Tick(object sender, EventArgs e) { ...

Ослабление уровня шума - Колебания и волны
Рассчитайте ослабление уровня шума в точке R (для трёх значений RF) при прохождении поезда за счёт применения звукозащитного экрана TO если...

Замена вентилятора в бп в целях уменьшения уровня шума - Блоки питания
Помогите пожалуйста подобрать вентиль для сhieftec ctg-650c......хочеться полностю убрать шум бп...он и так не очень шумит так как нагрузка...

Выполнение команды после завершения цикла - C++ Builder
void __fastcall TForm3::Button3Click(TObject *Sender) { /* 16. Из заданного списка слов удалить слова, содержащие заданную...

Выполнения команды после завершения предыдущей - CMD/BAT
Добрый день, Требуется выполнить команду rmdir после завершения удаления программы. Переменная %comspec% с ключом /c сообщает,что надо...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.02.2016, 13:42
Привет! Вот еще темы с ответами:

Выполнение команды после завершения процесса (программы) - CMD/BAT
Необходимо наладить резервное копирование базы данных после завершения приложения, но что то не работает... CHCP 1251 START &quot;ПРОБНЫЙ...

Команды уровня операционной системы - Программирование
Почему некоторые из этих команд исполняются сразу микропрограммой, а не операционной системой? Для чего это нужно?

Винда перестала реагировать на команды перезагрузки и завершения работы - Windows 8, 8.1
Здравствуйте, у меня проблема: винда перестала реагировать на команды перезагрузки и завершения работы (независимо от того, как я их...

Написать пакетный файл, обрабатывающий параметры командной строки и код завершения команды (программы) - CMD/BAT
Помогите пожалуйста написать пакетный файл обрабатывающий параметры командной строки и кода завершения команды (программы). Если в задании...


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

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

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