Python dịch lời nói thành lời nói

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
4

pip3 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 động

Chứ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ách

import 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ây

Cá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
4

Ghi chú. Bạn có thể lấy tệp

filename = "16-122828-0002.wav"
1 tại đây

đầu ra

pip3 install SpeechRecognition pydub
6

Vì 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
7

Linux

Trước tiên, bạn cần cài đặt các phụ thuộc

import speech_recognition as sr
0

Hệ đ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
1

Bâ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
2

Tí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
3

Kiể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

Chủ Đề