2017-03-16 4 views
2
library(shiny) 
library(cognizer) 


#' the required api keys 
username_TTS <-"" 
password_TTS <- "" 
TEXT_TO_SPEECH_USERNAME_PASSWORD = paste(username_TTS,":",password_TTS,sep="") 

ui <- fluidPage(

    # Application title 
    titlePanel("Just some text to speech example"), 

    fluidRow(textInput("caption","Enter the caption"),actionButton("gobutton","submit")), 
    fluidRow(verbatimTextOutput("answer"), width = 4), 

    # plays from www/ 
    fluidRow(tags$audio(src = "1.wav", type = "audio/wav", controls = NA), helpText("Key in any sentences, wait and press F5. Then you can play your audio")) 


) 



server <- function(input, output) { 

textfunction <- eventReactive(input$gobutton, { 
    thetext <- input$caption 
    text_audio(thetext, TEXT_TO_SPEECH_USERNAME_PASSWORD, directory = 'www', accept = "audio/wav") 
    "Done!" 

     }) 


output$answer <- renderText({textfunction()}) 


} 

# Run the application 
shinyApp(ui = ui, server = server) 

텍스트를 음성으로 변환하기 위해 Watson을 사용하여 응용 프로그램을 만들었습니다. 사용자가 텍스트 문장을 입력합니다. 제출을 클릭하면 왓슨이 오디오 파일로 변환합니다. 그러나 F5를 통해 앱을 새로 고침하지 않는 한 재생되는 오디오 파일은 항상 이전 텍스트입니다. 오디오 플레이어에서 최신 오디오 파일을 만들 수 있습니까?Shiny Watson text to speech 실시간

예 : 텍스트 1은 : 안녕하세요 제출 놀이가 "안녕하세요" 텍스트 2 될 것입니다 : 안녕 난 F5 때까지 "안녕하세요" 아직 제출 및 재생, 그럼 난 놀이, 자사의 "안녕"

을 클릭하면

답변

0

Shiny의 오디오 파일 캐싱과 관련된 문제입니다. 해결 방법은, here 설명 된대로, 당신을 도울 수 :

그것이 조회 후 wav 파일의 이름을 변경하고 UI에서 서버 측 renderUI()uiOutput()를 사용하여 반응성 UI 구성 요소로 전달합니다.

library(shiny) 
library(cognizer) 

# the required api keys 
username_TTS <-"" 
password_TTS <- "" 
TEXT_TO_SPEECH_USERNAME_PASSWORD = paste(username_TTS,":",password_TTS,sep="") 

ui <- fluidPage(

    # Application title 
    titlePanel("Just some text to speech example"), 

    fluidRow(textInput("caption","Enter the caption"),actionButton("gobutton","submit")), 
    fluidRow(verbatimTextOutput("answer"), width = 4), 

    # plays from www/ 
    fluidRow(
    uiOutput("play") 
) 
) 

server <- function(input, output) { 
    observeEvent(input$gobutton, { 
    unlink("www/*.wav") 
    thetext <- input$caption 
    text_audio(thetext, TEXT_TO_SPEECH_USERNAME_PASSWORD, directory = 'www', accept = "audio/wav") 
    file.rename("www/1.wav", paste0("www/number",input$gobutton,".wav")) 
    "Done!" 
    output$play <- renderUI(
     tags$audio(src = paste0("temp.wav"), type = "audio/wav", controls = NA) 
    ) 
    output$play <- renderUI(
     tags$audio(src = paste0("number", input$gobutton,".wav"), type = "audio/wav", controls = NA) 
    ) 
    output$answer <- renderText(paste("Done!", input$gobutton)) 
    }) 
} 

# Run the application 
shinyApp(ui = ui, server = server) 
+0

안녕 로버트, 나는 현재 게시물을 읽고있다 :

아래 작업 예제를 참조하십시오. 그것은 같은 문제입니다. 그러나, 나는 watson 함수가 wav 파일을 출력하기 때문에 wav 파일의 이름을 바꿀 때 막혔습니다. 1.wav – Germ

+0

은 많은 방법을 시도했습니다. file.rename 할 함수를 수정합니다. UI에서 렌더링하고 출력합니다. 모든 오디오 파일이 생성되지만 재생되지는 않습니다. Issue2 : 재생 후 오디오 파일을 삭제하려면 어떻게해야합니까? 텍스트가 제출 될 때마다 오디오 파일은 디렉토리 – Germ

+0

에 영구적으로 있습니다. 예제를 추가했습니다. 'file.remove()'를 사용하여 불필요한 파일을 삭제할 수 있습니다. 앱을 사용하는 클라이언트가 여러 개인 경우 특히 안정적인 버전이 아닌지 걱정됩니다. – Robert