Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/35: Рейтинг темы: голосов - 35, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 30.06.2016
Сообщений: 14

Запись и воспроизведение звука

31.03.2011, 12:13. Показов 7292. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
всем привет! хочу добавить в программу запись и воспроизведение звука, что то типа диктофона, никто не может поделиться исходником или сказать как записывать и сохранять звук с микрофона а потом воспроизводить его
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.03.2011, 12:13
Ответы с готовыми решениями:

Воспроизведение звука
Кратко что имеется: - Имеется буфер с данными которые надо воспроизвести - Сохранять буфер в файл не надо - в буфере содержится...

Захват звука с микрофона и воспроизведение
Здравствуйте! Подскажите чем можно брать звук с микрофона, чтоб можно было его передавать по сети и воспроизводить с другой стороны?

Воспроизведение звука wav из ресурсов
не могу понять в чем проблема, я занес звуковой файл в формате wav в ресурсы, закрепил его там. Но когда ввожу этот код ...

2
 Аватар для nuke4303
99 / 100 / 16
Регистрация: 30.03.2011
Сообщений: 350
31.03.2011, 13:00
Лучший ответ Сообщение было отмечено как решение

Решение

Например так используя энаудио:
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
using System;
using System.IO;
using NAudio;
using NAudio.Wave;
 
namespace VoiceCommander
{
    public partial class Form1 : Form
    {   
        private double porog = 0.02;
        int schet = 0;
        int zap = 0;
        bool rec = false;
 
        private bool ProcessData(WaveInEventArgs e)
        {bool result = false;
         bool Tr = false;
         double Sum2 = 0;
         int Count = e.BytesRecorded / 2;
         for (int index = 0; index < e.BytesRecorded; index += 2)
            {double Tmp = (short)((e.Buffer[index + 1] << 8) | e.Buffer[index + 0]);
                Tmp /= 32768.0;
                Sum2 += Tmp * Tmp;
                if (Tmp > porog)
                    Tr = true;}
         Sum2 /= Count;
         if (Tr || Sum2 > porog)
         { result = true; }
         else
         { result = false; }
         return result;}
 
        private void waveInStream_DataAvailable(object sender, WaveInEventArgs e)
        {bool result = ProcessData(e);
         if (result)
         {
             if (rec == false)
             {//отловили голос и записали в аудио wav
              //плоставили флаг-"заглушку",чтобы не писать много лишних файлов
                 schet++;
                 rec = true;
                 ...//тут начинаете запись в файл с именем "Speech" + schet.ToString() + ".wav"
              }
             else
             { zap++; }
         }
         else
         {
             //если была запись,то останавливаем и сбрасываем флаг-"заглушку"
             if (rec == true)
             {...//тут останавливаем запись
              rec = false;
              //тут мы удаляем всякие всплески особо громких шумов
              if (zap < 2)
              { System.IO.File.Delete("Speech" + schet.ToString() + ".wav"); }
              zap = 0;}
         }}
 
        private void Form1_Load(object sender, EventArgs e)
        {
            WaveInStream waveInStream;
            WaveFormat recodingFormat = new WaveFormat(44100, 16, 2);
            waveInStream = new WaveInStream(0, recodingFormat, this);
            waveInStream.DataAvailable += new EventHandler<WaveInEventArgs>(waveInStream_DataAvailable);
            waveInStream.StartRecording();
        }
 
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            WaveInStream waveInStream;
            WaveFormat recodingFormat = new WaveFormat(44100, 16, 2);
            waveInStream = new WaveInStream(0, recodingFormat, this);
            waveInStream.StopRecording();
        }
или поискрулит Запись звука с микрофона
0
 Аватар для Dj_SheLL
180 / 85 / 10
Регистрация: 13.02.2010
Сообщений: 318
11.04.2011, 00:07
О!Мой пример,переделанный с аудиотриггера.
Запись можно реализовать с помощью того же NAudio.
Вот что касается записи
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
using NAudio.Wave;
using NAudio.FileFormats;
using NAudio.CoreAudioApi;
using NAudio;
 
namespace SpeechProject
{
    public partial class Form1 : Form
    {
        // WaveIn - поток для записи
        WaveIn waveIn;
        //Класс для записи в файл
        WaveFileWriter writer;
                //Имя файла для записи
        string outputFilename = "имя_файла.wav";
        
        public Form1()
        {
            InitializeComponent();        
        }
        //Получение данных из входного буфера и обработка полученных с микрофона данных
        void waveIn_DataAvailable(object sender, WaveInEventArgs e)
        {
            if (this.InvokeRequired)
            {
                this.BeginInvoke(new EventHandler<WaveInEventArgs>(waveIn_DataAvailable), sender, e);
            }
            else
            {
                //Записываем данные из буфера в файл
                writer.WriteData(e.Buffer, 0, e.BytesRecorded);
            }
        }
        //Завершаем запись
        void StopRecording()
        {
            MessageBox.Show("StopRecording");
            waveIn.StopRecording();
        }
        //Окончание записи
        private void waveIn_RecordingStopped(object sender, EventArgs e)
        {
            if (this.InvokeRequired)
            {
                this.BeginInvoke(new EventHandler(waveIn_RecordingStopped), sender, e);
            }
            else
            {
                waveIn.Dispose();
                waveIn = null;
                writer.Close();
                writer = null;
            }
        }
                //Начинаем запись
        private void button1_Click(object sender, EventArgs e)
        {
        try
        {
            MessageBox.Show("Start Recording");
            waveIn = new WaveIn();
            //Дефолтное устройство для записи (если оно имеется)
            waveIn.DeviceNumber = 0;
           //Прикрепляем к событию DataAvailable обработчик, возникающий при наличии записываемых данных
            waveIn.DataAvailable += waveIn_DataAvailable;
            //Прикрепляем обработчик завершения записи
            waveIn.RecordingStopped += new EventHandler(waveIn_RecordingStopped);
            //Формат wav-файла - принимает параметры - частоту дискретизации и количество каналов(здесь mono)
            waveIn.WaveFormat = new WaveFormat(8000, 1);
            //Инициализируем объект WaveFileWriter
            writer = new WaveFileWriter(outputFilename, waveIn.WaveFormat);
            //Начало записи
            waveIn.StartRecording();
            }
            catch (Exception ex)
            {MessageBox.Show(ex.Message)}
        }
                //Прерываем запись
        private void button2_Click(object sender, EventArgs e)
        {
            if (waveIn != null)
            {
                StopRecording();
            }
        }
  }
Насчёт "проиграть" я не знаю,знающие люди подскажут и google.ru в помощь.Примеры видел.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.04.2011, 00:07
Помогаю со студенческими работами здесь

Воспроизведение звука в службе Windows
Здравствуйте, передо мной стоит задача воспроизведения звуковой сигнализации по условию. Необходимо чтобы программа поднималась...

Воспроизведение звука в PCM формате
Здравствуйте, помогите, пожалуйста с такой задачей: есть массив значений, представляющий собой звук в формате PCM. Как воспроизвести этот...

Как повесить на кнопку воспроизведение звука?
как сделать звук многопоточным?

Воспроизведение звука
Доброго времени суток всем! Подскажите пожалуйста, как в WPF воспроизвести несколько звуков одновременно? Т.е. есть фоновый звук, который...

Воспроизведение звука по нажатию кнопки
Здравствуйте помогите пожалуйста, мне нужно сделать воспроизведение звука по нажатию кнопки. Я написал такой код на C# ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
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
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru