تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] اضافة ملاحظة صوتية
#1
السلام عليكم ورحمة الله وبركاتة اريد عمل برنامج بالفيجوال بيسك دوت نت يقوم  بتسجيل الصوت من المايك  ويحفظه في قاعدة بيانات اكسس برقم وعند جلب هذا الرقم اكون قادر على تشغيل الملف الصوتي المرتبط بهذا الرقم وعند جلب رقم اخر يشغل الملف الصوتي المرتبط بالرقم الاخر
عن أبي هريرة - رضي الله عنه - قال: قال رسول الله - صلى الله عليه وسلم -: ((كلمتان خفيفتان على اللسان، ثقيلتان في الميزان، حبيبتان إلى الرحمن: سبحان الله وبحمده، سبحان الله العظيم))؛ متفق عليه.
الرد }}}
تم الشكر بواسطة:
#2
وعليكم السلام 

يمكنك إنشاء برنامج في Visual Basic .NET يقوم بتسجيل الصوت من الميكروفون وحفظه في قاعدة بيانات Access وربط الصوت برقم معين لتشغيله لاحقًا. سأوضح لك خطوات بناء هذا البرنامج باستخدام NAudio للتسجيل الصوتي وحفظ الملفات الصوتية في قاعدة بيانات Access، ثم استرجاعها وتشغيلها بناءً على الرقم المدخل.

المتطلبات:
NAudio: مكتبة مفتوحة المصدر للتعامل مع الصوتيات في .NET.

يمكنك تثبيتها باستخدام NuGet عبر Visual Studio

قاعدة بيانات Access تحتوي على جدول لتخزين الملفات الصوتية.

خطوات التنفيذ:
1. إعداد قاعدة بيانات Access:
أنشئ قاعدة بيانات Access تحتوي على جدول يسمى AudioFiles، يحتوي على الأعمدة التالية:
ID (رقم، المفتاح الأساسي)
AudioData (نوع البيانات: OLE Object لتخزين الملف الصوتي)
Description (اختياري، لتخزين وصف للصوت)
2. واجهة المستخدم:
قم بإنشاء نموذج يحتوي على:

زر لبدء التسجيل: BtnRecord
زر لإيقاف التسجيل: BtnStop
زر لحفظ التسجيل: BtnSave
زر لتشغيل الصوت: BtnPlay
صندوق نص لإدخال الرقم: TxtAudioID
3. الكود البرمجي:
المكتبات اللازمة:

PHP كود :
Imports NAudio.Wave
Imports System
.Data.OleDb
Imports System
.IO 

متغيرات عامة للتسجيل:

PHP كود :
Private waveIn As WaveInEvent
Private waveFile As WaveFileWriter
Private tempFilePath As String Path.Combine(Path.GetTempPath(), "tempAudio.wav")
Private 
connectionString As String "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\YourDatabase.accdb;" 

تسجيل الصوت:

