Для создания приложения на Windows Forms для распознавания музыки на C#, вы можете использовать библиотеку NAudio в сочетании с API для распознавания музыки, например,
Audd.io или ShazamKit. Вот как вы можете начать:
Шаг 1: Установите библиотеку NAudio
Откройте ваш проект в Visual Studio.
Перейдите в Tools -> NuGet Package Manager -> Manage NuGet Packages for Solution.
В поле поиска введите NAudio и установите пакет.
Шаг 2: Зарегистрируйтесь в
Audd.io или ShazamKit для получения API ключа
Перейдите на
Audd.io и зарегистрируйтесь для получения API ключа.
Ознакомьтесь с документацией API для использования методов распознавания музыки.
Шаг 3: Напишите код для записи аудио и отправки его на распознавание
код для записи аудио и отправки его на распознавание с использованием
Audd.io :
using System;
using System.IO;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using NAudio.Wave;
namespace MusicRecognitionApp
{
public partial class MainForm : Form
{
private WaveInEvent waveIn;
private MemoryStream memoryStream;
public MainForm()
{
InitializeComponent();
waveIn = new WaveInEvent();
waveIn.WaveFormat = new WaveFormat(44100, 1);
waveIn.DataAvailable += OnDataAvailable;
waveIn.RecordingStopped += OnRecordingStopped;
}
private void OnDataAvailable(object sender, WaveInEventArgs e)
{
memoryStream.Write(e.Buffer, 0, e.BytesRecorded);
}
private void OnRecordingStopped(object sender, StoppedEventArgs e)
{
// Save the recorded audio to a file
string fileName = "recordedAudio.wav";
using (var waveFile = new WaveFileWriter(fileName, waveIn.WaveFormat))
{
waveFile.Write(memoryStream.ToArray(), 0, (int)memoryStream.Length);
}
// Send the audio file for recognition
RecognizeMusic(fileName).Wait();
}
private async Task RecognizeMusic(string fileName)
{
string apiKey = "YOUR_AUDD_API_KEY";
string apiUrl = "https://api.audd.io/";
using (var httpClient = new HttpClient())
{
using (var form = new MultipartFormDataContent())
{
form.Add(new StringContent(apiKey), "api_token");
form.Add(new ByteArrayContent(File.ReadAllBytes(fileName)), "file", fileName);
form.Add(new StringContent("identify"), "method");
var response = await httpClient.PostAsync(apiUrl, form);
var jsonResponse = await response.Content.ReadAsStringAsync();
// Display the response
MessageBox.Show(jsonResponse);
}
}
}
private void btnStartRecording_Click(object sender, EventArgs e)
{
memoryStream = new MemoryStream();
waveIn.StartRecording();
}
private void btnStopRecording_Click(object sender, EventArgs e)
{
waveIn.StopRecording();
}
}
}