Cách nhập âm thanh trong Python

Tôi đã dùng thử dịch vụ sao chép cốt lõi của nó và trải nghiệm một số tính năng thú vị do AI cung cấp. tính năng kiểm duyệt nội dung phát hiện các chủ đề nhạy cảm và tính năng phát hiện chủ đề trích xuất các chủ đề được nói đến trong mỗi phân đoạn âm thanh. [Tôi đã tạo ứng dụng Streamlit để giới thiệu cách áp dụng tính năng cuối cùng này để phân tích video Youtube. Bạn có thể kiểm tra xem nó ra ở đây. Mã này cũng có sẵn trên Github. ]

Tất cả các thử nghiệm này đều được thực hiện ngoại tuyến và cần một chút thời gian chạy để tạo đầu ra. Trên thực tế, sau khi bạn gửi tệp âm thanh của mình tới AssemblyAI, tác vụ chép lời sẽ được gửi tới một hàng đợi và sau khi hàng đợi xử lý xong, bạn có thể truy xuất bản chép lời. Nó như thế, bạn sẽ phải đợi

Nhưng điều gì sẽ xảy ra nếu bạn có thể phiên âm dữ liệu âm thanh của mình trong khi dữ liệu đó đang được AssemblyAI nhập vào cùng một lúc?

Đây là những gì chúng tôi gọi là sao chép thời gian thực

Bài đăng này sẽ hướng dẫn bạn quy trình sử dụng AssemblyAI để sao chép theo thời gian thực. Trước tiên, chúng tôi sẽ thiết lập môi trường với các phụ thuộc phù hợp, sau đó chúng tôi sẽ tạo các hàm không đồng bộ trong Python để giao tiếp với máy chủ WebSocket của AssemblyAI

Ok, chúng ta hãy xem 👀

👉 Thiết lập tài khoản của bạn

Phiên âm thời gian thực là một tính năng trả phí. Để có thể sử dụng nó, bạn sẽ phải tạo một tài khoản trên AssemblyAI và nhập thông tin thẻ tín dụng của mình

Ảnh chụp màn hình của tác giả

Bạn có thể tìm hiểu thêm về giá cả tại đây

Khi tài khoản của bạn được định cấu hình, hãy lấy khóa API của bạn và chuyển sang phần tiếp theo

👉 Cài đặt một số phụ thuộc

Vì chúng tôi sẽ phiên âm theo thời gian thực, nên chúng tôi cần ghi lại các luồng âm thanh trực tiếp từ micrô và chuyển chúng ngay lập tức tới API

Trước tiên, chúng ta cần cài đặt PortAudio, một thư viện I/O âm thanh đa nền tảng, nguồn mở, cung cấp một API rất đơn giản để ghi và/hoặc phát âm thanh

Nếu bạn đang dùng Mac OS, bạn có thể sử dụng trình quản lý gói homebrew để cài đặt nó

brew install portaudio

Nếu bạn đang sử dụng một hệ điều hành khác, bạn có thể muốn kiểm tra liên kết này

Sau đó, bạn sẽ cần cài đặt thư viện PyAudio Python cung cấp các ràng buộc cho PortAudio

pip install pyaudio

Cuối cùng, bạn sẽ cần cài đặt thư viện websockets cho phép xây dựng máy chủ và máy khách WebSocket. điều này sẽ giúp chúng tôi truyền phát âm thanh tới AssemblyAI và ghi lại các bản chép lời theo thời gian thực

pip install websockets
👉 Mở luồng âm thanh bằng PyAudio

Để có thể truyền phát âm thanh đến AssemblyAI, trước tiên chúng ta cần mở một luồng âm thanh bằng PyAudio

Tạo luồng yêu cầu một số tham số

  • Số lượng khung trên mỗi bộ đệm [3200]. Bộ đệm là một đoạn gồm một số khung tùy ý được sử dụng để chia tín hiệu gốc thành các phần nhỏ hơn
  • Định dạng âm thanh. [16 bit]. Điều này thể hiện kích thước của mỗi mẫu, tôi. e từng khung hình. 2 byte = 16 bit, do đó, điều này cho ý tưởng sơ bộ về cách mỗi mẫu được mã hóa
  • Số lượng kênh. [1]. Điều này đề cập đến số lượng luồng âm thanh sẽ sử dụng. Ví dụ: máy tính hiện đại sử dụng hai kênh cho đầu ra âm thanh nổi. một cho loa trái và một cho loa phải
  • tỷ lệ lấy mẫu. [16000]. Đây là số khung hình trên giây [hoặc trên một đơn vị khác] được lấy từ tín hiệu liên tục để tạo thành tín hiệu rời rạc

