110.29K
Category: programmingprogramming

Python дастурлаш тилининг сунъий интеллект масалаларида қўлланилиши. 10-маъруза

1.

СУНЪИЙ ИНТЕЛЛЕКТ ВА
НЕЙРОН ТАРМОҚЛАРИ
10-маъруза.
Python дастурлаш тилининг
сунъий интеллект
масалаларида қўлланилиши

2.

Python – bu murakkab dasturlar va tizimlari uchun ishlatiladigan yuqori
darajadagi dasturlash tili, shuningdek umumiy maqsadli til. U ochiq manba
va barcha operatsion tizimlar uchun mavjud platformaga ega.
Pythonning SI uchun kutubxonalari:
Tensorflow: Mashinani o'rganish algoritmlarini yozishda, chuqur o'rganishda
va og'ir hisob-kitoblarda, shu jumladan sun'iy neyron tarmoqlarda
foydalaniladi.
Scikit-Learn: Klasterlash, chiziqli va logistik regressiyalar, tasniflash va
boshqalar kabi murakkab ma'lumotlarni qayta ishlashda foydalaniladi.
NumPy: Ilmiy yoki matematik ma'lumotlarni hisoblash uchun ishlatiladi.
Theano: Ko'p o'lchovli massivlar bilan matematik ifodalarni hisoblash uchun
foydalaniladi.

3.

Keras: Tez hisob-kitoblar va prototiplash imkonini beradi va hisoblash
modellari, ma'lumotlar to'plamlari, grafiklarni vizualizatsiya qilish uchun
ishlatiladi.
NLTK: Tabiiy tilni tanib olish va qayta ishlash, matnni tahlil qilish uchun
foydalaniladi.
Matplotlib:
2D chizmalar, gistogrammalar va
vizualizatsiya ob'ektlarini yaratish uchun ishlatiladi.
diagrammalar
kabi
PyBrain: Neyron tarmoqlarda o'rganishda qo'llaniladi.
Kofe: Chuqur o'rganish uchun ishlatiladi va kuniga 60 million tasvirni qayta
ishlaydi.
StatsModels: Statistik algoritmlar uchun ishlatiladi.

4.

Python dasturlash tili ko’plab identifikatsiya tizimlarida qo‘llaniladi, bularga misol
sifatida yuzni tanish tizimi, ovozni tanish tizimi, barmoq izi orqali
identifikatsiyalash tizimlarini misol qilish mumkin. SI tizimlarini ham Python
dasturlash tizimi orqali o‘qitilganda ma’lum bir algoritmlardan (CNN) va
kutubxonalardan (Keras Tensorflow) foydalaniladi.
Keras
– bu Pythonda yozilgan, Theano yoki Tensorflowning asosiga
qurilgan ochiq kodli neyron tarmoq kutubxonasidir. U modulli, tezkor va ishlatish
uchun qulay, Google kompaniyasi muhandisi Fransua Cholet ishlab chiqqan.
Keras hisob-kitoblarni amalga oshirish uchun TensorFlow, CNTK yoki Theano
“Backend” kutubxonalaridan foydalanadigan, yuqori darajada ishlaydigan API
(application programming interface) hisoblanadi.

5.

Python dasturlash tilida ovoz ma’lumotlarini yozish va qayta ishlashda pyaudio,
librosa, numpy, scipy va glob kutubxonalari imkoniyatlaridan foydalaniladi.
Insonni ovoz ma’lumotlari asosida identifikatsiya qilish masalasini echishda Python
dasturlash tilining catboost (CatBoostClassifier) kutubxonasidan foydalaniladi.
Ta’kidlash joizki, ushbu kutubxona sun’iy intellekt tizimlarining asosiy
yo’nalishlaridan biri bo’lgan ob’ektlarni klassifikatsiyalash vazifasini bajarishga
mo’ljallangan.

6.

