提问者:小点点

表达式类型不明确,无需更多上下文下载任务 Swift


这是我的函数:

 func textToSpeech(transcript: String) async throws {
        
        let key = MICROSOFT_SUB_KEY
        let region = "eastus"
           
        guard let url = URL(string: "https://eastus.api.cognitive.microsoft.com/sts/v1.0/issuetoken") else { fatalError("Missing URL") }
        var request = URLRequest(url: url)
        request.httpMethod = "POST"
        request.setValue((key as! String), forHTTPHeaderField: "Ocp-Apim-Subscription-Key")
        request.setValue("application/ssml+xml", forHTTPHeaderField: "Content-Type")
        request.setValue("audio-16khz-128kbitrate-mono-mp3", forHTTPHeaderField: "X-Microsoft-OutputFormat")
        request.setValue("curl", forHTTPHeaderField: "User-Agent")
        let bodyString = "<speak version='\''1.0'\'' xml:lang='\''en-US'\''><voice xml:lang='\''en-US'\'' xml:gender='\''Female'\'' name='\''en-US-JennyNeural'\''>my voice is my passport verify me this is such a great tool</voice></speak>"
        request.httpBody = Data(bodyString.utf8)

        let (data, response) = try await URLSession.shared.downloadTask(with: request)
        
        guard (response as? HTTPURLResponse)?.statusCode == 200 else { print("ERROR RESPONSE ------>", response)
            return }
    }

当我从我的text ToSpeech函数中打印出data时,它会显示我的音频文件的字节输出:

777字节

但是,当我尝试使用< code>downloadTask下载音频文件时,我收到以下错误:

< code >表达式类型不明确,没有更多上下文

如何下载音频文件,保存到URL,然后播放?


共1个答案

匿名用户

考虑这一行:

let (data, response) = try await URLSession.shared.downloadTask(with: request)

如果您想要一个< code >数据(如< code >数据的名称所示),它将是< code >数据(for:delegate:):

let (data, response) = try await URLSession.shared.data(for: request)

或者,如果下载到一个文件(如使用< code>downloadTask所建议的),它将是< code > download(for:delegate:):

let (downloadURL, response) = try await URLSession.shared.download(for: request)