我想使用R的网站。网站是http://soundoftext.com/,我可以在这里下载WAV。具有来自给定文本和语言(语音)的音频的文件。
在WAV中下载语音有两个步骤: 1)插入文本和选择语言。并提交 2)在新窗口中,单击“保存”并选择文件夹。
到现在为止,我可以获取xml树,将其转换为列表并修改文本和语言的值。但是,我不知道如何将列表转换为XML(使用新值)并执行它。然后,我也需要做第二步。
到目前为止,这是我的代码:
require(RCurl)
require(XML)
webpage <- getURL("http://soundoftext.com/")
webpage <- readLines(tc <- textConnection(webpage)); close(tc)
pagetree <- htmlTreeParse(webpage, error=function(...){}, useInternalNodes = TRUE)
x<-xmlToList(pagetree)
# Inserting word
x$body$div$div$div$form$div$label$.attrs[[1]]<-"Raúl"
x$body$div$div$div$form$div$label$.attrs[[1]]
# Select language
x$body$div$div$div$form$div$select$option$.attrs<-"es"
x$body$div$div$div$form$div$select$option$.attrs
我遵循了this方法但是&#34;标记&#34;有错误。
更新:我只是尝试使用rvest下载音频文件,但是,它没有响应或触发任何内容。我做错了什么(缺少)?
url <- "http://soundoftext.com/"
s <- html_session(url)
f0 <- html_form(s)
f1 <- set_values(f0[[1]], text="Raúl", lang="es")
attr(f1, "type") <- "Submit"
s[["fields"]][["submit"]] <- f1
attr(f1, "Class") <- "save"
test <- submit_form(s, f1)
答案 0 :(得分:1)
我认为你的做法没有错,值得一试......这也是我写的东西。
该页面有些令人讨厌,因为它使用jquery在每个请求中附加新的div。我仍然认为应该可以使用rvest
,但我找到了一个使用httr
包的有趣解决方法:
library(httr)
url <- "http://soundoftext.com/sounds"
fd <- list(
submit = "save",
text = "Banana",
lang="es"
)
resp<-POST(url, body=fd, encode="form")
id <- content(resp)$id
download.file(URLencode(paste0("http://soundoftext.com/sounds/", id)), destfile = 'test.mp3')
基本上当它向服务器发送POST
请求时,ID
会回来,如果我们只是GET
id
何时可以下载文件。
答案 1 :(得分:0)
这里是文本之声的创造者。对不起,我花了这么长时间才找到这篇文章。
我刚刚重新设计了Sound of Text,所以你的html解析可能不再适用了。 但是,现在有一个可以使用的API,它可以让您的工作变得更加轻松。
您可以在此处找到文档:https://soundoftext.com/docs
如果不是很好,我道歉。如果您有任何问题,请与我们联系。