PHP كود :
Private Sub BtnRecord_Click(sender As ObjectAs EventArgsHandles BtnRecord.Click
    waveIn 
= New WaveInEvent()
 
   AddHandler waveIn.DataAvailableAddressOf OnDataAvailable
    waveFile 
= New WaveFileWriter(tempFilePathwaveIn.WaveFormat)
 
   waveIn.StartRecording()
End Sub

Private Sub BtnStop_Click(sender As ObjectAs EventArgsHandles BtnStop.Click
    waveIn
.StopRecording()
 
   waveIn.Dispose()
 
   waveFile.Dispose()
End Sub

Private Sub OnDataAvailable(sender As ObjectAs WaveInEventArgs)
 
   waveFile.Write(e.Buffer0e.BytesRecorded)
End Sub 

حفظ الصوت في قاعدة البيانات:

PHP كود :
Private Sub BtnSave_Click(sender As ObjectAs EventArgsHandles BtnSave.Click
    Dim audioData 
As Byte() = File.ReadAllBytes(tempFilePath)
 
   Dim audioID As Integer Integer.Parse(TxtAudioID.Text)

 
   Using connection As New OleDbConnection(connectionString)
 
       connection.Open()
 
       Dim command As New OleDbCommand("INSERT INTO AudioFiles (ID, AudioData) VALUES (@ID, @AudioData)"connection)
 
       command.Parameters.AddWithValue("@ID"audioID)
 
       command.Parameters.AddWithValue("@AudioData"audioData)
 
       command.ExecuteNonQuery()
 
   End Using

    MessageBox
.Show("Audio saved successfully!")
End Sub 

تشغيل الصوت المرتبط برقم معين:

PHP كود :
Private Sub BtnPlay_Click(sender As ObjectAs EventArgsHandles BtnPlay.Click
    Dim audioID 
As Integer Integer.Parse(TxtAudioID.Text)

 
   Using connection As New OleDbConnection(connectionString)
 
       connection.Open()
 
       Dim command As New OleDbCommand("SELECT AudioData FROM AudioFiles WHERE ID = @ID"connection)
 
       command.Parameters.AddWithValue("@ID"audioID)

 
       Dim audioData As Byte() = DirectCast(command.ExecuteScalar(), Byte())

 
       If audioData IsNot Nothing Then
            Dim tempAudioPath 
As String Path.Combine(Path.GetTempPath(), "tempAudioToPlay.wav")
 
           File.WriteAllBytes(tempAudioPathaudioData)
 
           Dim waveOut As New WaveOutEvent()
 
           Dim audioFileReader As New AudioFileReader(tempAudioPath)
 
           waveOut.Init(audioFileReader)
 
           waveOut.Play()
 
       Else
            MessageBox
.Show("No audio found for this ID.")
 
       End If
 
   End Using
End Sub 


شرح الكود:
عند الضغط على "Record" يتم بدء تسجيل الصوت باستخدام NAudio ويُحفظ مؤقتًا في ملف tempAudio.wav.
عند الضغط على "Stop" يتوقف التسجيل، وتتم معالجة الملف المؤقت.
عند الضغط على "Save"، يتم قراءة محتوى الملف الصوتي وتحويله إلى Byte[]، ثم حفظه في قاعدة البيانات تحت رقم معين.
عند الضغط على "Play"، يتم جلب الملف الصوتي المرتبط بالرقم المدخل من قاعدة البيانات وتشغيله.
نصائح إضافية:
تأكد من إعداد قاعدة البيانات بشكل صحيح، واستخدام مسار قاعدة البيانات في connectionString.
استخدم واجهة المستخدم للتحكم في الإدخال بشكل مريح.
الرد }}}
تم الشكر بواسطة: abo ragab
#3
جزاك الله خيرا اخي Kamil  وجعلة الله في ميزان حساناتك ورحم الله والديك
عن أبي هريرة - رضي الله عنه - قال: قال رسول الله - صلى الله عليه وسلم -: ((كلمتان خفيفتان على اللسان، ثقيلتان في الميزان، حبيبتان إلى الرحمن: سبحان الله وبحمده، سبحان الله العظيم))؛ متفق عليه.
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  اضافة لون للالوان في التاكست بكس أحمد فتح الرحمن 4 443 08-01-25, 04:05 PM
آخر رد: أحمد فتح الرحمن
  اضافة ايام للتاريخ العيدروس 2 369 07-01-25, 02:06 AM
آخر رد: العيدروس
  [سؤال] اضافة ملف Pdf الى الريسورس واستخراجه الى مسار معين .. ackore 6 584 15-11-24, 02:51 AM
آخر رد: justforit
  [VB.NET] عمل شكل موجة صوتية مع المايك abo ragab 1 239 26-10-24, 12:36 AM
آخر رد: abo ragab
  كيف يمكن اضافة عناصر للكومبوبوكس اثناء تشغيل البرنامج عن طريق المستخدم haithammoftah 3 2,157 30-09-24, 12:52 AM
آخر رد: asmarsou
  اضافة صورة مخزنة في قاعدة البيانات sql الى الكريستال ريبورت صالح عبدالله 3 459 24-09-24, 09:52 AM
آخر رد: صالح عبدالله
  اضافة اسطر فارعة في الداتا جريد فيو ismaeel 1 552 25-08-24, 02:43 AM
آخر رد: Taha Okla
  [سؤال] مشكلة في اضافة التاريخ محمد العامر 4 527 16-06-24, 04:12 PM
آخر رد: محمد العامر
  اضافة سطور للداتاجريد فيو أحمد فتح الرحمن 2 515 22-05-24, 10:14 PM
آخر رد: أحمد فتح الرحمن
  اريد اضافة حفظ PDF فى مسار على الهارد- مثال الاستاذ عبدالله الدوسري new_programer 1 511 28-04-24, 04:52 PM
آخر رد: new_programer

التنقل السريع :


يقوم بقرائة الموضوع: