Scipy - Xử lý âm thanh


14

Tôi đang tìm kiếm các công cụ tốt để xử lý tín hiệu âm thanh. ví dụ: phân tích lời nói và âm nhạc, nhận dạng ngôn ngữ tự động, v.v.

Thư viện Scipy có cung cấp các chức năng xử lý âm thanh không? Liệu nó có một công cụ tốt để xử lý Tín hiệu âm thanh?

Bạn có thể vui lòng đề nghị một công cụ cho việc này?


1
Đúng, scipy cung cấp cơ sở hạ tầng để thực hiện những việc này nhưng bạn cần phải cụ thể hơn một chút về những gì bạn đang có để có câu trả lời hữu ích hơn (đặc biệt là trả lời liệu có "công cụ tốt hơn [scipy]" hay không ).
A_A

1
thời gian thực hay ngoại tuyến?
endolith

ngoại tuyến Tôi đang tìm phân loại Bài phát biểu / Âm nhạc.
dùng1147663

1
Scipy và Numpy cùng nhau cung cấp các công cụ tuyệt vời cho cả xử lý dữ liệu ngoại tuyến và thời gian thực. Kết hợp với Cython hoặc Ctypes (tôi có xu hướng thích cách tiếp cận Cython), thật dễ dàng để hoạt động trên các mảng gọn gàng với các hoạt động nhanh ở mức độ thấp được viết bằng C, nếu các thư viện khác không thể được thuyết phục để phù hợp.
Henry Gomersall

1
điều duy nhất MATLAB thiếu là khả năng xác định nguồn gốc của một mảng là một thứ gì đó không phải là 1. vì vậy, giống như giá trị DC trong đầu ra của FFT nằm trong bin # 1 thay vì bin # 0 như vậy. có một số điều ngớ ngẩn khác về MATLAB (hoặc Octave).
robert bristow-johnson

Câu trả lời:


9

Cá nhân tôi thấy Python là một trong những lựa chọn tốt nhất ngoài kia và tôi đã tự mình làm một số công việc trong lĩnh vực nhận dạng âm thanh. Bạn được hoan nghênh kiểm tra ví dụ phần mềm của tôi để nhận dạng tự động các loài chim từ các bản ghi âm thanh ồn ào: Ornithokrites . Chương trình được Bộ Bảo tồn New Zealand sử dụng và họ rất vui vì điều đó. Dựa trên ví dụ này tôi muốn chỉ ra một số ưu điểm của việc sử dụng Python:

  1. Cộng đồng lớn, phát triển nhanh chóng cung cấp hàng tấn thư viện. SciPy cung cấp rất nhiều phương pháp để xử lý tín hiệu (được cấp, không nhiều và trưởng thành như Matlab). Mặc dù vậy, SciPy, mặc dù là một trong những điều quan trọng nhất, chỉ là một trong hàng trăm có thể giúp bạn trong nỗ lực của bạn. Tôi tìm thấy Aubio tốt nhất để phân tích âm nhạc. Để nhận dạng giọng nói và âm nhạc chắc chắn bạn sẽ tận hưởng số lượng lớn các tính năng âm thanh mà Yaafe có thể trích xuất.
  2. Nó miễn phí! Sau khi ra khỏi học viện, bạn nhanh chóng phát hiện ra rằng Matlab khá đắt. Và ngay cả khi bạn có đủ khả năng, thì người dùng phối cảnh của bạn sẽ không hài lòng về sự phụ thuộc này. Ví dụ, Bộ Bảo tồn đã đề cập sẽ không chấp nhận phần mềm độc quyền.
  3. Nhận dạng thường yêu cầu học máy và Python có bộ công cụ tuyệt vời cho nó: sklearn. Đây là trạng thái của thư viện nghệ thuật - và dễ sử dụng. Hãy nhìn vào các cuộc thi Kaggle (học máy) và kiểm tra xem có bao nhiêu lập trình viên hàng đầu đang sử dụng Python và sklearn.
  4. Bạn có thể quản lý "dữ liệu lớn". Nếu bạn muốn chạy phân tích đối với các cơ sở dữ liệu ghi âm được nối mạng lớn, thì Python đã thiết lập tốt các công cụ. Tôi không nghĩ giao diện Matlab / Octave dễ dàng với ví dụ Hadoop, mặc dù vui lòng sửa lỗi cho tôi nếu tôi sai. R làm tốt hơn khu vực này.
  5. Nói về giao thoa, bạn có thể dễ dàng giao tiếp chương trình của bạn với một trang web. Đây là cách tôi quản lý Ornithokrites (nhận dạng chim): chương trình chạy trên dịch vụ điện toán đám mây của Amazon Web Services. Tuyệt vời nếu bạn muốn cung cấp phần mềm của mình cho những người khác, những người không nhất thiết muốn trải qua quy trình cài đặt của tất cả các thư viện cần thiết.