Sau khi luồng được mở, luồng có thể ghi lại dữ liệu âm thanh mà chúng tôi ghi từ micrô

Bây giờ, chúng tôi cần kết nối luồng này với phiên âm thời gian thực của AssemblyAI. dịch vụ

Để làm được điều này chúng ta sẽ mở một WebSocket connexion để có thể gửi và nhận dữ liệu cùng lúc. Chúng tôi sẽ cần loại kết nối mạng cụ thể này vì đó là thứ mà AssemblyAI sử dụng

Hai chức năng sẽ sử dụng kết nối WebSocket mở

  • Hàm đầu tiên gửi dữ liệu âm thanh đầu vào theo tốc độ mà chúng tôi đã xác định khi tạo luồng PyAudio. Sau đó, nó chuyển đổi dữ liệu thành base64, giải mã thành định dạng chuỗi và gửi tới điểm cuối AssebmlyAI WebSocket

  • Chức năng thứ hai liên tục tìm nạp bản chép lời từ AssemblyAI và in ra màn hình

— Tái bút. nếu bạn thắc mắc _ws là gì, hãy xem toàn bộ tập lệnh ở cuối

Hai chức năng này chạy đồng thời

Để đợi chúng thực thi, hàm bao bọc sử dụng hàm asyncio.gather

Đây là mã của chức năng bao bọc

Bây giờ để làm cho chức năng bao bọc này chạy không đồng bộ, chúng ta sẽ cần gọi lệnh này

asyncio.run[send_receive[]]
👉 Kịch bản đầy đủ

Kết thúc mọi thứ, đây là kịch bản đầy đủ. Lưu ý rằng tôi đã sử dụng python-dotenv [như trong các bài viết trước] để đọc khóa API

👉 Bản trình diễn

Bây giờ, đây là bản demo được ghi lại của phiên âm thời gian thực

👉 Tài liệu tham khảo
  • https. // hướng tới khoa học dữ liệu. com/how-to-transcribe-and-analyze-audio-files-with-python-and-assemblyai-22660dbf8e66
  • https. // hướng tới khoa học dữ liệu. com/how-to-moderate-audio-data-using-python-and-assemblyai-a5eab9910730
  • https. // hướng tới khoa học dữ liệu. com/how-to-build-a-streamlit-app-to-extract-topics-from-youtube-videos-9c7aebbfab8e
  • https. // ổ cắm web. đọcthedocs. io/vi/ổn định/giới thiệu/hướng dẫn1. html
  • https. //www. lắp ráp. com/
  • https. // tài liệu. lắp ráp. com/walkthroughs#realtime-streaming-transcription
Cảm ơn đã đọc 🙏

Điều này đánh dấu sự kết thúc của loạt blog AssemblyAI. Tôi hy vọng nó đã cung cấp cho bạn cái nhìn tổng quan về API và các tính năng AI giúp hiểu được bản ghi

Nếu bạn muốn tìm hiểu thêm về API này, bạn có thể xem các bài đăng trước đây của tôi và tài liệu chính thức hoặc chơi với ứng dụng Streamlit mà tôi đã tạo

Bạn có thể thêm âm thanh vào Python không?

Thư viện python-sounddevice và pyaudio cung cấp các cách ghi âm thanh bằng Python . bản ghi python-sounddevice vào mảng NumPy và bản ghi pyaudio vào đối tượng byte. Cả hai thứ này đều có thể được lưu trữ dưới dạng tệp WAV bằng thư viện scipy và wave tương ứng.

Làm cách nào để tạo âm thanh trong Python?

Để tạo âm thanh bíp trong Python, bạn có các tùy chọn sau. .
Sử dụng ký tự chuông trên thiết bị đầu cuối
Sử dụng AppKit để phát âm thanh hệ thống MacOS
Sử dụng winound để phát âm thanh hệ thống Windows
Sử dụng pygame để phát các tệp âm thanh tùy chỉnh
Sử dụng simpleaudio để phát các tệp âm thanh tùy chỉnh
Sử dụng gói tiếng bíp

Chủ Đề