package Ġcom . raf ael ds . r ussian helper . details . speech tot ext Ċ Ċ import Ġandroid . content . Context Ċ import Ġcom . raf ael ds . r ussian helper . Build Config Ċ import Ġcom . vo icer ss . tts .* Ċ import Ġio . reactivex . Comp letable Ċ import Ġio . reactivex . Single Ċ import Ġjava . io . File Ċ import Ġjava . io . FileInputStream Ċ import Ġjava . io . File OutputStream Ċ import Ġjavax . inject . Inject ĊĊ Ċ class ĠVoice R ss Service Wrapper Ċ @ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġcontext : ĠContext , ĊĠĠĠ Ġprivate Ġval Ġmedia Player Helper : ĠMedia Player Helper Ċ ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠAPI _ KEY Ġ= ĠBuild Config . VOICE _ API _ KEY ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdownload Speech ( id : ĠString , Ġtext : ĠString ): ĠSingle < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSingle . create Ġ{ Ġemitter Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvoice Provider Ġ= ĠVoice Provider ( API _ KEY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠVoice Parameters ( text , ĠLanguage s . R ussian ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcodec Ġ= ĠAudio Codec . W AV ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġformat Ġ= ĠAudio Format . Format _ 4 4 K HZ . AF _ 4 4 kh z _ 1 6 bit _ stere o ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbase 6 4 Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġss ml Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrate Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠfileName Ġ= Ġid . to Mp 3 FilePath Name ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvoice Provider . add Speech Data EventListener ( object Ġ: ĠSpeech Data EventListener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhandle Speech Data Event ( speech Data : ĠSpeech Data Event <* >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile OutputStream Ġ= ĠFileOutputStream ( File ( fileName )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile OutputStream . write ( speech Data . data Ġas ĠByteArray ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile OutputStream . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemitter . on Success ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemitter . onError ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvoice Provider . speech Async ( params ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġplay ( id : ĠString ): ĠComp letable Ġ= Ġmedia Player Helper . play ( FileInputStream ( id . to Mp 3 FilePath Name ( context )). fd ) ĊĊĠĠĠ Ġfun Ġclear () Ġ= Ġmedia Player Helper . clear () ĊĊĠĠĠ Ġfun Ġclear Cache ( id : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( id . to Mp 3 FilePath Name ( context )) ĊĠĠĠĠĠĠĠ Ġif Ġ( file . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile . delete () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġvoice Exists ( id : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠFile ( id . to Mp 3 FilePath Name ( context )). exists () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠString . to Mp 3 FilePath Name ( context : ĠContext ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"${ context . files Dir }/ $ this . mp 3 " ĊĠĠĠ Ġ} Ċ Ċ }