2017-03-16 71 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将文本转换为语音。用户输入文本句子。点击提交,watson会将其转换为音频文件。但是,播放的音频文件始终是以前的文本,除非您通过F5刷新应用程序。我怎样才能让音频播放器采取最新的音频文件?Shiny Watson文本到语音实时

例如:文本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

嗨罗伯特,我正在阅读的文章。这是同样的问题。但是,我被困在重命名我的wav文件,因为watson函数输出一个wav文件为1.wav – Germ

+0

尝试了很多方法。我修改函数来做一个file.rename。在UI中呈现并输出。所有的音频文件都已创建但未播放。问题2:如何在播放后删除音频文件。每次提交文本时,音频文件都会永久保存在目录 – Germ

+0

中,我添加了一个工作示例。你可以使用'file.remove()'来删除不需要的文件。我担心,如果您有多个客户端使用您的应用程序,这不是一个特别稳定的版本。 – Robert