import pyaudio
import wave
chunk = 1024 # Запись кусками по 1024 сэмпла
sample_format = pyaudio.paInt16 # 16 бит на выборку
channels = 2
rate = 44100 # Запись со скоростью 44100 выборок(samples) в секунду
seconds = 3
filename = "output_sound6.wav"
p = pyaudio.PyAudio() # Создать интерфейс для PortAudio
print('Recording...')
stream = p.open(format=sample_format,
channels=channels,
rate=rate,
frames_per_buffer=chunk,
input_device_index=0, # индекс устройства с которого будет идти запись звука
input=True)
frames = [] # Инициализировать массив для хранения кадров
# Хранить данные в блоках в течение 3 секунд
for i in range(0, int(rate / chunk * seconds)):
data = stream.read(chunk)
frames.append(data)
# Остановить и закрыть поток
stream.stop_stream()
stream.close()
# Завершить интерфейс PortAudio
p.terminate()
print('Finished recording!')
# Сохранить записанные данные в виде файла WAV
wf = wave.open(filename, 'wb')
wf.setnchannels(channels)
wf.setsampwidth(p.get_sample_size(sample_format))
wf.setframerate(rate)
wf.writeframes(b''. join(frames))
wf.close()

7.

import librosa
import numpy as np
import librosa.display
import scipy
from scipy import stats
# функция вернет 72 фичи для аудиозаписи по пути wav_path
def get_base_features(wav_path):
ff_list = []
y, sr = librosa.load(wav_path, sr=None)
y_harmonic, y_percussive = librosa.effects.hpss(y)
tempo, beat_frames = librosa.beat.beat_track(y=y_harmonic, sr=sr)
chroma = librosa.feature.chroma_cens(y=y_harmonic, sr=sr)
mfccs = librosa.feature.mfcc(y=y_harmonic, sr=sr, n_mfcc=13)
cent = librosa.feature.spectral_centroid(y=y, sr=sr)
contrast = librosa.feature.spectral_contrast(y=y_harmonic, sr=sr)
rolloff = librosa.feature.spectral_rolloff(y=y, sr=sr)
zrate = librosa.feature.zero_crossing_rate(y_harmonic)
chroma_mean = np.mean(chroma, axis=1)
chroma_std = np.std(chroma, axis=1)
for i in range(0, 12):
ff_list.append(chroma_mean[i])
for i in range(0, 12):
ff_list.append(chroma_std[i])
mfccs_mean = np.mean(mfccs, axis=1)
mfccs_std = np.std(mfccs, axis=1)

8.

for i in range(0, 13):
ff_list.append(mfccs_mean[i])
for i in range(0, 13):
ff_list.append(mfccs_std[i])
cent_mean = np.mean(cent)
cent_std = np.std(cent)
cent_skew = scipy.stats.skew(cent, axis=1)[0]
contrast_mean = np.mean(contrast, axis=1)
contrast_std = np.std(contrast, axis=1)
rolloff_mean = np.mean(rolloff)
rolloff_std = np.std(rolloff)
data = np.concatenate(([cent_mean, cent_std, cent_skew],
contrast_mean, contrast_std,
[rolloff_mean, rolloff_std, rolloff_std]), axis=0)
ff_list += list(data)
zrate_mean = np.mean(zrate)
zrate_std = np.std(zrate)
zrate_skew = scipy.stats.skew(zrate, axis=1)[0]
ff_list += [zrate_mean, zrate_std, zrate_skew]
ff_list.append(tempo)
return ff_list
import glob
from catboost import CatBoostClassifier
from sklearn.model_selection import train_test_split

9.

h_features = []
s_features = []
ii, jj = 0, 0
filename = "output_sound.wav"
for f_path in glob.glob('c:/Training_Data/human/*.wav'):
h_features.append(get_base_features(f_path))
ii += 1
if ii > 50:
break
for f_path in glob.glob('c:/Training_Data/spoof/*.wav'):
s_features.append(get_base_features(f_path))
jj += 1
if jj > 50:
break
X_train, X_test, y_train, y_test = train_test_split(
h_features + s_features,
[1] * len(h_features) + [0] * len(s_features),
test_size=0.25,
random_state=42,
)
clf = CatBoostClassifier(iterations=200)
clf.fit(X_train, y_train, eval_set=(X_test, y_test))
print(clf.get_best_iteration())

