Tích hợp nhận dạng tiếng nói vào phần mềm

Một phần của tài liệu Xây dựng giao tiếp tiếng nói với phần mềm kế toán và quản trị doanh (Trang 66 - 73)

Sau khi thực hiện quá trình huấn luyện ở trên ta thu được các file cần thiết để tích hợp khả năng nhận dạng tiếng nói cho phần mềm như sau:

- Mô hình ngôn ngữ: erp.gram - Từ điển phát âm Lenh.dic

- File tạp âm: Lenh.noise (hoặc Lenh.filler)

- Các file đặc trưng của ngôn ngữ thu được từ quá trình huấn luyện mô hình âm học: o feat.params o mdef o means o mixture_weights o transition_matrices o variances

Cấu hình các tham số đầu vào cho Sphinx 4 như đã trình bày trong phần giới thiệu về Sphinx4: FrontEnd, Recognizer, Search, Linguist…

Một số tham số cần quan tâm khi liên quan trực tiếp tới các dữ liệu huấn luyện thu được trước đây. Trong chương trình đang xây dựng, các dữ liệu được đặt trực tiếp trong file mã nguồn Java, do đó tham chiếu viết theo cú pháp: resource/url. Thực tế, các dữ liệu này có thể tách riêng thành tài nguyên ngoài giúp dễ dàng cập nhật.

67

Bảng 24 Cấu hình ngôn ngữ

<!-- The Grammar configuration -->

<!-- ******************************************************** --> <component name="jsgfGrammar"

type="edu.cmu.sphinx.jsgf.JSGFGrammar">

<property name="dictionary" value="dictionary"/> <property name="grammarLocation"

value="resource:/speech/database/"/>

<property name="grammarName" value="erp"/> <property name="logMath" value="logMath"/> </component>

- Cấu hình từ điển

Bảng 25 Cấu hình từ điển

<!-- ******************************************************** --> <!-- The Dictionary configuration -->

<!-- ******************************************************** --> <component name="dictionary" type="edu.cmu.sphinx.linguist.dictionary.FastDictionary"> <property name="dictionaryPath" value="resource:/speech/database/Lenh.dic"/> <property name="fillerPath" value="resource:/speech/database/Lenh.noise"/>

<property name="addSilEndingPronunciation" value="false"/> <property name="allowMissingWords" value="false"/>

<property name="unitManager" value="unitManager"/> </component>

- Cấu hình mô hình âm học

Bảng 26 Cấu hình mô hình âm học

<!-- ******************************************************** --> <!-- The acoustic model configuration -->

<!-- ******************************************************** --> <component name="wsj"

type="edu.cmu.sphinx.linguist.acoustic.tiedstate.TiedStateAcousticModel"> <property name="loader" value="wsjLoader"/>

68 </component>

<component name="wsjLoader"

type="edu.cmu.sphinx.linguist.acoustic.tiedstate.Sphinx3Loader"> <property name="logMath" value="logMath"/>

<property name="unitManager" value="unitManager"/>

<property name="location" value="resource:/speech/database"/> </component> (adsbygoogle = window.adsbygoogle || []).push({});

Để người dùng có thể kích hoạt chức năng nhận dạng tiếng nói, FAB – EIS được tích hợp thêm một menu tương tác sử dụng đoạn code sau:

- Sơ đồ khối:

Bắt đầu

Sinh đối tượng ICON

Sinh đối tượng MenuEntry với ICON tạo sẵn

Đăng ký xử lý sự kiện cho đối tượng MenuEntry

Kết thúc

69 - Mã nguồn:

Bảng 27 Mã nguồn menu kích hoạt nhận dạng tiếng nói

Icon speechIcon = new ImageIcon(MainFrameControl.class

.getResource("/images/common/microphone.png")); amEntrySpeech = new RibbonApplicationMenuEntryPrimary(new

IconWrapperResizableIcon(speechIcon), "Kích hoạt nhận dạng tiếng nói", new ActionListener() {

public void actionPerformed(ActionEvent e) {

speechClicked(); }

}, CommandButtonKind.ACTION_ONLY);

