Tạo tệp âm thanh nổi từ hai tệp đơn âm với sox


5

Tôi đang sử dụng sox 14.2.0 trên Centos 6.0.

Tôi có hai tập tin wav mono , left.wavright.wav. Tôi cần kết hợp chúng thành một stereo.oggtệp, với left.wavpan 80% ở bên trái và right.wavpan 80% ở bên phải.

Tôi đã không thể đưa ra các tùy chọn sox cần thiết cho việc này. Làm thế nào để tôi làm điều này?

Điều này sẽ được thực hiện lặp lại cho nhiều tệp, vì vậy tôi thích một giải pháp hiệu quả. Từ những gì tôi hiểu, nên có một cách để làm điều đó trong một lần (một lần gọi sox).

Câu trả lời:


4

Đây là cách nó được thực hiện:

sox left.wav right.wav --channels 2 --combine merge stereo.ogg mixer 0.8,0.2,0.2,0.8


4

lệnh haimss không hoàn toàn đúng. Theo kinh điển, bạn xoay bằng cách giảm âm lượng của một kênh. Điều đó có nghĩa là: nếu bạn muốn tín hiệu của mình ở bên trái 80%, kênh bên trái sẽ giữ âm lượng gốc trong khi kênh bên phải chỉ nhận được 20% âm lượng ban đầu. Ít nhất đó là những gì mà mã panning của sox đã làm (và những gì Alan Blumlein dường như đã được cung cấp khi phát minh ra âm thanh nổi).

Ngoài ra lệnh của anh ta có thể được rút ngắn bằng cách sử dụng tùy chọn phối lại.

Do đó, lệnh được sửa và rút ngắn là:

sox left.wav right.wav stereo.ogg remix 1,2v0.2 1v0.2,2

chỉnh sửa để trả lời bình luận của haimss:

sox sẽ cảnh báo bạn nếu cắt xén. Nhưng vâng, nó có thể. Với tùy chọn phối lại, mọi âm lượng kênh được chia tỷ lệ với hệ số 1 / n, trong đó n là số lượng kênh đầu vào. Nhưng điều đó chỉ được sử dụng nếu KHÔNG CÓ LỰA CHỌN VULME được chỉ định cho kênh đầu ra (vì vậy 100% + 20% của bạn là chính xác).

sox cũng có một tùy chọn để chia tỷ lệ bất kỳ kênh nào mà không có thông tin âm lượng rõ ràng, chỉ cần thêm "-a" sau "phối lại" (như "phối lại -a 1,2v0.2 1v0.2,2") và âm lượng sẽ như 50 % + 20% = 70%. Điều này khá khó hiểu và đến bây giờ tôi không chắc chắn liệu bạn cũng phải chia tỷ lệ âm lượng kênh bị rỗ lên 1 / n, điều này sẽ dẫn đến "phối lại -a 1,2v0.1 1v0.1,2", hoặc 50% + 10% = 60%. Tôi sẽ phải điều tra thêm theo hướng này. Trong khi đó, bạn có thể đọc phần phối lại trong trang man của sox (cũng có sẵn tại trang chủ sox ).

chỉnh sửa sau khi phản ánh thêm:

Sau khi suy nghĩ về nó, tôi khá là chắc chắn rằng bạn cũng phải chia tỷ lệ khối lượng theo tỷ lệ 1 / n.

Về vấn đề cắt: Bằng cách chia TẤT CẢ khối lượng cho số lượng kênh, vấn đề này không thể xảy ra. Nhưng điều đó không bảo toàn công suất ban đầu của tín hiệu, bởi vì công suất của tín hiệu là logarit, không phải tuyến tính. Bạn càng trộn nhiều kênh, tín hiệu sẽ càng im lặng. Đó là lý do tại sao sox cũng có các tùy chọn cho điều đó, trong đó các tập được chia tỷ lệ 1 / sqrt (n). Để sử dụng điều này, chỉ cần lấy "p" thay vì "v" ở phần phối lại và điều chỉnh các giá trị cho phù hợp, đồng thời thêm "-p" -option sau câu lệnh phối trộn lại. Bạn có thể thấy sự khác biệt của tỷ lệ theo tỷ lệ 1 / n và 1 / sqrt (n) tại đây .

