Tải bản đầy đủ - 0 (trang)
3 Xây dựng mô hình âm học

3 Xây dựng mô hình âm học

Tải bản đầy đủ - 0trang

-



mot m o t

Tức là word base thay vào đó ta có thể viết

mot m ot

hoặc

mot m o tc

nếu có các thanh điệu (dấu) ta có thể viết:

moojt m ooj t

hoặc

moojt m oo j t

Tập tin .phone chưa tất cả các âm vị sử dụng trong tập tin .dic và thêm SIL

File phone trong bài demo:

kh

oo

ngz

m

ooj

tc

h

a

iz

b

oos

nz

n

aw

mz

s

as

uz

aar

t

ch

is

uw

owf

ow

tr

l

i

ng

if

SIL



-



Tập tin .lm.DMP hoặc .arpa là tập tin mơ hình ngơn ngữ.



-



Tập tin .filler chứa các âm tiết dùng để làm đầy thông thường là các khoảng lặng

được định nghĩa như sau

28



SIL

SIL

SIL



-



Tập tin digit_train.fileids and digit _test.fileids chứa đường dẫn đến các tập tin

ghi âm nằm trong mục wav (không gi đuôi tập tin vào)

thinh/file_1

thinh/file_2

thinh/file_3

thinh/file_4

thinh/file_5

thinh/file_6

thinh/file_7

thinh/file_8

thinh/file_9

. . . . . . .



-



Chú ý id tập tin là _1, _2 nên viết liên tiếp nhau và không bỏ trống cũng như đảo

lôn thứ tự của chúng

Tập tin digit_train.transcription and digit_test.transcription

Tập tin này gỗm nhiều dòng mỗi dòng là nội dùng của tệp wav đặt giữa hai thẻ

cuối dòng là tên tập tin wav

khoong khoong moojt nghifn baary trawm boosn muwowi chisn trawm

tasm hai nghifn nawm trawm sasu ba
(file_1)

khoong muwowfi hai nghifn moojt trawm sasu tasm nawm trawm

baary chisn nghifn boosn trawm ba muwowi
(file_2)

khoong hai hai nghifn tasm trawm sasu muwowi boosn trawm nawm

chisn nghifn moojt trawm ba baary
(file_3)

khoong ba tasm nghifn hai trawm chisn moost ba trawm nawm tuw

nghifn khoong baary sasu
(file_4)

khoong boosn ba nghifn sasu trawm muwowfi nawm boosn trawm hai

muwowi nghifn chisn trawm baary tasm
(file_5)

khoong nawm moost nghifn tasm trawm hai sasu khoong trawm ba

nawm nghifn chisn trawm boosn baary
(file_6)

khoong sasu tasm nghifn ba trawm nawm moost hai trawm linh sasu

nghifn boosn trawm chisn baary
(file_7)

khoong baary baary nghifn tasm trawm ba moost khoong trawm

boosn chisn nghifn sasu trawm nawm hai
(file_8)

khoong tasm nawm nghifn ba trawm baary tuw tasm trawm linh sasu

nghifn moojt trawm chisn hai
(file_9)

khoong chisn hai nghifn tasm trawm chisn muwowi baary trawm

muwowfi nawm nghifn sasu trawm boosn ba
(file_10)

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .



Đặt tên file trong mục wav file_1 tên tập tin “file” id : 1

-



Dữ liệu âm thanh file wav:

29



Thu âm các file wav có nội dung như mỗi dòng trong file .transciption, tiêu chuẩn

thu âm là: sample rate 16khz đối với ứng dụng desktop và 8khz với ứng dụng

điện thoại, kênh mono (không phải stereo), 16bit. File format wav, raw, sph

Chú ý không dùng 16khz train model với 8khz data hoặc ngược lại, chú ý khi cấu

hình.

Thời lượng ghi âm tham khảo bảng 1 phía dưới

5.3.2 Xây dựng mơ hình âm học

Vào thư mục etc, mở file sphinx_train.cfg để cấu hình

CONFIGURE:

Setup the format of database audio (với định dạng wav)



$CFG_WAVFILES_DIR = "$CFG_BASE_DIR/wav";

$CFG_WAVFILE_EXTENSION = 'wav';

$CFG_WAVFILE_TYPE = 'mswav'; # one of nist, mswav, raw



Configure path to files



# Variables used in main training of models

$CFG_DICTIONARY



= "$CFG_LIST_DIR/$CFG_DB_NAME.dic";



$CFG_RAWPHONEFILE



= "$CFG_LIST_DIR/$CFG_DB_NAME.phone";



