mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-24 03:52:50 -06:00
Include atk config file in GF. Use environment variable to find the file.
This commit is contained in:
@@ -27,10 +27,6 @@ import System.Environment
|
|||||||
import System.IO
|
import System.IO
|
||||||
import System.IO.Unsafe
|
import System.IO.Unsafe
|
||||||
|
|
||||||
-- FIXME: get these from somewhere else
|
|
||||||
|
|
||||||
config = "/home/aarne/atk/atkrec/atkrec.cfg"
|
|
||||||
|
|
||||||
data ATKLang = ATKLang {
|
data ATKLang = ATKLang {
|
||||||
hmmlist :: FilePath,
|
hmmlist :: FilePath,
|
||||||
mmf0 :: FilePath,
|
mmf0 :: FilePath,
|
||||||
@@ -38,18 +34,26 @@ data ATKLang = ATKLang {
|
|||||||
dict :: FilePath
|
dict :: FilePath
|
||||||
}
|
}
|
||||||
|
|
||||||
|
atk_home_error = "The environment variable ATK_HOME is not set. "
|
||||||
|
++ "It should contain the path to your copy of ATK."
|
||||||
|
|
||||||
|
gf_atk_cfg_error = "The environment variable GF_ATK_CFG is not set. "
|
||||||
|
++ "It should contain the path to your GF ATK configuration"
|
||||||
|
++ " file. A default version of this file can be found"
|
||||||
|
++ " in GF/src/gf_atk.cfg"
|
||||||
|
|
||||||
getLanguage :: String -> IO ATKLang
|
getLanguage :: String -> IO ATKLang
|
||||||
getLanguage l =
|
getLanguage l =
|
||||||
case l of
|
case l of
|
||||||
"en_UK" -> do
|
"en_UK" -> do
|
||||||
atk_home <- getEnv "ATK_HOME"
|
atk_home <- getEnv_ "ATK_HOME" atk_home_error
|
||||||
let res = atk_home ++ "/Resources"
|
let res = atk_home ++ "/Resources"
|
||||||
return $ ATKLang {
|
return $ ATKLang {
|
||||||
hmmlist = res ++ "/UK_SI_ZMFCC/hmmlistbg",
|
hmmlist = res ++ "/UK_SI_ZMFCC/hmmlistbg",
|
||||||
mmf0 = res ++ "/UK_SI_ZMFCC/WI4",
|
mmf0 = res ++ "/UK_SI_ZMFCC/WI4",
|
||||||
mmf1 = res ++ "/UK_SI_ZMFCC/BGHMM2",
|
mmf1 = res ++ "/UK_SI_ZMFCC/BGHMM2",
|
||||||
dict = res ++ "/beep.dct" }
|
dict = res ++ "/beep.dct" }
|
||||||
_ -> fail $ "AKTSpeechInput: language " ++ l ++ " not supported"
|
_ -> fail $ "ATKSpeechInput: language " ++ l ++ " not supported"
|
||||||
|
|
||||||
-- | List of the languages for which we have already loaded the HMM
|
-- | List of the languages for which we have already loaded the HMM
|
||||||
-- and dictionary.
|
-- and dictionary.
|
||||||
@@ -62,6 +66,7 @@ initATK language =
|
|||||||
do
|
do
|
||||||
ls <- readIORef languages
|
ls <- readIORef languages
|
||||||
when (null ls) $ do
|
when (null ls) $ do
|
||||||
|
config <- getEnv_ "GF_ATK_CFG" gf_atk_cfg_error
|
||||||
hPutStrLn stderr $ "Initializing ATK..."
|
hPutStrLn stderr $ "Initializing ATK..."
|
||||||
initialize config
|
initialize config
|
||||||
when (language `notElem` ls) $
|
when (language `notElem` ls) $
|
||||||
@@ -91,3 +96,14 @@ recognizeSpeech name opts cfg =
|
|||||||
hPutStrLn stderr "Listening..."
|
hPutStrLn stderr "Listening..."
|
||||||
s <- recognize recName
|
s <- recognize recName
|
||||||
return s
|
return s
|
||||||
|
|
||||||
|
|
||||||
|
getEnv_ :: String -- ^ Name of environment variable
|
||||||
|
-> String -- ^ Message to fail with if the variable is not set.
|
||||||
|
-> IO String
|
||||||
|
getEnv_ e err =
|
||||||
|
do
|
||||||
|
env <- getEnvironment
|
||||||
|
case lookup e env of
|
||||||
|
Just v -> return v
|
||||||
|
Nothing -> fail err
|
||||||
102
src/gf_atk.cfg
Normal file
102
src/gf_atk.cfg
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
# GF ATK configuration file
|
||||||
|
# ------------------------
|
||||||
|
|
||||||
|
# -- Basic audio signal processing --
|
||||||
|
|
||||||
|
SOURCEFORMAT = HAUDIO
|
||||||
|
SOURCERATE = 625
|
||||||
|
TARGETKIND = MFCC_0_D_A_Z
|
||||||
|
TARGETRATE = 100000.0
|
||||||
|
WINDOWSIZE = 250000.0
|
||||||
|
ENORMALISE = F
|
||||||
|
ZMEANSOURCE = F
|
||||||
|
USEHAMMING = T
|
||||||
|
PREEMCOEF = 0.97
|
||||||
|
USEPOWER = T
|
||||||
|
NUMCHANS = 26
|
||||||
|
CEPLIFTER = 22
|
||||||
|
NUMCEPS = 12
|
||||||
|
SILFLOOR = 50.0
|
||||||
|
USESILDET = T
|
||||||
|
MEASURESIL = F
|
||||||
|
OUTSILWARN = T
|
||||||
|
|
||||||
|
# -- Silence detection ---
|
||||||
|
|
||||||
|
HPARM: CALWINDOW = 40
|
||||||
|
HPARM: SPEECHTHRESH = 9.0
|
||||||
|
HPARM: SILDISCARD = 10.0
|
||||||
|
HPARM: SILENERGY = 0.0
|
||||||
|
HPARM: SPCSEQCOUNT = 10
|
||||||
|
HPARM: SPCGLCHCOUNT = 0
|
||||||
|
HPARM: SILGLCHCOUNT = 2
|
||||||
|
HPARM: SILSEQCOUNT = 50
|
||||||
|
|
||||||
|
# -- Cepstral mean ---
|
||||||
|
|
||||||
|
HPARM: CMNTCONST = 0.995
|
||||||
|
HPARM: CMNRESETONSTOP = F
|
||||||
|
HPARM: CMNMINFRAMES = 12
|
||||||
|
|
||||||
|
# -- Define HMM Resources --
|
||||||
|
|
||||||
|
# FIXME: make this configurable at run-time
|
||||||
|
HPARM: CMNDEFAULT = "/home/bjorn/src/atk/Resources/UK_SI_ZMFCC/cepmean"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# -- Recogniser --
|
||||||
|
|
||||||
|
AREC: TRBAKFREQ = 1
|
||||||
|
|
||||||
|
# hands free, don't return results until end
|
||||||
|
AREC: RUNMODE = 01441
|
||||||
|
|
||||||
|
AREC: GENBEAM = 200.0
|
||||||
|
AREC: WORDBEAM = 175.0
|
||||||
|
AREC: WORDPEN = -10.0
|
||||||
|
|
||||||
|
HNET: FORCECXTEXP = T
|
||||||
|
HNET: ALLOWXWRDEXP = F
|
||||||
|
HNET: MARKSUBLAT = T
|
||||||
|
ARMAN: AUTOSIL = F
|
||||||
|
|
||||||
|
HREC: CONFSCALE = 0.15
|
||||||
|
HREC: CONFOFFSET = 0.0
|
||||||
|
HREC: CONFBGHMM = bghmm
|
||||||
|
|
||||||
|
# -- Set visibility and positions of ATK controls --
|
||||||
|
|
||||||
|
AIN: DISPSHOW = T
|
||||||
|
AIN: DISPXORIGIN = 440
|
||||||
|
AIN: DISPYORIGIN = 220
|
||||||
|
AIN: DISPHEIGHT = 40
|
||||||
|
AIN: DISPWIDTH = 160
|
||||||
|
|
||||||
|
ACODE: DISPSHOW = F
|
||||||
|
ACODE: DISPXORIGIN = 40
|
||||||
|
ACODE: DISPYORIGIN = 220
|
||||||
|
ACODE: DISPHEIGHT = 220
|
||||||
|
ACODE: DISPWIDTH = 380
|
||||||
|
ACODE: MAXFGFEATS = 13
|
||||||
|
ACODE: NUMSTREAMS = 1
|
||||||
|
|
||||||
|
AREC: DISPSHOW = T
|
||||||
|
AREC: DISPXORIGIN = 40
|
||||||
|
AREC: DISPYORIGIN = 20
|
||||||
|
AREC: DISPHEIGHT = 160
|
||||||
|
AREC: DISPWIDTH = 560
|
||||||
|
|
||||||
|
|
||||||
|
# -- Debugging --
|
||||||
|
|
||||||
|
HMMSET: TRACE = 0
|
||||||
|
ADICT: TRACE = 0
|
||||||
|
AGRAM: TRACE = 0
|
||||||
|
GGRAM: TRACE = 0
|
||||||
|
AREC: TRACE = 0
|
||||||
|
ARMAN: TRACE = 0
|
||||||
|
HPARM: TRACE = 0
|
||||||
|
HNET: TRACE = 0
|
||||||
|
HREC: TRACE = 0
|
||||||
|
|
||||||
Reference in New Issue
Block a user