l ượng thời gian ngắn
4.2.1. Lõi ARM cortex M3
Lõi ARM cortex M3 có đặc điểm quan trọng sau: - Tiết kiệm năng lượng, hiệu suất cao.
- Có khả năng đáp ứng tốt thời gian thực.
- Có kiến trúc Hardvard cho phép các ứng dụng thực thi nhanh hơn. - Hầu hết các lệnh được thực hiện trong một chu kì lệnh đơn…
Hình 4.2: Sơ đồ khối lõi ARM cortex M3
Luận văn tốt nghiệp thạc sĩ GVHD: PGS.TS.Lê Tiến Thường
4.2.2 B chuyển đổi t ơng tự - số (ADC)
Bộ chuyển đổi ADC là một thiết bị ngoại vi của ARM để chuyển đổi tín hiệu tương tự (Analog) thành tín hiệu số (Digital) rời rạc. Kit LM3S2965 chứa bộ ADC 10 bit với 4 kênh vào và tích hợp một cảm biến nhiệt. Bộ ADC tựđộng sắp xếp thành dãy các mẫu mà không cần phải điều khiển. Tốc độ lấy mẫu tối đa lên tới 1 triệu mẫu trên giây. Tần số lấy mẫu được phép hoạt động là 1MSPS, 500KSPS, 250KSPS, 125KSPS.
Hình 4.3: Sơđồ khối của khối bộ ADC
4.2.3 Khối hiển thị OLED (Organic Light Emission Diode)
Khối hiển thị OLED được tích hợp trên Kit, cho phép xuất các đoạn text và hình ảnh với kích thước 128x96 với 4 bit mức xám và tần số hiển thị thay đổi được. Thời gian đáp ứng của OLED khoảng 10µs.
Luận văn tốt nghiệp thạc sĩ GVHD: PGS.TS.Lê Tiến Thường
Hình 4.4: Màn hình OLED
4.3M t số hàm th vi n của Kit LM3S2965 [6]
Chúng ta có thể lập trình thâm nhập các ngoại vi của Kit theo ba cách: trực tiếp qua các thanh ghi, dùng hàm thư viện, kết hợp dùng hàm thư viện và tương tác trực tiếp qua thanh ghi. Luminary Micro đã cung cấp sẳn một số hàm thư viện viết trên ngôn ngữ C cho phép người lập trình dễ dàng thao tác với các ngoại vi của Kit dùng ngôn ngữ C. Các trình biên dịch được Luminary Micro đề nghị sử dụng bao gồm:
o Keil RealView Microcontroller Development Kit o CodeSourcery’s Sourcery G++ for ARM
o IAR Embedded Workbench o Code Red Technologies tools
Trình biên dịch được dùng để thực hiện đề tài này là IAR Embedded Workbench.
Đề tài chỉ xét một số hàm thư viện có liên quan và được phân loại theo thành phần ngoại vi.
4.3.1 Hàm cho b ADC
- Hàm ADCSequenceConfigure:
Hàm này dùng để cấu hình bộ ADC.
Luận văn tốt nghiệp thạc sĩ GVHD: PGS.TS.Lê Tiến Thường
Khai báo của hàm:
Void ADCSequenceConfigure(unsigned long ulBase,unsigned long ulSequenceNum,unsigned long ulTrigger, unsigned long ulPriority)
Trong đó:
ulBase: là địa chỉ của bộ ADC
ulSequenceNum: số thứ tự của bộ Sequencer
ulTrigger: xác định nguồn trigger.
ulPriority: có giá trị từ 0 tới 3. Trong đó 0 có độưu tiên cao nhất - Hàm ADCSequenceDataGet:
Hàm này dùng để lấy dữ liệu từ bộ ADC. Khai báo:
long ADCSequenceDataGet(unsigned long ulBase, unsigned long ulSequenceNum, unsigned long *pulBuffer)
Trong đó: ulBase: địa chỉ của bộ ADC ulSequenceNum: số thứ tự của bộ Sequencer *pulBuffer: nơi lưu lại dữ liệu từ bộ ADC. 4.3.2 Hàm cho màn hình OLED - Hàm RIT128x96x4Init: Hàm này dùng để khởi động màn hình, khởi động khối giao tiếp đồng bộ nối tiếp SSI (Synchronous Serial Interface).
Khai báo:
void RIT128x96x4Init(unsigned long ulFrequency)
Trong đó:
Luận văn tốt nghiệp thạc sĩ GVHD: PGS.TS.Lê Tiến Thường
ulFrequency: tần số xung Clock dùng cho SSI. - Hàm RIT128x96x4StringDraw:
Hàm này dùng để hiển thị một chuỗi ký tự lên màn hình Khai báo:
Void RIT128x96x4StringDraw(const char *pcStr, unsigned long ulX, unsigned long ulY, unsigned char ucLevel)
Trong đó:
*pcStr: con trỏ trỏđến chuỗi cần hiển thị.
ulX: vị trí cột hiển thị kí tựđầu tiên.
ulY: vị trí hàng hiển thị chuỗi kí tự.
ucLevel:độ sáng hiển thị
Chú ý: Màn hình hiển thị 2 pixel cho 1 byte dữ liệu nên thông số ulX phải là các số chẵn.
4.3.3 Hàm cho điều khiển h thống
- Hàm SysCtlClockSet:
Hàm này dùng để thiết lập tần số xung clock cho hệ thống Khai báo:
void SysCtlClockSet(unsigned long ulConfig)
- Hàm SysCtlDelay:
Hàm này dùng để làm trể (delay) một thời gian xác định. Khai báo:
void SysCtlDelay(unsigned long ulCount)
Trong đó:
ulCount: số vòng lặp cần delay, mỗi vòng lặp ứng với 3 chu kì máy.
Luận văn tốt nghiệp thạc sĩ GVHD: PGS.TS.Lê Tiến Thường
4.3.4 Hàm cho b nh FLASH
- Hàm FlashUsecSet:
Hàm này dùng để thiết lập tần số xung nhịp (clock) cho Flash. Hàm này phải được gọi đầu tiên trước khi gọi các hàm xóa hay ghi lên chip.
Khai báo:
void FlashUsecSet(unsigned long ulClocks)
Trong đó:
ulClocks: tần số xung clock cho Flash, đơn vị của nó là MHz. Nếu giá trị clock không đúng thì việc ghi cũng không đúng. Hàm này không ảnh hưởng đến quá trình đọc dữ liệu từ bộ nhớ flash.
- Hàm FlashErase:
Hàm này dùng để xóa từng khối 1KB của Flash. Khai báo:
long FlashErase(unsigned long ulAddress)
Trong đó:
ulAddress: địa chỉ bắt đầu của block cần xóa, bội số của 1Kb.
Hàm trả về giá trị 0 nếu quá trình xóa thực hiện thành công và ngược lại thì trả về giá trị 1. Khi thực hiện xóa, hàm đặt các bit trong khối được xóa lên mức 1. Và chỉ có hàm này mới có thểđặt các bit trong bộ nhớ lên 1.
- Hàm FlashProgram:
Hàm này dùng để ghi 4 byte vào bộ nhớ flash. Khai báo:
long FlashProgram(unsigned long *pulData, unsigned long ulAddress, unsigned long ulCount)
Luận văn tốt nghiệp thạc sĩ GVHD: PGS.TS.Lê Tiến Thường
Trong đó:
*pulData: con trỏ chỉ tới dữ liệu cần ghi vào bộ nhớ.
ulAddress: địa chỉ bắt đầu của vùng nhớ trong flash được chỉ định để lưu dữ liệu vào, giá trị này cần phải chia hết cho 4.
ulCount: số byte cần lưu vào bộ nhớ. Giá trị này phải chia hết cho 4.
Lưu ý: Trước khi thực hiện việc ghi dữ liệu lên bộ nhớ cần phải thực hiện lệnh xóa vùng nhớ trước để đặt các bit lên 1. Hàm này cũng trả về giá trị 0 nếu quá trình thực hiện thành công và trả về giá trị -1 nếu quá trình thực hiện không thành công.
4.3.5 Hàm đa d ng
- Hàm usprintf:
Hàm này dùng để hiển thị dữ liệu lên màn hình Khai báo:
int usprintf(char *pcBuf,const char *pcString,...)
Trong đó:
*pcBuff: nơi chuỗi được chuyển đổi sẽ lưu trữ
*pcString: định dạng chuỗi cần được chuyển đổi, hiển thị. Hàm này hỗ trợ
các định dạng sau: %c: in ra ký tự
%s: in ra một chuỗi %d: in ra giá trị thập phân
%u: in ra số thập phân không dấu
Luận văn tốt nghiệp thạc sĩ GVHD: PGS.TS.Lê Tiến Thường
Ch ơng 5
THI T K H TH NG NH N D NG TI NG NÓI TI NG VI T
Các chương trước đã đề cập các vấn đề về lý thuyết cũng như ý tưởng thực hiện hệ thống nhận dạng. Chương này sẽ đề cập vấn đề thiết kế hệ thống từ cơ sở các lý thuyết, các ý tưởng. Mỗi giai đoạn thiết kế, mỗi bộ phận của hệ thống có đặc thù riêng. Việc thiết kế sẽ nhắm đến mục đích đơn giản, dễ hiểu, tương tác qua giao diện để dễ dàng kiểm tra, đánh giá.
Hiện nay, trong một hệ thống nhận dạng tiếng nói Tiếng Việt riển khai trên trên máy tính cá nhân, phần quan trọng nhất và phức tạp nhất là chương trình nhận dạng tiếng nói. Bằng những hộp công cụ toán học của phần mềm Matlab, đề tài xây dựng chương trình nhận dạng tiếng nói Tiếng Việt dựa trên mô hình mạng thần kinh nhân tạo với dữ liệu đưa vào mạng là các hệ số từ kết quả trích đặc trưng theo phương pháp MFCC của từng âm tiết. Rút kinh nghiệm từ việc phân tích kết quả nhận dạng thực hiện trên máy tính cá nhân, đề tài xây dựng chương trình nhận dạng tiếng nói để triển khai trên Kit xử lý 32 bit họ ARM-LM3S2965 với sự hỗ trợ huấn luyện mạng nơron được thực hiện trên máy tính cá nhân.
Lưu mẫu đặc trưng Huấn luyện mạng nơron Trích lấy đặc trưng tín hiệu tiếng nói Hình 5.1: Sơđồ khối hệ thống nhận dạng tiếng nói
Từđó, các yêu cầu được đặt ra cần thực hiện thiết kế trong đề tài này là: − Thiết kế khối lấy mẫu tín hiệu tiếng nói Tiếng Việt.
Lấy mẫu tín hiệu tiếng nói
Nhận dạng tiếng nói dựa vào mạng nơron
Luận văn tốt nghiệp thạc sĩ GVHD: PGS.TS.Lê Tiến Thường
− Thiết kế chương trình trích đặc trưng của tiếng nói Tiếng Việt theo phương pháp MFCC để đưa vào hệ thống nhận dạng hoặc lưu trữ dùng cho huấn luyện mạng nơron.
− Thiết kế chương trình huấn luyện mạng nơron cho hệ thống từ nguồn dữ liệu các mẫu đặc trưng đã lưu trữ từ kết quả chương trình trích đặc trưng. − Thiết kế chương trình tính toán các ngõ ra nút mạng nơron của hệ thống để
xác định kết quả nhận dạng tiếng nói Tiếng Việt với ngõ vào là các đặc trưng của tín hiệu tiếng nói Tiếng Việt từ kết quả chương trình trích đặc trưng.
5.1 Thi t k m ch thu âm:
Một trong những khối quan trọng trong khối lấy mẫu tín hiệu tiếng nói là mạch thu âm, có nhiệm vụ thu âm và giao tiếp với bộ biến đổi tương tự - số của Kit LM3S2965.
Hình 5.2: Sơđồ khối mạch thu âm
Tín hiệu sóng âm thanh được micro chuyển sang tín hiệu điện tương tự. Tín hiệu tương tự này trước khi được biến đổi sang dạng số cần phải được lọc thông thấp để chống chồng phổ và điều chỉnh điện áp tối đa phù hợp với điện áp vào cho phép của Kit LM3S2965.
Trong các linh kiện điện tử cơ bản và thông dụng ngày nay, mạch khuếch đại thuật toán (op-amp) là lựa chọn tốt do tính chống nhiễu, do mạch đơn giản và giá thành phù hợp… Nó được chọn làm linh kiện tích cực trong thiết kế.
Các thành phần của mạch thu âm bao gồm: mạch tiền khuếch đại micro tự động điều chỉnh độ lợi, mạch lọc thông dãy, mạch khuếch đại ngõ ra và giao tiếp ADC. Mic Mạch khuếch đại đệm Mic Mạch lọc thông dãy Mạch điều hợp biên độ tín hiệu Mạch AGC
Luận văn tốt nghiệp thạc sĩ GVHD: PGS.TS.Lê Tiến Thường
5.1.1 Khối m ch tiền khu ch đ i micro tựđiều chỉnh đ l i
Tín hiệu âm thanh được thu từ microphone. Một loại microphone nhỏ gọn và được sử dụng phổ biến là electret microphone. Đó là một loại mới của microphone điện dung. Đáp ứng tần số của microphone loại này từ 100Hz đến 10KHz, sử dụng tốt cho các ứng dụng thu âm tiếng nói.
Hình 5.3: Sơđồ nguyên lý của electret microphone
Với loại này tín hiệu ra đã được khuếch đại bằng FET. Khi sử dụng đòi hỏi phải có điện trở nối với nguồn và một tụ cách ly. Giá trịđiện trở được chọn sao cho dòng điện tối đa qua điện trở khoảng 0.5mA. Với nguồn điện +5V, giá trị điện trở được chọn là 22KΩ. Điện áp ra tối đa của loại microphone này là khoảng 10mV.
Mạch khuếch đại Tiền khuếch đại có ngõ vào điều chỉnh Vout vin Khuếch đại điều khiển Lọc thông thấp lấy mẫu biên độ biên Tách độ Hình 5.4: Sơđồ khối mạch AGC cơ bản
Nguyên tắc hoạt động của mạch AGC này là hồi tiếp tỉ lệ biên độđỉnh tín hiệu đầu ra trở vềđể điều chỉnh độ khuếch đại của mạch. Mạch khuếch đại tựđộng điều chỉnh độ lợi (AGC) giúp hạn chế sự khác nhau về biên độ tối đa của tín hiệu thu được ở các lần phát âm khác nhau. Tuy nhiên, nó cũng làm méo đi một phần của tín hiệu khi biên độ tín hiệu lớn. Chất lượng của mạch AGC phụ thuộc vào biên độ
Luận văn tốt nghiệp thạc sĩ GVHD: PGS.TS.Lê Tiến Thường
điều chỉnh và thời gian đáp ứng của mạch. Với ứng dụng thu âm có tần số thấp, tín hiệu được thu rời rạc thì không quan tâm lắm đến thời gian đáp ứng mà tập trung vào biên độ được điều chỉnh nghĩa là khả năng điều chỉnh của mạch với những thay đổi của tín hiệu đầu vào.
Khối mạch khuếch đại là mạch khuếch đại thông thường với độ lợi cốđịnh tùy theo yêu cầu thiết kế. Lý do mạch này cần thiết bên cạnh mạch khuếch đại điều chỉnh được độ lợi là do mạch khuếch đại điều chỉnh được độ lợi sẽ chịu một số ràng buộc về độ lợi do đó độ lợi không được như yêu cầu. Mạch này có thểđiều chỉnh độ lợi bằng tay cho mục đích cân chỉnh.
Khối tách biên độ có vai trò tách độ lớn của tín hiệu ra. Ngõ ra của nó được qua mạch lọc thông thấp để lấy mẫu biên độ tín hiệu. Mạch khuếch đại điều khiển được dùng để tạo ra điện áp phù hợp điều chỉnh các điện áp điều khiển của mạch khuếch đại đệm có điều chỉnh.
5.1.1.1 Phân tích khối m ch khu ch đ i:
Xét mạch khuếch đại có độ lợi thay đổi theo Rq như hình 5.5
Hình 5.5: Sơ đồ mạch nguyên lý mạch khuếch đại có độ lợi thay đổi theo điện trở ngõ vào Rq
Ta dùng mô hình op-amp lý tưởng để phân tích mạch : dòng điện vào ngõ vào đảo và không đảo bằng 0, điện thế hai ngõ vào đảo và không đảo bằng nhau.
Điện áp tại ngõ vào không đảo của op-amp:
Luận văn tốt nghiệp thạc sĩ GVHD: PGS.TS.Lê Tiến Thường 1 1 2 2 + = + = = + − q n i q q n i R R V R R R V V V (5.1) Từ biểu thức ta thấy V+ tỉ lệ thuận với Rq Dòng điện chạy qua R3: 4 3 3 R V V R V i o R + + = − = (5.2)
Điện áp ngõ ra được tính theo điện áp ngõ vào:
3 3 4 R R R V Vo + • = + (5.3)
Từ biểu thức trên ta thấy Vo tỉ lệ thuận với V+ nghĩa là tỉ lệ thuận với Rq. Độ lợi của tầng này: 3 3 4 2 R R R R R R G q q • + + = (5.4) Điện trở Rq là điện trở nhìn từ C-E của transistor. Khoảng thay đổi của điện trở này không thểđạt tầm từ 0 đến ∞ như lý thuyết. Do điện áp phân cực tương đối nhỏ và khoảng biến thiên cũng nhỏ nên giá trị điện trở Rq thay đổi ít (trong khoảng từ vài trăm Ω tới một KΩ). Tiếp theo ta xét giá trị của R2.
Xét biểu thức : ⎟ ⎟ ⎠ ⎞ ⎜ ⎜ ⎝ ⎛ +1 1 2 q R R
, khi cho giá trị Rq thay đổi. Nếu giá trị của R2 quá
gần 0 thì biểu thức nhanh tiến đến 1. Khi đó thì sự biến thiên của Rq không làm thay đổi lớn đến giá trị của độ khuếch đại. Ta chọn R2 khoảng 27 KΩ.
Điện áp đầu vào từ mirophone khoảng dưới 10mV. Để mạch AGC hoạt động tốt thì điện áp ra phải không nhỏ hơn 0,5V. Với độ lợi điện áp khoảng 10 lần thì điện áp ra khoảng 0,1 V. Điện áp này lại được tầng sau khuếch đại 10 lần nữa là vừa đủ cho mạch AGC hoạt động. Chọn R4=100KΩ và R3=10KΩ.
Luận văn tốt nghiệp thạc sĩ GVHD: PGS.TS.Lê Tiến Thường
5.1.1.2 Phân tích khối m ch tách biên đ , lọc và khu ch đ i tín hi u
điều khiển:
Hình 5.6: Sơđồ nguyên lý khối mạch tách biên độ, lọc và khuếch đại tín hiệu điều khiển độ lợi
Độ lợi mạch khuếch đại được xác định bởi hai điện trở R7 và R8.
7 8 1 R R G= + (5.5)
Điện áp ra của tầng khuếch đại đầu tiên có giá trị khoảng 100mv. Chọn giá trị điện trở R7, R8 sao cho độ khuếch đại khoảng 10 lần là được. Ta chọn R8=10KΩ và R7=1KΩ.
Điện trở R5, R6, và tụ C4 xác định thời hằng nạp, xả biên độ tín hiệu ra. Điện