$CFG_FILLERDICT



= "$CFG_LIST_DIR/$CFG_DB_NAME.filler";



$CFG_LISTOFFILES



= "$CFG_LIST_DIR/${CFG_DB_NAME}_train.fileids";



$CFG_TRANSCRIPTFILE = "$CFG_LIST_DIR/${CFG_DB_NAME}_train.transcription"



Nếu bạn chạy lệnh setup thì CFG_DB_NAME mặc định là tên database của bạn

Configure model type and model parameters



$CFG_HMM_TYPE = '.cont.'; # Sphinx4, Pocketsphinx



30



#$CFG_HMM_TYPE



= '.semi.'; # PocketSphinx only



#$CFG_HMM_TYPE



= '.ptm.'; # Sphinx4, Pocketsphinx, faster model



Sau đó:



$CFG_FINAL_NUM_DENSITIES = 8;



Tham khảo số DENSITIES ở bảng 1 phía dưới





$CFG_N_TIED_STATES = 200;



Đây là số senones tham khảo bảng 1 phía dưới để cấu hình cho các bộ dữ liệu riêng của

mình.



Configure sound and feature parameters



# Feature extraction parameters

$CFG_WAVFILE_SRATE = 8000.0;

$CFG_NUM_FILT = 31; # For wideband speech it's 40, for telephone 8khz

reasonable value is 31

$CFG_LO_FILT = 200; # For telephone 8kHz speech value is 200

$CFG_HI_FILT = 3500; # For telephone 8kHz speech value is 3500



Chú ý khi gi âm trên smartphone nên chọn tần số lấy mẫu là 8000hz khi đó thì config cũng

phải là 8000hz



31



Configure decoding parameter



$DEC_CFG_DICTIONARY



= "$DEC_CFG_BASE_DIR/etc/$DEC_CFG_DB_NAME.dic";



$DEC_CFG_FILLERDICT



= "$DEC_CFG_BASE_DIR/etc/$DEC_CFG_DB_NAME.filler";



$DEC_CFG_LISTOFFILES



=



"$DEC_CFG_BASE_DIR/etc/${DEC_CFG_DB_NAME}_test.fileids";

$DEC_CFG_TRANSCRIPTFILE =

"$DEC_CFG_BASE_DIR/etc/${DEC_CFG_DB_NAME}_test.transcription";

$DEC_CFG_RESULT_DIR



= "$DEC_CFG_BASE_DIR/result";



# These variables, used by the decoder, have to be user defined, and

# may affect the decoder output

$DEC_CFG_LANGUAGEMODEL_DIR = "$DEC_CFG_BASE_DIR/etc";

$DEC_CFG_LANGUAGEMODEL



= "$DEC_CFG_LANGUAGEMODEL_DIR/digit.lm.DMP";



Bảng 1:

Vocabulary



Hours in db



Senones



Densities



5



200



8



Tidigits Digits Recognition



100



20



2000



8



RM1 Command and Control



5000



30



4000



16



WSJ1 5k Small Dictation



20000



80



4000



32



WSJ1 20k Big Dictation



60000



200



6000



16



HUB4 Broadcast News



60000



2000



12000



64



Fisher Rich Telephone Transcription



20



Example



Sau khi configure xong tất cả thì tiến hành training



32



TRAINNING

Vào trong thư mục chứa dữ liệu mở terminal chạy lệnh:



sphinxtrain run



kết quả có dạng dưới đây là được



Baum welch starting for 2 Gaussian(s), iteration: 3 (1 of 1)

0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%

Normalization for iteration: 3

Current Overall Likelihood Per Frame = 30.6558644286942

Convergence Ratio = 0.633864444461992

Baum welch starting for 2 Gaussian(s), iteration: 4 (1 of 1)

0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%

Normalization for iteration: 4



Sau khi training các files mô hình acoustic sẽ nằm trong thư mục sau:



model_parameters/.cd_cont_



Khi CFG_FINAL_NUM_DENSITIES = 8; thì number_of senones =200 (tra cứu them trên

trang của cmusphinx)



Tồn bộ mơ hình ngơn ngữ và mơ hình âm học được xây dựng ở đây

https://github.com/chazo1994/projectandroid/tree/master/speech%20recognition%20%20demo



33



5.4



Xây dựng ứng dụng demo tên Funny



5.4.1 Lập trình cho ứng dụng

Sử dụng android studio

Sau khi xây dựng mơ hình ngơn ngữ và mơ hình âm học ta cần copy các file sau

