Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (898.2 KB, 120 trang )
Sau khi lấy mẫu sẽ tạo nên luồng dữ liệu: 8000 mẫu/s x 8 bit/mẫu = 64kps là
luồng dữ liệu trong kênh thoại cơ bản . Độ rộng băng đợc nén:
Bandwidth =
SamplingRate
= 4 Khz
2
Hiệp hội điện tử viễn thông quốc tế (ITU) và khuyến nghị của CCITT lập nên
một qui tắc chuẩn gọi là G.711. ở đây có hai thuật toán PCM đợc định nghĩa
trong G.711, cả hai luật A, à đều lấy tần số lấy mẫu bằng 8000Hz. Trong hệ
thống PCM tuyến tính, bớc lợng tử là bằng nhau và đợc lấy theo điện áp. Bản sao
nội dung của G.711 đợc bán trên Web site theo địa chỉ http://www.itu.init/itut/rec/g/g700-799/g711_27434.html. Sun đã giới thiệu phiên bản này trên đĩa CDROM cùng một khối lợng lớn các thông tin về âm thanh.
Luật à đợc tính theo công thức sau:
àx
)
Vmax
ln(1 + à )
ln(1 +
y = F ( x ) = sign( x ).Vmax
trong đó
Vmin x Vmax (4.19)
Luật A tính theo công thức:
y=
A x x
1
,
1 + ln A Vmax Vmax
A
(4.20)
và
y=
Ax 1
sign( x )
x
1 + ln
,
1
1 + ln( A)
Vmax A Vmax
Các hệ số sử dụng trong hai luật à và A là:
à = 100 và 255
A = 87.6
(4.21)
Sơ đồ biểu diễn công thức 4.19 với Vmax=1 à=255 đợc chỉ ra trên hình 4.6.
Giá trị à=255 đợc sử dụng trong hệ thống truyền dẫn điện thoại ở các nớc bắc
Mĩ. Giá trị A=87.5 đợc sử dụng cho các nớc Châu Âu. Với tỉ lệ nén-dãn này tai
ngời không phân biệt đợc biên độ của sóng âm khi có khuếch đại hay không.
Đánh giá của mã PCM là tỉ số nén giữa năng lợng tín hiệu và năng lợng tạp
âm (gọi là sai số lợng tử). Nén tín hiệu theo các luật A, à cho phép cải thiện đợc
sai số lợng tử. Với số bít N b cho một mẫu ta có số lợng mức lợng tử bằng N q =
2 Nb . (4.22)
trong đó: N b = số bits trên một mẫu
N q = số lợng mức lợng tử trên một mẫu
49
Hình 4.6
Năng lợng tín hiệu thay đổi từ 0 đến 1 đợc viết S[0..1].
Giá trị điện áp thay đổi : -Vmin x Vmax (4.23) để cho đơn giản chúng ta giả sử
Vmax=1 (4.24). Với việc lấy mẫu đều sẽ chia mỗi mẫu điện áp thành các mức
bằng nhau, khi đó sai số đợc đánh giá:
1
1
Nb
2
2 Nb
với = sai số lợng tử.
(4.25)
Ta biết rằng hàm phân bố ngẫu nhiên liên tục đợc tính theo công thức:
E[ X ] =
Xf
x
( x )dx
+
x =
2
và
X
2
f x ( X ) dX
Mặt khác thay đổi ngẫu nhiên rời rạc thì biểu diễn theo công thức:
1
E ( X ) = mean =
N
N
X
i =1
i
1
x ( t ) = vanence = E [ X ( t ) ] =
N
2
và
2
1
(X
i =1
i
E ( X )) 2
Do đó chúng ta tính lỗi RSM bằng cách tổ hợp bình phơng các lỗi lợng tử
theo công thức 4.25, khi đó ta có công thức sau:
1/ N q
1
1
=
N 2 d = 3N
(2 / N q ) 1/ q
q
2
2
Với biên độ tín hiệu lớn nhất nh trong các biểu thức 4.23 và 4.24 chúng ta
tính năng lợng tạp âm signal-to-quantization nh sau:
50
SNRD= 10log10(3x22NbSx)
SRND= 10log103 + 20log102Sx
(4.26)
trong đó năng lợng tín hiệu là Sx, nếu năng lợng tín hiệu là một thì mức cao nhất
của năng lợng tạp âm là :
SRND 4.8 + 6 N b
(4.27)
Với cách lấy mẫu PCM 8 bit và lợng tử đều, thì ta hy vọng trong trờng hợp
lý tởng SNR sẽ đạt giá trị 52.8 dB. Chú ý rằng SNR (tính theo dB) tuyến tính có
hàm năng lợng tính theo công thức 4.26. Nó chỉ rằng nén-dãn theo công thức
4.19 và 4.20 sẽ cải thiện đợc sai số với những mức năng lợng dới mức -20dB.
Với mức năng lợng lớn hơn -20dB, bộ nén giãn sẽ làm suy biến mối quan hệ đợc
lợng tử đều. Giả sử tín hiệu âm thanh có hàm phân bố ngẫu nhiên tuân theo hàm
phân bố Laplace :
px =
1
( )
e x
2
Tham số nén giãn trong 4.21 đợc chọn dựa trên PDF lý tởng của tín hiệu đầu
vào. PPF lý tởng có ứng dụng trong ngành điện thoại. Tuy nhiên mỗi trờng hợp
cụ thể của file audio lu trên các môi trờng tĩnh nh CD-ROM, đĩa cứng, trên bộ
nhớ tại server WEB thì PDF có thể tính theo kiểu off-line. Trong một hệ thống
SNR tính là:
2
S X 3N q S X
SNR D = 2 =
KZ
1
với K Z = 2
0
P( x)
[f]
2
(4.28)
Việc tính toán bắt đầu từ công thức 4.19 chú ý đến x và thay thế vào công
thức 4.28 ta có:
1
Kz = 2
0
p( x )( Vmax + àx ) ln(1 + à )
4
à 4Vmax 4
dx
(4.29)
mỗi khi PDF, p(x) đợc tính, tham số nén-giãn đợc sử dụng một tiêu chuẩn tối u
nhất trên ngỡng tỉ lệ bit. Ví dụ với tỉ lệ bit là 16 Kps chỉ cần lấy mẫu 4-bit với tần
số lấy mẫu 4KHz. Một hệ thống đợc sử dụng để truyền âm thanh (trong miền
thời gian thực) dựa vào nối kết điện thoại low-data-rate. Về mặt nguyên tắc ngời
sử dụng có thể lấy mẫu lại và thực hiện nén dãn với một tỉ lệ nào đó khi truyền
dẫn.
Giới thiệu chơng trình
Dới đây là các chơng trình nằm trong chơng trình lớn Diffcad do chúng ta
viết. Khi chạy chơng trình giao diện màn hình chính có dạng nh sau:
51
Lớp UlawCodec
Lớp UlawCodec là lớp có thuộc tính public nằm trong gói lyon.audio .
Về nguyên tắc java có thể truy cập tới mọi dạng file, nhng vấn đề cơ bản là
APT hiện nay của java chỉ có thể chạy các file kiểu AudioDataStream đợc nén
dãn theo luật à. Mặc dù java có thể đọc, truy cập, ghi mọi dạng file âm thanh
nhng luật à trung gian vẫn đợc sử dụng để chơi nhạc.
Nội dung của lớp
public
public
public
public
public
public
public
public
public
public
public
public
public
public
public
public
public
public
}
class UlawCodec implements Runable {
UlawCodec()
UlawCodec(String name)
UlawCodec(short linaerArrayOfShort[])
UlawCodec(double linerArrayOfDoule[])
UlawCodec(byte linerArrayOfByte[])
void readAUFile()
void writeAUFile()
void writeAUfile(String fileName)
void playSync()
void playAsync()
byte[] getUlawData()
void setUlawData(byte ulawArrayOfByte[])
double[] getDoubleArray()
int getLength()
double getDuration()
void reverseUlaw()
static void main(String argc[])
Sử dụng lớp
Lớp UlawCodec có một số các constructor , mỗi constructor nh một
mục tiêu chính cấu trúc mảng byte đợc mã hoã theo luật à trong một vùng lu trữ
riêng. Chỉ có một cách truy cập tới vùng này thông qua phơng thức
getUlawData và setUlawData , một phần vì tập các cấu trúc dữ liệu song song
52