Phần 16: Nhận diện giọng nói – phần 2 – Lập trình AI bằng Python

- 4. Tạo tín hiệu âm thanh đơn điệu :
Hai bước mà các bạn đã thấy rất quan trọng để tìm hiểu thêm về các tín hiệu. Hiện tại, bước này sẽ có ích nếu như bạn cần tạo tín hiệu âm thanh với những thông số được xác định trước. Chú ý rằng bước này sẽ lưu tín hiệu âm thanh trong file đầu ra.
Trong ví dụ sau, ta sẽ tạo 1 tín hiệu đơn điệu, sử dụng Python, sẽ lưu trữ trong 1 file
import numpy as np
import matplotlib.pyplot as plt
from scipy.io.wavfile import write
Cung cấp file nơi file đầu ra sẽ lưu
output_file = 'audio_signal_generated.wav'
chỉ định các tham số bạn chọn như dưới đây :
length = 4 # in seconds
frequency_sampling = 44100 # in Hz
frequency_tone = 784
min_val = -4 * np.pi
max_val = 4 * np.pi
Trong bước này, chúng ta sẽ có thể tạo nên tín hiệu âm thanh
t = np.linspace(min_val, max_val, length * frequency_sampling)
audio_signal = np.sin(2 * np.pi * tone_freq * t)
Lưu file âm thanh trong file đầu ra :
write(output_file, frequency_sampling, signal_scaled)
Trích xuất 100 giá trị đầu tiên cho biểu đồ
audio_signal = audio_signal[:100]
time_axis = 1000 * np.arange(0, len(sign), 1) / float(sampling_freq)
Hình dung tín hiệu âm thanh được tạo nên như dưới đây:
plt.plot(time_axis, sign, colour='blue')
plt.xlabel('Time in milliseconds')
plt.ylabel('Amplitude')
plt.title('Generated audio sign')
plt.present()
(*2*)
5. Tính năng trích xuất từ giọng nói :
Đây chính là bước quan trọng nhất ở trong việc xây dựng bộ nhận dạng giọng nói vì sau khi chuyển đổi tín hiệu giọng nói sang miền tần số, ta phải chuyển nó thành dạng điểm đặc biệt có thể sử dụng được. Chúng tôi có thể sử dụng những kỹ thuật trích xuất tính năng khác như MFCC, PLP, PLP-RASTA, v.v. cho mục đích này.
Trong ví dụ sau, mình sẽ trích xuất các tính năng từ tín hiệu, từng bước, sử dụng Python, bằng cách sử dụng kỹ thuật MFCC.
import numpy as np
import matplotlib.pyplot as plt
from scipy.io import wavfile
from python_speech_features import mfcc, logfbank
Hiện tại, hãy đọc file âm thanh được lưu trữ. Nó sẽ trả về 2 giá trị – tần số lấy mẫu và tín hiệu âm thanh. Cung cấp link của file âm thanh nơi nó được lưu trữ.
frequency_sampling, audio_signal = wavfile.learn("/Users/admin/audio_file.wav")
Chú ý rằng tại đây mình đang lấy 15000 mẫu đầu tiên để phân tích.
audio_signal = audio_signal[:15000]
Sử dụng những kỹ thuật của MFCC và thực hiện lệnh sau để trích xuất các tính năng của MFCC
features_mfcc = mfcc(audio_signal, frequency_sampling)
In các tham số MFCC như dưới đây :
print('nMFCC:nNumber of home windows =', features_mfcc.form[0])
print('Length of every function =', features_mfcc.form[1])
Vẽ options MFCC như dưới đây :
features_mfcc = features_mfcc.T
plt.matshow(features_mfcc)
plt.title('MFCC')
Ta sẽ làm việc với filter financial institution options , đầu tiên cần extract filtter financial institution options :
filterbank_features = logfbank(audio_signal, frequency_sampling)
In các đối số filter financial institution
print('nFilter financial institution:nNumber of home windows =', filterbank_features.form[0])
print('Length of every function =', filterbank_features.form[1])
Vẽ và visualize filter financial institution options :
filterbank_features = filterbank_features.T
plt.matshow(filterbank_features)
plt.title('Filter financial institution')
plt.present()
Theo kết quả của những bước trên, bạn sẽ có thể quan sát những kết quả đầu ra sau: Hình 1 cho MFCC và Hình 2 cho Filter Bank :
(*2*)(*2*)
6. Nhận biết các từ đã nói :
Nhận dạng giọng nói nghĩa là khi con người đang nói, 1 cỗ máy sẽ hiểu nó. Tại đây, mình đang dùng Google Speech API bằng Python để biến điều ấy thành hiện thực
- Pyaudio : pip íntall Pyaudio
- SpeechRecognition : pip set up SpeechRecognition.
- Google-Speech-API : pip set up google-api-python-shopper
Quan sát ví dụ sau để hiểu về nhận dạng lời nói :
import speech_recognition as sr
Tạo object như dưới đây :
recording = sr.Recognizer()
Hiện tại, mô-đun Micrô () sẽ lấy giọng nói làm đầu vào :
with sr.Microphone() as supply: recording.adjust_for_ambient_noise(supply)
print("Please Say one thing:")
audio = recording.pay attention(supply)
Hiện tại Google API sẽ nhận dạng giọng nói và đưa ra đầu ra.
strive:
print("You stated: n" + recording.recognize_google(audio))
besides Exception as e:
print(e)
Output như dưới đây ;
Please Say Something:
You stated: