-1
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.
Tôi có khoảng 30 tệp .wav
trong thư mục C:\Users\Maheswar.reddy\Desktop\NLP\wav_folder
. Tôi đang cố gắng viết mã để đọc tất cả các tệp .wav
trong thư mục, nhưng tôi không thể làm điều đó. Làm thế nào tôi có thể đọc tất cả các tệp cùng một lúc, được đặt tên của thư mục?
Tôi đã có thể đọc một tệp duy nhất đưa ra đường dẫn ngay bây giờ tôi muốn đọc tất cả các tệp cùng một lúc.
hỏi ngày 9 tháng 8 lúc 3:47Aug 9 at 3:47
3
Không rõ ý bạn là "đọc tất cả các tệp cùng một lúc". Dưới đây là một ví dụ sử dụng Glob Pathlib mà bạn có thể mở rộng để xử lý các tệp theo tuần tự:
from pathlib import Path
base_path = Path[r"C:\Users\Maheswar.reddy\Desktop\NLP\wav_folder"]
for wav_file_path in base_path.glob["*.wav"]:
print[f"WAV File: {wav_file_path}"]
# do something, e.g. with open[wav_file_path] as wav_file:
Nếu bạn muốn xử lý đồng thời tất cả các tệp, bạn sẽ cần xem xét luồng hoặc đa xử lý.
Đã trả lời ngày 9 tháng 8 lúc 4:27Aug 9 at 4:27
Nhập ngẫu nhiên ngẫu nhiênimport random
2.6561 Huy hiệu vàng15 Huy hiệu bạc20 Huy hiệu Đồng1 gold badge15 silver badges20 bronze badges
1
Đối với trường hợp của hai tín hiệu, hãy thử điều này
[WAVE1, FS1] = Audioread ['Voice1.wav'];'Voice1.wav'];
[wave2,fs2]=audioread['Voice2.wav'];'Voice2.wav'];
t1 = linspace [0, [numel [wave1] -1]/fs1, numel [wave1]];
T2 = Linspace [0, [numel [wave2] -1]/fs2, numel [wave2]];
subplot[2,1,1]
lô [t1, wave1];
subplot[2,1,2]
lô [t1, wave1];
Đối với nhiều tệp, hãy sử dụng cái này
Tên = {'Voice1.Wav', 'Voice2.wav', 'Voice3.wav', 'Voice4.wav'};'Voice1.wav', 'Voice2.wav', 'Voice3.wav', 'Voice4.wav'};
sóng = ô [kích thước [tên]];
fs = ô [kích thước [tên]];
subplot_cols = 3;
subplot_rows = ceil [numel [tên]/subplot_cols];
cho i = 1: numel [tên]i=1:numel[names]
[Wave {i}, fs {i}] = Audioread ['sample.wav'];'sample.wav'];
t = linspace [0, [numel [wave {i}]-1]/fs {i}, numel [wave {i}]];
Subplot [subplot_rows, subplot_cols, i]
lô [t1, wave1];
tiêu đề [['tệp:' tên {i}]];'File: ' names{i}]];
chấm dứt
Nếu tên của tất cả các tệp tuân theo một mẫu tương tự, thì hãy thử một cái gì đó như thế này
files = dir ['giọng nói*.wav'];'Voice*.wav'];
name = {files.name};
sóng = ô [kích thước [tên]];
fs = ô [kích thước [tên]];
subplot_cols = 3;
subplot_rows = ceil [numel [tên]/subplot_cols];
cho i = 1: numel [tên]i=1:numel[names]
[Wave {i}, fs {i}] = Audioread ['sample.wav'];'sample.wav'];
t = linspace [0, [numel [wave {i}]-1]/fs {i}, numel [wave {i}]];
Subplot [subplot_rows, subplot_cols, i]
lô [t1, wave1];
tiêu đề [['tệp:' tên {i}]];'File: ' names{i}]];
chấm dứt
Mã nguồn: lib/wave.py Lib/wave.py
Mô -đun wave
cung cấp giao diện thuận tiện cho định dạng âm thanh WAV. Chỉ các tệp sử dụng WAVE_FORMAT_PCM
được hỗ trợ. Lưu ý rằng điều này không bao gồm các tệp sử dụng WAVE_FORMAT_EXTENSIBLE
ngay cả khi Subformat là PCM.
Mô -đun wave
xác định chức năng và ngoại lệ sau:
Nếu tệp là một chuỗi, hãy mở tệp theo tên đó, nếu không, hãy coi nó như một đối tượng giống như tệp. Chế độ có thể là:
.wav
0Chỉ đọc chế độ.
.wav
1Chỉ viết chế độ.
Lưu ý rằng nó không cho phép đọc/ghi các tệp wav.
Chế độ .wav
0 trả về đối tượng .wav
3, trong khi chế độ .wav
1 trả về đối tượng .wav
5. Nếu chế độ bị bỏ qua và một đối tượng giống như tệp được truyền dưới dạng tệp, .wav
6 được sử dụng làm giá trị mặc định cho chế độ.
Nếu bạn chuyển trong một đối tượng giống như tệp, đối tượng sóng sẽ không đóng nó khi phương thức .wav
7 của nó được gọi; Trách nhiệm của người gọi là đóng đối tượng tệp.
Hàm .wav
8 có thể được sử dụng trong câu lệnh .wav
9. Khi khối .wav
9 hoàn thành, phương thức C:\Users\Maheswar.reddy\Desktop\NLP\wav_folder
1 hoặc C:\Users\Maheswar.reddy\Desktop\NLP\wav_folder
2 được gọi.
Đã thay đổi trong phiên bản 3.4: Đã thêm hỗ trợ cho các tệp không thể nhìn thấy.Added support for unseekable files.
Ngoại lệ ________ 8 ________ 24¶Một lỗi được nêu ra khi một cái gì đó là không thể vì nó vi phạm đặc tả WAV hoặc đạt được sự thiếu hụt thực hiện.
WAVE_READ Đối tượng
Các đối tượng WAVE_READ, được trả về bởi .wav
8, có các phương thức sau:
Đóng luồng nếu nó được mở bởi wave
và làm cho thể hiện không thể sử dụng được. Điều này được gọi là tự động trên bộ sưu tập đối tượng.
Trả về số lượng kênh âm thanh [.wav
1 cho mono, .wav
2 cho âm thanh nổi].
Trả về chiều rộng mẫu trong byte.
________ 26 ________ 36 [][]¶Trả về tần số lấy mẫu.
________ 26 ________ 38 [][]¶Trả về số lượng khung âm thanh.
________ 26 ________ 40 [][]¶Trả về loại nén [wave
1 là loại được hỗ trợ duy nhất].
Phiên bản có thể đọc được của con người của wave
4. Thường là wave
5 tương đương wave
1.
Trả về wave
9 WAVE_FORMAT_PCM
0, tương đương với đầu ra của các phương thức WAVE_FORMAT_PCM
1.
Đọc và trả về hầu hết các khung âm thanh của âm thanh, dưới dạng đối tượng WAVE_FORMAT_PCM
4.
Tua lại con trỏ tệp đến đầu luồng âm thanh.
Hai phương pháp sau đây được xác định để tương thích với mô -đun WAVE_FORMAT_PCM
7 và don lồng làm bất cứ điều gì thú vị.
Trả về WAVE_FORMAT_EXTENSIBLE
0.
Nêu ra một lỗi.
Hai phương pháp sau đây xác định một thuật ngữ vị trí trực tuyến, tương thích giữa chúng và nếu không thì phụ thuộc vào việc thực hiện.
________ 26 ________ 64 [POS][pos]¶Đặt con trỏ tệp đến vị trí được chỉ định.
________ 26 ________ 66 [][]¶Trả về vị trí con trỏ tệp hiện tại.
WAVE_WRITE Đối tượng
Đối với các luồng đầu ra có thể tìm kiếm, tiêu đề wave
sẽ tự động được cập nhật để phản ánh số lượng khung thực sự được viết. Đối với các luồng không thể nhìn thấy, giá trị NFRAME phải chính xác khi dữ liệu khung đầu tiên được viết. Giá trị NFRAME chính xác có thể đạt được bằng cách gọi WAVE_FORMAT_EXTENSIBLE
8 hoặc WAVE_FORMAT_EXTENSIBLE
9 với số lượng khung sẽ được viết trước khi .wav
7 được gọi và sau đó sử dụng wave
1 để ghi dữ liệu khung hoặc bằng cách gọi wave
2 với tất cả dữ liệu khung. Trong trường hợp sau wave
2 sẽ tính toán số lượng khung trong dữ liệu và đặt NFRAME phù hợp trước khi viết dữ liệu khung.
Các đối tượng WAVE_WRITE, được trả về bởi .wav
8, có các phương thức sau:
Đã thay đổi trong phiên bản 3.4: Đã thêm hỗ trợ cho các tệp không thể nhìn thấy.Added support for unseekable files.
________ 75 ________ 27 [][]¶Đảm bảo NFRAM là chính xác và đóng tệp nếu được mở bởi wave
. Phương pháp này được gọi là thu thập đối tượng. Nó sẽ tăng một ngoại lệ nếu luồng đầu ra không thể tìm kiếm và NFRAME không khớp với số lượng khung thực sự được viết.
Đặt số lượng kênh.
________ 75 ________ 81 [n][n]¶Đặt chiều rộng mẫu thành n byte.
________ 75 ________ 83 [n][n]¶Đặt tốc độ khung hình thành n.
Thay đổi trong phiên bản 3.2: Một đầu vào không phân tích cho phương pháp này được làm tròn vào số nguyên gần nhất.A non-integral input to this method is rounded to the nearest integer.
________ 75 ________ 85 [n][n]¶Đặt số lượng khung thành n. Điều này sẽ được thay đổi sau nếu số lượng khung thực sự được viết là khác nhau [nỗ lực cập nhật này sẽ gây ra lỗi nếu luồng đầu ra không thể tìm kiếm].
________ 75 ________ 87 [loại, tên] ¶[type, name]¶Đặt loại nén và mô tả. Hiện tại, chỉ có loại nén wave.
8 được hỗ trợ, có nghĩa là không nén.
Bộ tuple phải là open
1, với các giá trị hợp lệ cho các phương thức open
2. Đặt tất cả các tham số.
Trả về vị trí hiện tại trong tệp, với cùng một từ chối trách nhiệm cho các phương thức open
5 và open
6.
Viết khung âm thanh, mà không cần sửa NFRAM.
________ 75 ________ 100 [dữ liệu] ¶[data]¶Viết khung âm thanh và đảm bảo NFRAME là chính xác. Nó sẽ gây ra lỗi nếu luồng đầu ra không thể tìm kiếm và tổng số khung đã được viết sau khi dữ liệu được viết không khớp với giá trị được đặt trước đó cho NFRAME.
Lưu ý rằng việc đặt bất kỳ tham số nào sau khi gọi wave
2 hoặc wave
1 và mọi nỗ lực để làm như vậy sẽ tăng .wav
03.