10.

# This is a sample Python script.
# Press Shift+F10 to execute it or replace it with your code.
# Press Double Shift to search everywhere for classes, files, tool windows, actions, and settings.
def print_hi(name):
# Use a breakpoint in the code line below to debug your script.
print(f'Hi, {name}') # Press Ctrl+F8 to toggle the breakpoint.
# Press the green button in the gutter to run the script.
if __name__ == '__main__':
print_hi('PyCharm')
# See PyCharm help at https://www.jetbrains.com/help/pycharm/
# Подключение всех необходимых библиотек
# Нам нужно: speech_recognition, os, sys, webbrowser
# Для первой бибилотеки прописываем также псевдоним
import speech_recognition as sr
import os
import sys
import webbrowser
# Функция, позволяющая проговаривать слова
# Принимает параметр "Слова" и прогроваривает их
def talk(words):
print(words) # Дополнительно выводим на экран
os.system("say " + words) # Проговариваем слова
# Вызов функции и передача строки
# именно эта строка будет проговорена компьютером
talk("Привет, чем я могу помочь вам?")

11.

"""
def command():
Функция command() служит для отслеживания микрофона.
Вызывая функцию мы будет слушать что скажет пользователь,
при этом для прослушивания будет использован микрофон.
Получение данные будут сконвертированы в строку и далее
будет происходить их проверка.
# Создаем объект на основе библиотеки
# speech_recognition и вызываем метод для определения данных
r = sr.Recognizer()
# Начинаем прослушивать микрофон и записываем данные в source
with sr.Microphone() as source:
# Просто вывод, чтобы мы знали когда говорить
print("Говорите")
# Устанавливаем паузу, чтобы прослушивание
# началось лишь по прошествию 1 секунды
r.pause_threshold = 1
# используем adjust_for_ambient_noise для удаления
# посторонних шумов из аудио дорожки
r.adjust_for_ambient_noise(source, duration=1)
# Полученные данные записываем в переменную audio
# пока мы получили лишь mp3 звук
audio = r.listen(source)
try: # Обрабатываем все при помощи исключений
"""
Распознаем данные из mp3 дорожки.
Указываем что отслеживаемый язык русский.
Благодаря lower() приводим все в нижний регистр.
Теперь мы получили данные в формате строки,
которые спокойно можем проверить в условиях
"""
zadanie = r.recognize_google(audio, language="ru-RU").lower()
# Просто отображаем текст что сказал пользователь
print("Вы сказали: " + zadanie)

12.

# Если не смогли распознать текст, то будет вызвана эта ошибка
except sr.UnknownValueError:
# Здесь просто проговариваем слова "Я вас не поняла"
# и вызываем снова функцию command() для
# получения текста от пользователя
talk("Я вас не поняла")
zadanie = command()
# В конце функции возвращаем текст задания
# или же повторный вызов функции
return zadanie
# Данная функция служит для проверки текста,
# что сказал пользователь (zadanie - текст от пользователя)
def makeSomething(zadanie):
# Попросту проверяем текст на соответствие
# Если в тексте что сказал пользователь есть слова
# "открыть сайт", то выполняем команду
if 'открыть сайт' in zadanie:
# Проговариваем текст
talk("Уже открываю")
# Указываем сайт для открытия
url = 'https://itproger.com'
# Открываем сайт
webbrowser.open(url)
# если было сказано "стоп", то останавливаем прогу
elif 'стоп' in zadanie:
# Проговариваем текст
talk("Да, конечно, без проблем")
# Выходим из программы
sys.exit()
# Аналогично
elif 'имя' in zadanie:
talk("Меня зовут Сири")
# Вызов функции для проверки текста будет
# осуществляться постоянно, поэтому здесь
# прописан бесконечный цикл while
while True:
makeSomething(command())
English     Русский Rules