به بخش پرسش و پاسخ یادگیری عمیق خوش آمدید,
این نسخه آزمایشی سایت است.
لطفا به نکات زیر توجه کنید:
  • برای ارتباط با مدیران میتوانید از صفحه مدیران اقدام کنید.
  • سوال و جواب ها باید به زبان فارسی باشند. استفاده از زبان انگلیسی یا فینگلیش برای پاسخ دادن مجاز نیست.
  • لطفا بعد از پرسش سوال لینک سوال خود را در گرو تلگرام (Iran Deep Learning Group) معرفی کنید تا سریعتر به جواب برسید. برای دسترسی به آخرین لینک از منابع یادگیری استفاده کنید
  • لطفا بجای عکس از متن استفاده کنید. اگر متون طولانی هستند از سایت pastebin.com برای اپلود استفاده کرده و لینک حاصل را در سوال خود قرار دهید. برای قرار دادن تصویر ، از بخش ارسال تصویر ادیتور سایت استفاده کنید.
  • بعد از دریافت پاسخ، بهترین پاسخ را از طریق کلیک بر روی علامت تیک انتخاب کنید
  • اگر با خطا و یا مشکلی مواجه شدید از بخش تماس با ما در انتهای صفحه و یا ایمیل Coderx7@gmail.com موضوع را اطلاع دهید.

با تشکر

0 امتیاز

سلام وقت بخیر.
من چند سالی هست که برنامه نویسی می کنم و مدتی هم با یادگیری ماشین کار کردم اما خیلی کم. در رابطه با پردازش صوت و موارد مرتبط بطور کامل تازه کار هستم، برای یادگیری پروژه ای برای خودم تعریف کردم، توی این پروژه باید بتونم اعداد ۰ تا ۹ را با استفاده از پایتون و tensorflow تشخیص بدم. یک دیتاست از اعداد صوتی پیدا کردم(انگلیسی هست و فعلا برام مهم نیست فارسی باشه). خیلی سرچ کردم چندین مطلب آموزشی پیدا کردم اما همه با استفاده از بسته هایی مثل SpeechRecognition در پایتون پیاده سازی را انجام داده بودند. اما من میخوام بطور کامل از صفر برنامه نویسی کنم و مدل را آموزش بدم.
یکی از آموزش ها از صفر این کار را برای تشخیص یکسری دستورات صوتی انجام داده بود و من برای تشخیص اعداد کمی تغییرش دادم اما خطا داد.
کسی هست بتونه در این رابطه کمکم کنه ؟ از کجا باید شروع کنم ؟

لینک دیتاست : https://github.com/Jakobovski/free-spoken-digit-dataset
لینک آموزش : https://www.analyticsvidhya.com/blog/2019/07/learn-build-first-speech-to-text-model-python/

من کد داخل وبسایتی که معرفی کردم را کمی ویرایش کردم اما خطا میده.

all_wave = np.array(all_wave).reshape(-1,8000,1)

توی آموزش کد بالا را استفاده کرده بود. اما به من خطا میده و مجبورم به 2000 (تعداد نمونه هایی که دارم) تغییرش بدم. نمیدونم چرا ۸۰۰۰ نوشته بود. به فرکانس صدا ربط داره ؟!

بعد از تغییر 8000 به 2000 دیگه خطا نداد اما بعد از اجرای خط زیر خطا داد :

from sklearn.model_selection import train_test_split
x_tr, x_val, y_tr, y_val = train_test_split(np.array(all_wave),np.array(y),stratify=y,test_size = 0.2,random_state=777,shuffle=True)

خطایی که میده اینه :

--------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-211-36529e41a1b9> in <module>()
      1 from sklearn.model_selection import train_test_split
----> 2 x_tr, x_val, y_tr, y_val = train_test_split(np.array(all_wave),np.array(y),stratify=y,test_size = 0.2,random_state=777,shuffle=True)

2 frames
/usr/local/lib/python3.6/dist-packages/sklearn/utils/validation.py in check_consistent_length(*arrays)
    203     if len(uniques) > 1:
    204         raise ValueError("Found input variables with inconsistent numbers of"
--> 205                          " samples: %r" % [int(l) for l in lengths])
    206 
    207 

ValueError: Found input variables with inconsistent numbers of samples: [1, 2000]

داخل پوشه recordings کل فایل های صوتی ریخته شده و کاراکتر اول نام هر فایل صوتی هم همون عددی هست که تلفظ شده. مثلا اسم فایل ها میتونه چیزی مثل این باشه :

9_yweweler_48

که مشخصا داره صدای ۹ را تلفظ می کنه.
این هم کد کامل تا جایی که خطا میده :

import os
import librosa
import IPython.display as ipd
import matplotlib.pyplot as plt
import numpy as np
from scipy.io import wavfile
import warnings
from google.colab import drive

warnings.filterwarnings("ignore")

drive.mount('/content/drive')
labels=os.listdir(train_audio_path)   # get all file names in directory
    
all_wave = []
all_label = []
i = 0
total_waves = len(labels)
for label in labels:
    i += 1
    print(i,' of ', total_waves)
    for f in range(0,10):
      if label.endswith('.wav') and label.startswith(str(f)) :
        samples, sample_rate = librosa.load(train_audio_path + label)
        samples = librosa.resample(samples, sample_rate, 8000)        
        all_wave.append(samples)
        all_label.append(str(f))

from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
y=le.fit_transform(all_label)
classes= list(le.classes_)

from keras.utils import np_utils
y=np_utils.to_categorical(y, num_classes=10)

all_wave = np.array(all_wave).reshape(-1,2000,1)

from sklearn.model_selection import train_test_split
x_tr, x_val, y_tr, y_val = train_test_split(np.array(all_wave),np.array(y),stratify=y,test_size = 0.2,random_state=777,shuffle=True)

کسی میتونه راهنمایی کنه ؟ مشکل کجاست ؟
ممنون

سوال شده توسط (100 امتیاز)
ویرایش شده توسط

لطفا وارد شده یا عضو شوید تا بتوانید سوال بپرسید

...