Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Tabigon
7 / 7 / 3
Регистрация: 06.06.2014
Сообщений: 179
1

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

18.02.2016, 13:42. Просмотров 180. Ответов 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
Ответы с готовыми решениями:

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

Таймер и проверка клика
Привет всем. Как сделать проверку на нажатие кнопки мыши в таймере? private...

Ослабление уровня шума
Рассчитайте ослабление уровня шума в точке R (для трёх значений RF) при...

Уменьшение уровня шума при работе компьютера
Имею вот такой вот компьютер. Всю информацию собрал в архив, через msinfo32....

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

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

Выполнение команды после завершения цикла
void __fastcall TForm3::Button3Click(TObject *Sender) { /* 16. Из заданного...

Выполнения команды после завершения предыдущей
Добрый день, Требуется выполнить команду rmdir после завершения удаления...

Код завершения последней команды (ошибки)
К примеру, этот код добавления пользователя домена в локальную группу...


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

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

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