2017-11-29 21 views
0

나는 음성으로 텍스트를 텍스트로 변환하여 일부 사운드 파일을 텍스트로 변환하려고합니다.httr (구체적으로 '--data-binary @')을 사용하여 curl 명령을 R로 번역

(윈도우 10에 자식 bash에 사용) 명령 행에서 다음 명령이 작동 :이 시도했습니다

curl -v -X POST "https://speech.platform.bing.com/speech/recognition/interactive/ 
cognitiveservices/v1?language=<LANG>&format=detailed" -H "Transfer-Encoding: 
chunked" -H "Ocp-Apim-Subscription-Key: <MY KEY>" -H "Content-type: 
audio/wav; codec=audio/pcm; samplerate=16000" --data-binary @<MY .WAV-FILE> 

하지만 나던 작품 :

httr::POST(url = myURL, 
      add_headers("Ocp-Apim-Subscription-Key" = key, 
         "Content-type" = "audio/wav; codec=audio/pcm; samplerate=16000", 
         "Transfer-Encoding" = "chunked"), 
      body = (list("file" = upload_file("PATH_TO_FILE.wav"))), 
      verbose()) 

는이 출력을 반환합니다 : 응답

[https://speech.platform.bing.com/speech/recognition/dictation/ 
cognitiveservices/v1?language=<LANG>&format=detailed] 
Date: 2017-11-29 13:29 
Status: 200 
Content-Type: text/plain 
Size: 75 B 

나는이 요청이 해석과 관련이 있다고 생각한다. .wav 파일의, 그리고 어떻게 든 '- 데이터 - 바이너리'태그를 httr 요청에 추가해야합니다. 내 "content-type"은 평범한 텍스트라는 것을 알 수 있습니다. 또한 API 문서에서 wav 파일 앞에 at 기호를 추가해야한다고 명시하고 있습니다.

도움을 주시면 감사하겠습니다.

건배.

편집 : API 문서에 대한 링크 https://docs.microsoft.com/da-dk/azure/cognitive-services/speech/getstarted/getstartedrest?tabs=curl#tabpanel_AFC9x30-dR_curl

답변

0

내가 그것을 알아 냈다.

핵심은 본문에 적절한 MIME 유형을 설정하는 것입니다. 이 MIME 유형을 설정하지 않으면 수신 측에서 부적절한 해석을 할 수 있습니다. 응답 200이 반환 되더라도 마찬가지입니다.

body <- list(file = httr::upload_file(
    paste0(path, "/", f), 
    type = "audio/wav; codec=audio/pcm; samplerate=16000")) 

여기에서 paste0(path, "/", f)은 오디오 파일의 경로입니다.

myURL <- sprintf('https://speech.platform.bing.com/speech/recognition/%s/cognitiveservices/v1?language=%s&format=%s', 
"dictation", 
"da-DK", 
"detailed") 

rs <- httr::POST(
    url = myURL, 
    httr::add_headers(.headers = c("Ocp-Apim-Subscription-Key" = key)), 
    httr::add_headers(.headers = c("Transfer-Encoding" = "chunked")), 
    body = body)