File mơ hình ngơn ngữ: digit.arpa (hoặc .Bin , .DMP)

File từ điển digit.dict

Toàn bộ file trong thư mục: model_parameters/digit.cd_cont_200 với 200 là số senones khi cấu

hình sau đó copy vào một thư mục nào đó (em đặt tên thư mục đó là digit)

Tạo một thư mục tên là sync rồi copy toàn bộ file mơ hình ngơn ngữ, file từ điển và thư mục

digit vừa tạo.

Tiếp theo download app demo cung cấp bởi cmusphinx

https://sourceforge.net/projects/cmusphinx/files/pocketsphinx/5prealpha/pocketsphinxandroid-demo-5prealpha.tar.gz/download

Sau đó làm các bước như sau

- Bật android studio tạo project funny

- copy thư viện pocketsphinx-android-5prealpha-nolib.jar trong app demo download

phía trên vào trong thư mục libs

- tạo thư mục assets trong thư mục main và copy toàn bộ thư mục sync vừa tạo

file trên vào thư mục này

- Copy folder jniLibs trong app demo download phía trên vào app/src/main

Chú ý quá trình copy paster này sử dụng android studio và không dùng copy trong

cửa sổ windows

- Copy app/assets.xml trong app demo download phía trên vào folder app của

project chúng ta tạo

Setting permission:

Mở file android manifest them vào 2 dòng sau:







Mở app/builde.grade (hoặc builde.grade(app) trong android studio) them vào cuối cùng đoạn

sau:

ant.importBuild 'assets.xml'

preBuild.dependsOn(list, checksum)

clean.dependsOn(clean_assets)



Vậy là xong phần chuẩn bị và cấu hình

Bây giờ là viết code, ứng dụng này tạm thời chỉ có 1 file MainActivity:

Có các phương thức quan trong sau:

Phương thức cài đặt và cấu hình dữ liệu nhận dạng



34



private void setupRecognitzer(File assetsDir) throws IOException {

// configure recognizer

speechRecognizer = defaultSetup().setAcousticModel(new File(assetsDir,"digit"))

.setDictionary(new File(assetsDir, "digit.dict"))

.setRawLogDir(assetsDir)

.setKeywordThreshold(1e-45f)

.setBoolean("-allphone_ci",true)

.getRecognizer();

speechRecognizer.addListener(this);

//try to inogre creat keywoard-activation search

// and add phonetic search

//speechRecognizer.addKeyphraseSearch(KWS_SEARCH, KEYPHRASE);

File languageModel = new File(assetsDir,"digit.arpa");

speechRecognizer.addNgramSearch(KWS_SEARCH, languageModel);

}



ở đây digit là tên database nhận dạng (đặt lúc xây dựng acoustic model)

có một vấn đề là khi tạo mơ hình language sử dụng các file digit.lm.bin hay digit.lm.DMP thì

báo lỗi mà nhưng file này cho tốc độ chạy nhanh hơn, khi dùng file digit.arpa thì mới ổn.

Lúc này chúng ta có thể bắt đầu nghe tiếng nói với hàm

speechRecognizer.startListening(search_name, 10000);

hoặc: speechRecognizer.startListening(search_name);



Lúc này một luồng (thread) mới được tạo ra

Ta có thể kết thúc với hàm stop() hoặc cancel()

Trong q trình nghe ta có các phương thức quan trong sau:

onBeginningOfSpeech()



Được gọi khi bắt đầu nói

onEndOfSpeech()



Được gọi khi kết thúc nói

onPartialResult(Hypothesis hypothesis)



Được gọi khi nhận được mỗi phần của tiếng nói (thường là mỗi từ)

onResult(Hypothesis hypothesis)



Được gọi khi kết thúc nhận dạng

Do quá trình nhận dạng chạy trên một luồng riêng do đó ta nên sử dụng lớp AsyncTask

Sau đây là toàn bộ mã nguồn file MainActivity:

package com.example.nguyenvanthinh.funny;



import

import

import

import

import

import

import

import

import

import



android.os.AsyncTask;

android.os.Bundle;

android.support.design.widget.FloatingActionButton;

android.support.design.widget.Snackbar;

android.support.v7.app.AppCompatActivity;

android.support.v7.widget.Toolbar;

android.view.View;

android.view.Menu;

android.view.MenuItem;

android.widget.TextView;



import java.io.File;

import java.io.IOException;



import static edu.cmu.pocketsphinx.SpeechRecognizerSetup.defaultSetup;



35



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

3 Xây dựng mô hình âm học

Tải bản đầy đủ ngay(0 tr)

×