0 / 0 / 0
Регистрация: 20.06.2014
Сообщений: 4
1

Сравнивание аудиозаписей

20.06.2014, 11:37. Показов 2112. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, уважаемые форумчане. Сейчас пытаюсь написать программу, которая будет сравнивать аудиозаписи по спектрограммам. На сегодня программа открывает аудиофайлы форматов WAV и MP3, проигрывает их и выводит спектрограммы. Но никак не пойму, как мне эти спектры сравнить между собой. Я прочитал множество теоретических статей об использовании преобразования Фурье. На данный момент у меня вопрос конкретно по коду. Как можно "вытащить" те или иные параметры в C# для сравнения.
Использую библиотеку 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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
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;
 
namespace Tutorial11
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private NAudio.Wave.BlockAlignReductionStream stream = null;
        private NAudio.Wave.DirectSoundOut output = null;
 
        private void openButton_Click(object sender, EventArgs e)
        {
            OpenFileDialog open = new OpenFileDialog();
            open.Filter = "Audio file (*.mp3;*.wav)|*.mp3; *.wav;";
            if (open.ShowDialog() != DialogResult.OK) return;
            DisposeWave();
            if (open.FileName.EndsWith(".mp3"))
            {
                customWaveViewer1.WaveStream = NAudio.Wave.WaveFormatConversionStream.CreatePcmStream(new NAudio.Wave.Mp3FileReader(open.FileName));
                customWaveViewer1.FitToScreen();
                NAudio.Wave.WaveStream pcm = NAudio.Wave.WaveFormatConversionStream.CreatePcmStream(new NAudio.Wave.Mp3FileReader(open.FileName));
                stream = new NAudio.Wave.BlockAlignReductionStream(pcm);
            }
            else if (open.FileName.EndsWith(".wav"))
            {
                customWaveViewer1.WaveStream = new NAudio.Wave.WaveFileReader(open.FileName);
                customWaveViewer1.FitToScreen();
                NAudio.Wave.WaveStream pcm = new NAudio.Wave.WaveChannel32(new NAudio.Wave.WaveFileReader(open.FileName));
                stream = new NAudio.Wave.BlockAlignReductionStream(pcm);
            }
            else throw new InvalidOperationException("Not a correct audio file type.");
            output = new NAudio.Wave.DirectSoundOut();
            output.Init(stream);
            output.Play();
 
            pauseButton1.Enabled = true;
        }
 
        private void pauseButton1_Click(object sender, EventArgs e)
        {
            if (output != null)
            {
                if (output.PlaybackState == NAudio.Wave.PlaybackState.Playing) output.Pause();
                else if (output.PlaybackState == NAudio.Wave.PlaybackState.Paused) output.Play();
            }
        }
 
        private void compareButton_Click(object sender, EventArgs e)
        {
            OpenFileDialog open = new OpenFileDialog();
            open.Filter = "Audio file (*.mp3;*.wav)|*.mp3; *.wav;";
            if (open.ShowDialog() != DialogResult.OK) return;
            DisposeWave();
            if (open.FileName.EndsWith(".mp3"))
            {
                customWaveViewer2.WaveStream = NAudio.Wave.WaveFormatConversionStream.CreatePcmStream(new NAudio.Wave.Mp3FileReader(open.FileName));
                customWaveViewer2.FitToScreen();
                NAudio.Wave.WaveStream pcm = NAudio.Wave.WaveFormatConversionStream.CreatePcmStream(new NAudio.Wave.Mp3FileReader(open.FileName));
                stream = new NAudio.Wave.BlockAlignReductionStream(pcm);
 
            }
            else if (open.FileName.EndsWith(".wav"))
            {
                customWaveViewer2.WaveStream = new NAudio.Wave.WaveFileReader(open.FileName);
                customWaveViewer2.FitToScreen();
                NAudio.Wave.WaveStream pcm = new NAudio.Wave.WaveChannel32(new NAudio.Wave.WaveFileReader(open.FileName));
                stream = new NAudio.Wave.BlockAlignReductionStream(pcm);
            }
            else throw new InvalidOperationException("Not a correct audio file type.");
            output = new NAudio.Wave.DirectSoundOut();
            output.Init(stream);
            output.Play();
        }
 
        private void DisposeWave()
        {
            if (output != null)
            {
                if (output.PlaybackState == NAudio.Wave.PlaybackState.Playing)
                {
                    output.Stop();
                }
                output.Dispose();
                output = null;
            }
            if (stream != null)
            {
                stream.Dispose();
                stream = null;
            }
        }
        private void Tutorial11_FormClosing(object sender, FormClosingEventArgs e)
        {
            DisposeWave();
        }
    }
}
Скриншот окна программы:
Сравнивание аудиозаписей


Архив проекта:
Tutorial11.rar
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.06.2014, 11:37
Ответы с готовыми решениями:

Сравнивание textbox
Здравствуйте, суть такова, есть 2 textbox if(textbox4.Text <= textbox5.Text)...

Сравнивание текста в combobox-е и вывод определенных значений в другой combobox
Есть 2 combobox-a. В каждом берутся данные из текстового файла. Нужно при выборе одной строки в 1м...

Сравнивание пустую Edit1 з заполненой Edit1 && также сравнивание з файлов з разных форм
Как сравнить пустую Edit1 з заполненой Edit1?? и ещо вопрос есть 2 формы как сравнить строку з...

Парсинг аудиозаписей vk.com
Доброго времени суток, прошу о помощи, столкнулся с суровым препятствием vk.com парсинг...

2
Регистрация: 15.06.2012
Сообщений: 4,468
20.06.2014, 14:47 2
Ну... можно наложить два изображения. Если приблизительно совпали -- значит и звук похожий.
0
10229 / 6607 / 498
Регистрация: 28.12.2010
Сообщений: 21,156
Записей в блоге: 1
20.06.2014, 15:08 3
...корреляция.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.06.2014, 15:08
Помогаю со студенческими работами здесь

Список аудиозаписей
Здравствуйте, подскажите пожалуйста, как сделать красиво, а главное правильно список аудиозаписей,...

Получить список аудиозаписей с вк
У меня огромная просьба,помогите разобраться с ReadOnlyCollection Хочу получить список...

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

Загрузка аудиозаписей в vk.com средствами vk api
Доброго времени суток! Проблема собственно в выполнении post запроса при отправке аудиофайла на...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru