سلام وقت بخیر.
من چند سالی هست که برنامه نویسی می کنم و مدتی هم با یادگیری ماشین کار کردم اما خیلی کم. در رابطه با پردازش صوت و موارد مرتبط بطور کامل تازه کار هستم، برای یادگیری پروژه ای برای خودم تعریف کردم، توی این پروژه باید بتونم اعداد ۰ تا ۹ را با استفاده از پایتون و 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)
کسی میتونه راهنمایی کنه ؟ مشکل کجاست ؟
ممنون