Tiết lộ. Bài đăng này có thể chứa các liên kết liên kết, nghĩa là khi bạn nhấp vào liên kết và mua hàng, chúng tôi sẽ nhận được hoa hồng
Nhận dạng giọng nói là khả năng phần mềm máy tính xác định các từ và cụm từ trong ngôn ngữ nói và chuyển đổi chúng thành văn bản mà con người có thể đọc được. Trong hướng dẫn này, bạn sẽ tìm hiểu cách chuyển lời nói thành văn bản trong Python bằng thư viện SpeechRecognition
Do đó, chúng tôi không cần phải xây dựng bất kỳ mô hình học máy nào từ đầu, thư viện này cung cấp cho chúng tôi các hàm bao thuận tiện cho các API nhận dạng giọng nói công khai nổi tiếng khác nhau [chẳng hạn như Google Cloud Speech API, IBM Speech To Text, v.v. ]
Lưu ý rằng nếu bạn không muốn sử dụng API và thay vào đó trực tiếp thực hiện suy luận trên các mô hình máy học, thì hãy xem hướng dẫn này, trong đó tôi sẽ chỉ cho bạn cách bạn có thể sử dụng mô hình học máy tiên tiến nhất hiện nay
học cũng được. Cách dịch văn bản bằng Python
Được rồi, hãy bắt đầu, cài đặt thư viện bằng cách sử dụng
import speech_recognition as sr
4pip3 install SpeechRecognition pydub
Được rồi, mở một tệp Python mới và nhập nó
import speech_recognition as sr
Điều thú vị về thư viện này là nó hỗ trợ một số công cụ nhận dạng
Chúng tôi sẽ sử dụng Google Speech Recognition tại đây, vì nó đơn giản và không yêu cầu bất kỳ khóa API nào
Đọc từ một tập tin
Đảm bảo rằng bạn có một tệp âm thanh trong thư mục hiện tại có chứa bài phát biểu tiếng Anh [nếu bạn muốn làm theo cùng tôi, hãy lấy tệp âm thanh tại đây]
filename = "16-122828-0002.wav"
Tệp này được lấy từ bộ dữ liệu LibriSpeech, nhưng bạn có thể sử dụng bất kỳ tệp WAV âm thanh nào bạn muốn, chỉ cần thay đổi tên của tệp, hãy khởi tạo trình nhận dạng giọng nói của chúng tôi
# initialize the recognizer
r = sr.Recognizer[]
Đoạn mã dưới đây chịu trách nhiệm tải tệp âm thanh và chuyển đổi lời nói thành văn bản bằng Google Speech Recognition
# open the file
with sr.AudioFile[filename] as source:
# listen for the data [load audio to memory]
audio_data = r.record[source]
# recognize [convert from speech to text]
text = r.recognize_google[audio_data]
print[text]
Quá trình này sẽ mất vài giây để hoàn tất, vì nó tải tệp lên Google và lấy đầu ra, đây là kết quả của tôi
I believe you're just talking nonsense
Đoạn mã trên hoạt động tốt đối với các tệp âm thanh kích thước nhỏ hoặc trung bình. Trong phần tiếp theo, chúng ta sẽ viết mã cho các tệp lớn
Đọc các tệp âm thanh lớn
Nếu bạn muốn thực hiện nhận dạng giọng nói của một tệp âm thanh dài, thì chức năng bên dưới xử lý khá tốt
# importing libraries
import speech_recognition as sr
import os
from pydub import AudioSegment
from pydub.silence import split_on_silence
# create a speech recognition object
r = sr.Recognizer[]
# a function that splits the audio file into chunks
# and applies speech recognition
def get_large_audio_transcription[path]:
"""
Splitting the large audio file into chunks
and apply speech recognition on each of these chunks
"""
# open the audio file using pydub
sound = AudioSegment.from_wav[path]
# split audio sound where silence is 700 miliseconds or more and get chunks
chunks = split_on_silence[sound,
# experiment with this value for your target audio file
min_silence_len = 500,
# adjust this per requirement
silence_thresh = sound.dBFS-14,
# keep the silence for 1 second, adjustable as well
keep_silence=500,
]
folder_name = "audio-chunks"
# create a directory to store the audio chunks
if not os.path.isdir[folder_name]:
os.mkdir[folder_name]
whole_text = ""
# process each chunk
for i, audio_chunk in enumerate[chunks, start=1]:
# export audio chunk and save it in
# the `folder_name` directory.
chunk_filename = os.path.join[folder_name, f"chunk{i}.wav"]
audio_chunk.export[chunk_filename, format="wav"]
# recognize the chunk
with sr.AudioFile[chunk_filename] as source:
audio_listened = r.record[source]
# try converting it to text
try:
text = r.recognize_google[audio_listened]
except sr.UnknownValueError as e:
print["Error:", str[e]]
else:
text = f"{text.capitalize[]}. "
print[chunk_filename, ":", text]
whole_text += text
# return the text for all chunks detected
return whole_text
Ghi chú. Bạn cần cài đặt Pydub bằng cách sử dụng
import speech_recognition as sr
4 để đoạn mã trên hoạt độngChức năng trên sử dụng chức năng
import speech_recognition as sr
6 từ mô-đun import speech_recognition as sr
7 để chia dữ liệu âm thanh thành các phần khi im lặng. Tham số import speech_recognition as sr
8 là độ dài im lặng tối thiểu được sử dụng để táchimport speech_recognition as sr
9 là ngưỡng trong đó bất cứ điều gì yên tĩnh hơn mức này sẽ được coi là im lặng, tôi đã đặt nó ở mức dBFS trung bình trừ đi 14, đối số filename = "16-122828-0002.wav"
0 là lượng im lặng để lại ở đầu và cuối mỗi đoạn được phát hiện tính bằng mili giâyCác thông số này sẽ không hoàn hảo cho tất cả các tệp âm thanh, hãy thử trải nghiệm các thông số này với nhu cầu âm thanh lớn của bạn
Sau đó, chúng tôi lặp lại tất cả các đoạn và chuyển đổi từng âm thanh giọng nói thành văn bản, sau đó cộng chúng lại với nhau, đây là một ví dụ chạy
pip3 install SpeechRecognition pydub
4Ghi chú. Bạn có thể lấy tệp
filename = "16-122828-0002.wav"
1 tại đâyđầu ra
pip3 install SpeechRecognition pydub
6Vì vậy, chức năng này tự động tạo một thư mục cho chúng tôi và đặt các đoạn của tệp âm thanh gốc mà chúng tôi đã chỉ định, sau đó nó chạy nhận dạng giọng nói trên tất cả chúng
Đọc từ Micrô
Điều này yêu cầu cài đặt PyAudio trong máy của bạn, đây là quá trình cài đặt tùy thuộc vào hệ điều hành của bạn
các cửa sổ
Bạn chỉ có thể pip cài đặt nó
pip3 install SpeechRecognition pydub
7Linux
Trước tiên, bạn cần cài đặt các phụ thuộc
import speech_recognition as sr
0Hệ điều hành Mac
Trước tiên, bạn cần cài đặt portaudio, sau đó bạn có thể chỉ cần cài đặt nó
import speech_recognition as sr
1Bây giờ, hãy sử dụng micrô của chúng tôi để chuyển đổi bài phát biểu của chúng tôi
import speech_recognition as sr
2Tính năng này sẽ nghe từ micrô của bạn trong 5 giây rồi cố gắng chuyển lời nói đó thành văn bản
Nó khá giống với đoạn mã trước, nhưng chúng tôi đang sử dụng đối tượng Microphone[] ở đây để đọc âm thanh từ micrô mặc định, sau đó chúng tôi sử dụng tham số thời lượng trong hàm record[] để dừng đọc sau 5 giây rồi tải lên
Bạn cũng có thể sử dụng tham số offset trong hàm record[] để bắt đầu ghi sau giây offset
Ngoài ra, bạn có thể nhận dạng các ngôn ngữ khác nhau bằng cách chuyển tham số ngôn ngữ cho hàm detect_google[]. Chẳng hạn, nếu bạn muốn nhận dạng giọng nói tiếng Tây Ban Nha, bạn sẽ sử dụng
import speech_recognition as sr
3Kiểm tra các ngôn ngữ được hỗ trợ trong
Phần kết luận
Như bạn có thể thấy, việc sử dụng thư viện này để chuyển lời nói thành văn bản khá dễ dàng và đơn giản. Thư viện này được sử dụng rộng rãi ngoài kia. Kiểm tra tài liệu chính thức
Nếu bạn cũng muốn chuyển đổi văn bản thành giọng nói trong Python, hãy xem hướng dẫn này
Cuối cùng, nếu bạn là người mới bắt đầu và muốn học Python, tôi khuyên bạn nên tham gia khóa học Python For Everyone Coursera, trong đó bạn sẽ học được nhiều điều về Python. Bạn cũng có thể xem trang tài nguyên và khóa học của chúng tôi để xem các tài nguyên Python mà tôi đề xuất về các chủ đề khác nhau