Chức năng nhận dạng tiêng nói được thực hiện qua nhiều bước khác nhau: - Bước 1: Bắt đầu - Người dùng kích hoạt chức năng nhận dạng - Bước 2: Khởi tạo các biến xử lý cấu hình nhận dạng

- Bước 3: Khởi tạo Microphone

- Bước 4: Nhận dữ liệu từ Microphone và trích chọn đặc trưng - Bước 5: Nhận dạng dữ liệu tiếng nói

- Bước 6: Thiết lập kết quả nhận dạng tương ứng vào phần mềm kế toán và quản trị doanh nghiệp

- Bước 7: Kiểm tra điều kiện nếu người dùng dừng chức năng nhận dạng thì chuyển sang bước 8, nếu không quay trở lại bước 4

70 Sơ đồ khối

Bắt đầu

Khởi tạo đối tượng xử lý cấu hình nhận dạng

Khởi tạo Microphone

Nhận dữ liệu từ Microphone

Kết thúc Nhận dạng tiếng nói

Thiết lập kết quả nhận dạng vào các điều khiển trên màn

hình nhập liệu Người dùng tắt chức năng nhận dạng - +

71 Mã nguồn

Bảng 28 Mã nguồn nhận dạng tiếng nói (adsbygoogle = window.adsbygoogle || []).push({});

ConfigurationManager cm;

cm = new ConfigurationManager(

MainFrameView.class.getResource(speechConfigFile)); recognizer = (Recognizer) cm.lookup("recognizer"); recognizer.allocate();

// start the microphone or exit if the programm if this is not possible Microphone microphone = (Microphone) cm.lookup("microphone"); if (!microphone.startRecording()) {

System.out.println("Cannot start microphone."); recognizer.deallocate();

}

while (speechEnabled) {

System.out.println("Start speaking. Press Ctrl-C to quit.\n"); Result result;

synchronized (recognizer) {

result = recognizer.recognize(); }

if (result != null) {

String resultText = result.getBestFinalResultNoFiller(); System.out.println("You said: " + resultText + '\n'); try { FunctionTreeNode node = SpeechMapping.getNode(resultText); if (node != null) { processFunctionSelected(node); } else { String number = SpeechMapping.getNumber(resultText); if (!"".equalsIgnoreCase(number)) { Component component = KeyboardFocusManager .getCurrentKeyboardFocusManager() .getFocusOwner();

if (component != null && component instanceof JTextField) {

try {

Method method = component.getClass().getMethod("getText"); String currentText = (String) method.invoke(component);

72

method = component.getClass().getMethod("setText",

String.class);method.invoke(component, currentText + number); } catch (Exception ex) {}

} } } } catch (Exception e) { e.printStackTrace(); } } else {

System.out.println("I can't hear what you said.\n"); }

Trong đoạn mã nguồn trên, ngoài các lớp cung cấp sẵn của bộ công cụ Sphinx, FAB – EIS cung cấp một lớp SpeechMapping dùng để ánh xạ các lệnh nhận dạng được vào tập các chức năng tương ứng.

Sau khi xây dựng thành công khả năng nhận dạng tiếng nói, giao diện mới của FAB – EIS có dạng như sau.

Hình 36 Giao diện nhận dạng tiếng nói

Sau khi kích hoạt khả năng nhận dạng tiếng nói, người dùng có thể giao tiếp với phần mềm FAB – EIS sử dụng tiếng nói trong các trường hợp sau:

73

- Nhập các số từ 0 đến 9 vào các ô nhập liệu.

Ví dụ giao diện Quản lý hồ sơ nhân sự tự động được bật ra khi người dùng nói “Nhân Sự”

Hình 37 Giao diện hồ sơ nhân sự

Một phần của tài liệu Xây dựng giao tiếp tiếng nói với phần mềm kế toán và quản trị doanh (Trang 66 - 73)