청크 분할 전송 인코딩Chunked transfer encoding

음성 - 텍스트 변환을 전사하기 위해 Microsoft 음성 인식 API를 사용하면 오디오를 하나의 청크 전체로 보내거나 작은 청크로 분할하여 보낼 수 있습니다.To transcribe speech to text, Microsoft speech recognition API allows you to send the audio as one whole chunk or to chop the audio into small chunks. 효율적으로 오디오를 스트림하고 전사 대기 시간을 줄이려면 청크 분할 전송 인코딩을 사용하여 오디오를 서비스로 스트림하는 것이 좋습니다.For efficient audio streaming and reducing transcription latency, it is recommended that you use chunked transfer encoding to stream the audio to the service. 다른 구현은 사용자가 인식하는 대기 시간을 늘릴 수 있습니다.Other implementations may result in higher user-perceived latency. 자세한 내용은 오디오 스트림 페이지를 참조하세요.For more information, see the Audio Streams page.

참고

한 요청에서 10초를 초과하여 오디오를 업로드할 수 없으며, 총 요청 기간은 14초를 초과할 수 없습니다.You may not upload more than 10 seconds of audio in any one request and the total request duration cannot exceed 14 seconds.

참고

REST API를 사용하여 음성 서비스를 호출하는 경우에만 청크 분할 전송 인코딩을 지정해야 합니다.You need to specify the chunked transfer encoding only if you use the REST APIs to call the speech service. 클라이언트 라이브러리를 사용하는 응용 프로그램에서 청크 분할 전송 인코딩을 구성할 필요가 없습니다.Applications that use client libraries do not need to configure the chunked transfer encoding.

다음 코드에서는 청크 분할 전송 인코딩을 설정하고, 청크 분할되는 오디오 파일을 1,024바이트 청크로 보내는 방법을 보여 줍니다.The following code shows how to set the chunked transfer encoding and to send an audio file being chunked into 1024-byte chunks.


HttpWebRequest request = null;
request = (HttpWebRequest)HttpWebRequest.Create(requestUri);
request.SendChunked = true;
request.Accept = @"application/json;text/xml";
request.Method = "POST";
request.ProtocolVersion = HttpVersion.Version11;
request.Host = @"speech.platform.bing.com";
request.ContentType = @"audio/wav; codec=audio/pcm; samplerate=16000";
request.Headers["Ocp-Apim-Subscription-Key"] = "YOUR_SUBSCRIPTION_KEY";

using (fs = new FileStream(audioFile, FileMode.Open, FileAccess.Read))
{

    /*
    * Open a request stream and write 1024 byte chunks in the stream one at a time.
    */
    byte[] buffer = null;
    int bytesRead = 0;
    using (Stream requestStream = request.GetRequestStream())
    {
        /*
        * Read 1024 raw bytes from the input audio file.
        */
        buffer = new Byte[checked((uint)Math.Min(1024, (int)fs.Length))];
        while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) != 0)
        {
            requestStream.Write(buffer, 0, bytesRead);
        }

        // Flush
        requestStream.Flush();
    }
}