Lựa chọn thứ hai của tôi sẽ là R. Mặc dù không có nhiều tính năng như Python, nhưng nó có rất nhiều thư viện hữu ích (kiểm tra ví dụ: seewave cho các ứng dụng của bạn). Cài đặt những thứ trên cả Windows và Linux là một miếng bánh, điều này rất quan trọng nếu bạn muốn người khác sử dụng chương trình của mình. Tuy nhiên, theo kinh nghiệm của tôi, tính toán hiệu năng cao trong R khó khăn hơn - một điều quan trọng cần lưu ý nếu bạn cần thực hiện RẤT NHIỀU xử lý và nhận dạng.

Ví dụ về phân loại âm nhạc trong Python:

Hệ thống học máy xây dựng sách với Python có một chương về phân loại âm nhạc

Các công cụ khác (liệt kê không có nghĩa là hoàn thành): Python in Music


2

Dường như Python là ngôn ngữ phổ biến cho điều này với một số bộ công cụ tốt dựa trên thực tế là ... Tôi đã thấy nó được sử dụng trong một số công ty và phòng ban công nghệ âm nhạc.

Trong giới hàn lâm, người ta thường thấy loại công việc này được thực hiện trong Matlab, vì nó tập hợp nhiều bộ công cụ mạnh mẽ (Xử lý tín hiệu, Tính toán song song, vẽ đồ thị, Tiện ích cơ sở dữ liệu, Học máy, AI) trong một IDE dễ thăm dò. Tuy nhiên, nó tốn tiền và có một số nhược điểm (không phải là ngôn ngữ lập trình tốt nhất về thiết kế và hiệu suất ứng dụng, vì vậy nó chủ yếu là một công cụ tạo mẫu nhưng có thể biên dịch thành C). Octave là giải pháp thay thế miễn phí nhưng tôi không thể đảm bảo chất lượng của các công cụ xử lý tín hiệu hoặc chính phần mềm vì tôi chưa sử dụng nó.


Thư viện tuyệt vời cho việc này là github.com/worldveil/dejavu . Python, mã nguồn mở, MIT cấp phép và nhận dạng âm thanh và dấu vân tay.
lollercoaster

scipyhệ sinh thái có rất nhiều chức năng của MATLAB.
Darleison Coleues

2

Bạn cũng có thể kiểm tra pyAudioAnalysis : nó kết hợp các thư viện mở để nhận dạng mẫu và một số triển khai tính năng âm thanh. Một số ứng dụng ví dụ được triển khai trong pyAudioAnalysis , mà bạn có thể thấy thú vị:

  • loại bỏ im lặng
  • loa diar
  • phân loại phân khúc (và đào tạo) bằng cách sử dụng SVM, kNN, v.v.
  • phân loại chung phân loại (sử dụng HMM)
  • hình thu nhỏ âm thanh
  • hình dung nội dung âm thanh

0

Bạn có thể sử dụng thư viện C ++ phân tích âm thanh Essentia , bao gồm các ràng buộc python. Bạn sẽ tận dụng tất cả lợi thế của môi trường python / scipy cộng với nhiều thuật toán phân tích âm thanh / âm nhạc đi kèm với Essentia.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.