Sau đây là cách tôi nghĩ để tính toán các giá trị công suất chính xác: cho mỗi kênh bạn phải giải 20 * log_10 (hệ số). Hệ số 2 sẽ dẫn đến ~ 6 (dB), hệ số 0,5 sẽ dẫn đến ~ -6 (dB). Đó chính xác là những gì hướng dẫn sử dụng sox nói, vì vậy tôi đoán điều này là đúng.

Vì vậy, cuối cùng lệnh trong trường hợp của bạn phải là:

sox left.wav right.wav stereo.ogg remix -p -a 1,2p-6 1p-6,2

Tôi không có sox trên máy này, vì vậy tôi không thể kiểm tra lệnh này cho đúng cú pháp, vì vậy vui lòng cho tôi biết nếu có vấn đề. Tôi sẽ kiểm tra tất cả lý thuyết này ngay khi tôi có cơ hội, bởi vì tôi sẽ phải đối mặt với một vấn đề tương tự, nhưng tôi sẽ phải trộn nhiều kênh hơn chỉ 2, và đó là lý do tại sao tôi nghĩ ra thứ công suất tín hiệu đó.


Sẽ không giới thiệu cắt? Ví dụ: 100% L + 20% R = 120% âm lượng, Nếu cả hai kênh đều đạt mức tối đa?
haimg

Bạn không thêm âm lượng của kênh, nếu không, bạn sẽ có 240% ở mức âm lượng tối đa và điều đó thật kỳ lạ.
Cướp

@Rob: Có thể bạn đã quên rằng theo định nghĩa của bạn, chúng tôi cũng có âm lượng "200%" ngay từ đầu.
Victa prima

Hãy nghĩ về nó theo cách này, haimg. Bạn đã có tối đa 100% âm thanh trên mỗi kênh. Vì vậy, khi bạn phối lại left.wav và right.wav thành stereo.ogg, những gì bạn đang làm là tạo một left.wav và right.wav MỚI, mỗi cái đều có một cái khác trong RẤT NHIỀU. Vẫn là 100% cho mỗi kênh, chỉ là kênh tình cờ có một số kênh khác được mã hóa cứng. Không giống như bạn sẽ giảm âm lượng của kênh bên trái và loại bỏ hoàn toàn âm thanh đó khỏi kênh bên phải.
Cướp

"Nếu cả hai kênh đều đạt mức tối đa", như haimg nói, anh ấy sẽ đúng. Hãy nghĩ về nó theo cách đó, cướp. Khi kết hợp hai kênh bạn thêm các giá trị mẫu. Giả sử chúng ta có âm thanh 8 bit, thì giá trị mẫu tối đa sẽ là 256 (trong trường hợp không dấu). Nếu bạn thêm BẤT CỨ (như 51, 20% của 256) vào giá trị mẫu 256 này, nó sẽ lớn hơn giá trị mẫu tối đa có thể và việc cắt sẽ xảy ra, do đó, dù tín hiệu kia có rất lặng lẽ hay không - nó S clip clip.
Victa prima

3

Bằng cách nào đó tất cả các lỗi trên tạo ra cho tôi. Đây là những gì làm việc cho tôi (SOX trên Ubuntu 14.04):

sox -M -c 1 lef.wav -c 1 right.wav output.mp3 

0

Sử dụng sox với tùy chọn pan để xoay một tệp ở bên phải cứng và tệp kia ở bên trái cứng (lần lượt là 1 và -1). Sau đó sử dụng soxmix để trộn hai thứ lại với nhau.


sox 14.2 không bao gồm soxmix, tùy chọn pan không được dùng nữa và tôi đã hy vọng thực hiện nó trong một lần.
haimg

sox có một tùy chọn bộ trộn: mixer [ −l|−r|−f|−b|−1|−2|−3|−4|n{,n} ](xem: sox.sourceforge.net/sox.html#SYNOPSIS ). Khó có thể nói từ tài liệu, nhưng có vẻ như bạn chỉ định -m để trộn hai tệp, xảy ra trước chuỗi hiệu ứng (nơi mixerxảy ra)
horatio
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.