기본 개념Basic concepts

이 페이지에서는 Microsoft 음성 인식 서비스에 대한 몇 가지 기본 개념에 대해 설명합니다.This page describes some basic concepts in Microsoft speech recognition service. 응용 프로그램에서 Microsoft 음성 인식 API를 사용하기 전에 먼저 이 페이지를 참조하는 것이 좋습니다.We recommend you to read this page before using Microsoft speech recognition API in your application.

음성 인식 이해Understanding speech recognition

음성 사용 응용 프로그램을 처음 만들거나 기존 응용 프로그램에 음성 기능을 처음 추가하는 경우 이 섹션을 사용하여 시작할 수 있습니다.If this is the first time you're creating a speech-enabled application, or if it's the first time you're adding speech capabilities to an existing application, this section helps you get started. 이미 음성 사용 응용 프로그램을 사용한 경험이 있으면 이 섹션을 건너뛸 수 있습니다. 이러한 음성에 대한 경험이 많으면 이 섹션을 건너뛰고 프로토콜 세부 정보로 바로 이동할 수도 있습니다.If you already have some experience with speech-enabled applications, you may choose to just skim this section, or you may skip it entirely if you're an old hand at speech and you want to get right to the protocol details.

오디오 스트림Audio streams

음성의 기본 개념 중 가장 중요한 것은 오디오 스트림입니다.Foremost among the basic concepts of speech is the audio stream. 단일 시점에서 발생하고 단일 정보를 포함하는 키 입력과 달리 음성 요청은 수백 밀리초에 걸쳐 분산되며 수 킬로바이트의 정보를 포함합니다.Unlike a keystroke, which occurs at a single point in time and contains a single piece of information, a spoken request is spread over hundreds of milliseconds and contains many kilobytes of information. 음성 발화의 기간은 응용 프로그램에 간소화되고 세련된 음성 환경을 제공하려는 개발자에게 약간의 어려움을 안겨줍니다.The duration of spoken utterances presents some difficulty to developers looking to provide a streamlined and elegant speech experience for their application. 오늘날의 컴퓨터와 알고리즘에서는 발화 기간 중 절반 정도에서 음성 전사를 수행하므로 2초의 발화는 대략 1초 내에 전사될 수 있지만, 사용자를 처리하는 데 1초의 지연이 발생하는 응용 프로그램은 간소화되지도 않고 세련되지도 않습니다.Today's computers and algorithms perform speech transcription in approximately half of the duration of the utterance, so a 2-second utterance can be transcribed in roughly 1 second, but any application that experiences a 1-second delay in processing user is neither streamlined nor elegant.

다행히도 사용자가 다른 부분을 말하는 동안 발화의 한 부분에서 전사를 수행하여 전사 시간을 "숨기는" 방법이 있습니다.Fortunately, there are ways of "hiding" the transcription time by performing transcription on one part of the utterance while the user is speaking another part. 예를 들어 1초의 발화를 100밀리초의 10개 청크로 분할하고 차례로 각 청크에서 전사를 수행함으로써, 전사에 필요한 총 500밀리초 중 450밀리초 이상이 "숨겨질" 수 있으므로 사용자는 말하는 동안 전사가 수행되고 있음을 알지 못합니다.For example, by splitting a 1-second utterance into 10 chunks of 100 milliseconds and by performing transcription on each chunk in turn, over 450 of the total 500 milliseconds required for transcription can be "hidden" so that the user is unaware transcription is being performed while he/she is speaking. 이 예를 생각해 보면, 사용자가 다음 100밀리초 동안 말하는 동안 서비스에서 이전의 100밀리초에 대한 오디오에서 전사를 수행하므로, 사용자가 말을 멈추는 경우 서비스에서 대략 100밀리초의 오디오를 전사하여 결과를 생성하면 됩니다.When thinking about this example, remember that the service is performing transcription on the previous 100 milliseconds of audio while the user is speaking the next 100, so when the user stops speaking, the service will only have to transcribe roughly 100 milliseconds of audio to produce a result.

이러한 사용자 경험을 달성하기 위해, 음성 오디오 정보는 청크로 수집되어 사용자가 말하는 대로 전사됩니다.To achieve this user experience, spoken audio information is collected in chunks and transcribed as the user speaks. 이러한 오디오 청크는 오디오 스트림에서 집합적으로 수집되며, 이러한 오디오 청크를 서비스로 보내는 프로세스를 오디오 스트리밍이라고 합니다.These audio chunks collectively from the audio stream, and the process of sending these audio chunks to the service is called audio streaming. 오디오 스트리밍은 음성 사용 응용 프로그램의 중요한 부분이며, 청크 크기 조정 및 스트리밍 구현 최적화는 응용 프로그램의 사용자 경험을 향상시키는 데 가장 효과적인 방법에 해당합니다.Audio streaming is an important part of any speech-enabled application; tuning the chunk size and optimizing the streaming implementation are some of the most impactful ways of improving your application's user experience.

마이크Microphones

사람은 귀를 통해 음성 오디오를 처리하지만, 무생물 하드웨어는 마이크를 사용합니다.People process spoken audio using their ears, but inanimate hardware uses microphones. 모든 응용 프로그램에서 음성을 사용할 수 있게 하려면 응용 프로그램에 오디오 스트림을 제공하는 마이크와 통합해야 합니다.To enable speech in any application, you need to integrate with the microphone providing the audio stream for your application.

마이크에 대한 API는 마이크에서 오디오 바이트 수신을 시작하고 중지할 수 있어야 합니다.The APIs for your microphone must allow you to start and stop receiving audio bytes from the microphone. 마이크를 트리거하는 사용자 작업을 결정하여 음성 수신을 시작해야 합니다.You need to decide what user actions will trigger the microphone to start listening for speech. 단추를 눌러 수신 시작을 트리거하도록 선택할 수 있거나, key word(핵심 단어) 또는 wake word(각성 단어) 감시기(spotter)에서 항상 마이크를 청취하도록 선택하고 해당 모듈의 출력을 사용하여 오디오를 Microsoft Speech Service로 보내도록 트리거할 수 있습니다.You may choose to have a button press trigger the start of listening, or you may choose to have a key word or wake word spotter always listening to the microphone and to use the output of that module to trigger sending audio to the Microsoft Speech Service.

음성 끝End of speech

화자가 말을 멈춘 시점을 감지하는 것은 사람에게는 충분히 간단해 보이지만 랩 환경 외부에서는 다소 어려운 문제입니다.Detecting when a speaker has stopped speaking seems simple enough for humans but is a rather difficult problem outside of laboratory conditions. 주변 소음이 많아 상황을 복잡하게 만드는 경우가 종종 있으므로 발화 후에 순수한 묵음을 찾는 것만으로는 충분하지 않습니다.It is not enough to simply look for pure silence after an utterance, since there is often a lot of ambient noise to complicate things. Microsoft Speech Service는 사용자가 말을 멈추었을 때 빠르게 감지하는 작업을 훌륭하게 수행하고 이 사실을 응용 프로그램에 알릴 수 있지만, 이 배열은 응용 프로그램에서 사용자가 말을 멈추는 시점을 마지막으로 알고 있음을 의미합니다.The Microsoft Speech Service does an excellent job of quickly detecting when a user has stopped speaking, and the service can inform your application of this fact, but this arrangement does mean that your application is the last to know when the user stop speaking. 이는 응용 프로그램에서 사용자 입력이 시작되고 끝나는 시점을 이 가장 먼저 알 수 있는 다른 입력 형식과는 전혀 다릅니다.This isn't at all like other forms of input where your application is the first to know when the user's input starts and ends.

비동기 서비스 응답Asynchronous service responses

사용자 입력이 완료되었을 때 응용 프로그램에 알려야 한다는 사실은 응용 프로그램에 성능 저하 또는 프로그래밍 문제를 초래하지는 않지만, 친숙한 입력 요청/응답 패턴과는 다른 방식으로 음성 요청을 고려해야 합니다.The fact that your application needs to be informed of when user input is complete doesn't impose any performance penalties or programming difficulties on your application, but it does require that you think about speech requests differently from the input request/response patterns with which you are familiar. 응용 프로그램에서 사용자가 말하기를 멈추는 시점을 알 수 없으므로 응용 프로그램은 서비스의 응답을 동시에 비동기적으로 기다리면서 오디오를 서비스로 계속 스트림해야 합니다.Since your application won't know when the user stops speaking, your application must continue to stream audio to the service while simultaneously and asynchronously waiting on a response from the service. 이 패턴은 HTTP와 같은 다른 요청/응답 웹 프로토콜과 다릅니다.This pattern is unlike other request/response web protocols like HTTP. 이러한 프로토콜에서는 응답을 받기 전에 요청을 완료해야 하며, Microsoft Speech Service 프로토콜에서는 요청에 대한 오디오를 계속 스트림하면서 응답을 받습니다.In those protocols, you must complete a request before receiving any response; in the Microsoft Speech Service protocol, you receive responses while you are still streaming audio for the request.

참고

Speech HTTP REST API를 사용하는 경우 이 기능은 지원되지 않습니다.This feature is not supported when using Speech HTTP REST API.

Turns

말은 정보의 이동 수단입니다.Speech is a carrier of information. 말하는 경우 해당 정보를 듣고 있는 누군가에게 소유하고 있는 정보를 전달하려고 합니다.When you speak, you are trying to convey information that is in your possession to someone who is listening for that information. 정보를 전달할 때는 일반적으로 말하기와 듣기가 교대로 수행됩니다.When conveying information, you usually take turns speaking and listening. 마찬가지로, 음성 사용 응용 프로그램은 일반적으로 수신과 응답을 교대로 수행하면서 사용자와 상호 작용하지만 대개 응용 프로그램이 대부분의 듣기를 수행합니다.Likewise, your speech-enabled application interacts with users by alternately listening and responding, although your application usually does most of the listening. 사용자의 음성 입력 및 이 입력에 대한 서비스 응답을 이라고 합니다.The user's spoken input and the service response to this input is called a turn. 은 사용자가 말하면 시작되고, 응용 프로그램에서 음성 서비스 응답 처리를 완료하면 종료됩니다.A turn starts when the user speaks and ends when your application has completed handling of the speech service response.

원격 분석Telemetry

숙련된 개발자인 경우에도 음성 사용 장치 또는 응용 프로그램을 만드는 것은 어려울 수 있습니다.Creating a speech-enabled device or application can be challenging, even for experienced developers. 스트림 기반 프로토콜은 얼핏 보기에는 어려운 것처럼 보이지만 묵음 감지와 같은 중요한 세부 정보는 전혀 새로운 것일 수 있습니다.Stream-based protocols often seem daunting at first glance, and important details like silence detection may be completely new. 단일 요청/응답 쌍을 완료하기 위해 많은 메시지를 성공적으로 보내고 받아야 하기 때문에 메시지에 대한 완전하고 정확한 데이터를 수집하는 것이 매우 중요합니다.With so many messages needing to be successfully sent and received to complete a single request/response pair, it is very important to collect complete and accurate data about those messages. Microsoft Speech Service 프로토콜은 이러한 데이터의 수집을 제공합니다.The Microsoft Speech Service protocol provides for the collection of this data. 가능한 한 정확하게 필요한 데이터를 제공하기 위해 모든 노력을 기울여야 합니다. 완전하고 정확한 데이터를 제공함으로써 자신에게 도움이 됩니다. 클라이언트 구현 문제를 해결하는 데 Microsoft Speech Service 팀의 도움이 필요하면 수집한 원격 분석 데이터의 품질이 문제 분석에 매우 중요합니다.You should make every effort to supply the required data as accurately as possible; by supplying complete and accurate data, you will be helping yourself -- should you ever need help from the Microsoft Speech Service Team in troubleshooting your client implementation, the quality of the telemetry data you have gathered will be critical for problem analysis.

참고

음성 인식 REST API를 사용하는 경우 이 기능은 지원되지 않습니다.This feature is not supported when using speech recognition REST API.

음성 응용 프로그램 상태Speech application states

응용 프로그램에서 음성 입력을 사용할 수 있도록 하는 단계는 마우스 클릭이나 손가락 탭과 같은 다른 입력 형태의 단계와 약간 다릅니다.The steps you take to enable speech input in your application are a little different than the steps for other forms of input such as mouse clicks or finger taps. 응용 프로그램에서 마이크를 청취하고 음성 서비스에 데이터를 보내는 시점, 서비스에서 응답을 기다리는 시점 및 유휴 상태에 있는 시점을 추적해야 합니다.You must keep track of when your application is listening to the microphone and sending data to the speech service, when it is waiting for a response from the service and when it is in an idle state. 이러한 상태 간의 관계는 아래 다이어그램에 나와 있습니다.The relationship between these states is shown in the diagram below.

음성 응용 프로그램 상태 다이어그램

Microsoft Speech Service는 일부 상태에 참여하므로 서비스 프로토콜에는 상태 간 응용 프로그램 전환에 도움이 되는 메시지가 정의됩니다.Since the Microsoft Speech Service participates in some of the states, the service protocol defines messages that help your application transition between states. 응용 프로그램은 이러한 프로토콜 메시지를 해석하고 작동하여 음성 응용 프로그램 상태를 추적하고 관리해야 합니다.Your application needs to interpret and act on these protocol messages to track and manage the speech application states.

앱에서 음성 인식 서비스 사용Using the speech recognition service from your apps

개발자가 앱에 Speech를 추가할 수 있도록 Microsoft 음성 인식 서비스에서 제공하는 두 가지 방법은 다음과 같습니다.Microsoft speech recognition service provides two ways for developers to add Speech to their apps.

  • REST API: 개발자가 음성 인식을 위해 앱에서 서비스로의 HTTP 호출을 사용할 수 있습니다.REST APIs: Developers can use HTTP calls from their apps to the service for speech recognition.
  • 클라이언트 라이브러리: 고급 기능의 경우 개발자가 Microsoft Speech 클라이언트 라이브러리를 다운로드하고 앱에 연결할 수 있습니다.Client libraries: For advanced features, developers can download Microsoft Speech client libraries, and link into their apps. 클라이언트 라이브러리는 다양한 언어(C#, Java, JavaScript, ObjectiveC)를 사용하여 다양한 플랫폼(Windows, Android, iOS)에서 사용할 수 있습니다.The client libraries are available on various platforms (Windows, Android, iOS) using different languages (C#, Java, JavaScript, ObjectiveC).
사용 사례Use cases REST APIREST APIs 클라이언트 라이브러리Client Libraries
중간 결과가 없는 짧은 음성 오디오(예: 오디오 길이가 15초 미만인 명령) 변환Convert a short spoken audio, for example, commands (audio length < 15 s) without interim results yesYes yesYes
긴 오디오(15초 초과) 변환Convert a long audio (> 15 s) 아니요No yesYes
중간 결과가 필요한 오디오 스트림Stream audio with interim results desired 아니요No yesYes
LUIS를 사용하여 오디오에서 변환된 텍스트 인식Understand the text converted from audio using LUIS 아니요No yesYes

언어 또는 플랫폼에 아직 SDK가 없는 경우 프로토콜 설명서에 따라 사용자 고유의 구현을 만들 수 있습니다.If your language or platform does not yet have an SDK, you can create your own implementation based on the protocol documentation.

인식 모드Recognition modes

인식에는 interactive, conversationdictation의 세 가지 인식 모드가 있습니다.There are three modes of recognition: interactive, conversation, and dictation. 인식 모드는 사용자가 말하는 방법에 따라 음성 인식을 조정합니다.The recognition mode adjusts speech recognition based on how the users are likely to speak. 응용 프로그램에 적합한 인식 모드를 선택합니다.Choose the appropriate recognition mode for your application.

참고

REST 프로토콜의 인식 모드는 WebSocket 프로토콜의 인식 모드와 다른 동작을 수행할 수 있습니다.Recognition modes might have different behaviors in the REST protocol than they do in the WebSocket protocol. 예를 들어 REST API는 대화 또는 받아쓰기 모드에서도 연속 인식을 지원하지 않습니다.For example, the REST API does not support continuous recognition, even in conversation or dictation mode.

참고

이러한 모드는 REST 또는 WebSocket 프로토콜을 직접 사용할 때 적용됩니다.These modes are applicable when you directly use the REST or WebSocket protocol. 클라이언트 라이브러리는 다른 매개 변수를 사용하여 인식 모드를 지정합니다.The client libraries use different parameters to specify recognition mode. 자세한 내용은 선택한 클라이언트 라이브러리를 참조하세요.For more information, see the client library of your choice.

Microsoft Speech Service는 모든 인식 모드에 대해 하나의 인식 구 결과만 반환합니다.The Microsoft Speech Service returns only one recognition phrase result for all recognition modes. 한 번의 발화에는 15초의 제한이 있습니다.There is a limit of 15 seconds for any single utterance.

대화형 모드Interactive mode

interactive 모드에서는 사용자가 짧은 요청을 하고 응용 프로그램에서 응답으로 작업을 수행해야 합니다.In interactive mode, a user makes short requests and expects the application to perform an action in response.

대화형 모드 응용 프로그램의 일반적인 특징은 다음과 같습니다.The following characteristics are typical of interactive mode applications:

  • 사용자는 다른 사람에게 말하는 것이 아니라 컴퓨터에 말한다는 것을 알고 있습니다.Users know they are speaking to a machine and not to another human.
  • 응용 프로그램 사용자는 응용 프로그램에서 수행하려는 작업에 따라 말하려는 내용을 미리 알고 있습니다.Application users know ahead of time what they want to say, based on what they want the application to do.
  • 발화는 일반적으로 2-3초 정도 지속됩니다.Utterances typically last about 2-3 seconds.

대화 모드Conversation mode

conversation 모드에서는 사용자가 사람 사이의 대화에 참여합니다.In conversation mode, users are engaged in a human-to-human conversation.

대화 모드 응용 프로그램의 일반적인 특징은 다음과 같습니다.The following characteristics are typical of conversation mode applications:

  • 사용자는 다른 사람에게 말한다는 것을 알고 있습니다.Users know that they are talking to another person.
  • 음성 인식은 두 참가자 중 한 사람 또는 두 사람 모두가 음성 텍스트를 볼 수 있게 하여 인간의 대화를 향상시킵니다.Speech recognition enhances the human conversations by allowing one or both participants to see the spoken text.
  • 사용자는 자신이 말하려는 내용을 항상 계획하지는 않습니다.Users do not always plan what they want to say.
  • 사용자는 속어와 기타 정중하지 않은 음성을 자주 사용합니다.Users frequently use slang and other informal speech.

받아쓰기 모드Dictation mode

dictation 모드에서는 사용자가 추가 처리를 위해 더 긴 발화를 응용 프로그램에 말합니다.In dictation mode, users recite longer utterances to the application for further processing.

받아쓰기 모드 응용 프로그램의 일반적인 특징은 다음과 같습니다.The following characteristics are typical of dictation mode applications:

  • 사용자는 컴퓨터에 말한다는 것을 알고 있습니다.Users know that they are talking to a machine.
  • 음성 인식 텍스트 결과는 사용자에게 표시됩니다.Users are shown the speech recognition text results.
  • 사용자는 종종 말하려는 내용을 계획하고 더 정중한 언어를 사용합니다.Users often plan what they want to say and use more formal language.
  • 사용자는 5~8초 동안 지속되는 완전한 문장을 사용합니다.Users employ full sentences that last 5-8 seconds.

참고

받아쓰기 및 대화 모드에서 Microsoft Speech Service는 부분 결과를 반환하지 않습니다.In dictation and conversation modes, the Microsoft Speech Service does not return partial results. 대신, 오디오 스트림의 묵음 경계 이후의 안정적인 구 결과를 반환합니다.Instead, the service returns stable phrase results after silence boundaries in the audio stream. Microsoft는 이러한 연속 인식 모드에서 사용자 경험을 향상시키기 위해 음성 프로토콜을 향상시킬 수 있습니다.Microsoft might enhance the speech protocol to improve the user experience in these continuous recognition modes.

인식 언어Recognition languages

인식 언어는 응용 프로그램 사용자가 말하는 언어를 지정합니다.The recognition language specifies the language that your application user speaks. 연결에서 language URL 쿼리 매개 변수를 사용하여 인식 언어를 지정합니다.Specify the recognition language with the language URL query parameter on the connection. language 쿼리 매개 변수의 값은 BCP 47 IETF 언어 태그를 사용하고, 음성 인식 API에서 지원되는 언어 중 하나여야 합니다.The value of the language query parameter uses the IETF language tag BCP 47, and must be one of the languages that are supported by speech recognition API. Speech Service에서 지원되는 언어의 전체 목록은 지원되는 언어 페이지에서 찾을 수 있습니다.The complete list of languages supported by the Speech Service can be found in the page Supported Languages.

Microsoft Speech Service는 HTTP 400 Bad Request 응답을 표시하여 잘못된 연결 요청을 거부합니다.The Microsoft Speech Service rejects invalid connection requests by displaying an HTTP 400 Bad Request response. 잘못된 요청은 다음 중 하나입니다.An invalid request is one that:

  • language 쿼리 매개 변수 값을 포함하고 있지 않습니다.Does not include a language query parameter value.
  • 형식이 잘못 지정된 language 쿼리 매개 변수를 포함하고 있습니다.Includes a language query parameter that is incorrectly formatted.
  • 지원되는 언어 중 하나가 아닌 language 쿼리 매개 변수를 포함하고 있습니다.Includes a language query parameter that is not one of the support languages.

서비스에서 지원되는 언어 중 하나 또는 모두를 지원하는 응용 프로그램을 빌드하도록 선택할 수 있습니다.You may choose to build an application that supports one or all of the languages that are supported by the service.

Example

다음 예제에서는 응용 프로그램에서 미국 영어 화자에 대해 대화 음성 인식 모드를 사용합니다.In the following example, an application uses conversation speech recognition mode for a US English speaker.

https://speech.platform.bing.com/speech/recognition/conversation/cognitiveservices/v1?language=en-US

전사 응답Transcription responses

필사 응답은 변환된 텍스트를 오디오에서 클라이언트로 반환합니다.The transcription responses return the converted text from audio to clients. 전사 응답에 포함되는 필드는 다음과 같습니다.A transcription response contains the following fields:

  • RecognitionStatus는 인식 상태를 지정합니다.RecognitionStatus specifies the status of the recognition. 아래 표에는 가능한 값이 나와 있습니다.The possible values are given in the table below.
상태Status 설명Description
성공Success 성공적으로 인식했고 DisplayText 필드가 있습니다.The recognition was successful and the DisplayText field is present
NoMatchNoMatch 오디오 스트림에서 음성이 감지되었지만 대상 언어의 단어가 일치하지 않습니다.Speech was detected in the audio stream, but no words from the target language were matched. 자세한 내용은 [NoMatch 인식 상태(#nomatch-recognition-status)]를 참조하세요.See [NoMatch Recognition Status(#nomatch-recognition-status) for more details
InitialSilenceTimeoutInitialSilenceTimeout 오디오 스트림의 시작 부분에는 묵음만 있으며, 서비스의 음성 대기 시간이 초과되었습니다.The start of the audio stream contained only silence, and the service timed out waiting for speech
BabbleTimeoutBabbleTimeout 오디오 스트림의 시작 부분에는 소음만 있으며, 서비스의 음성 대기 시간이 초과되었습니다.The start of the audio stream contained only noise, and the service timed out waiting for speech
오류Error 인식 서비스에서 내부 오류가 발생하여 계속할 수 없습니다.The recognition service encountered an internal error and could not continue
  • DisplayText는 대문자 표시, 문장 부호 및 역 텍스트 정규화가 적용되고 불경한 언어가 별표로 마스킹된 후에 인식된 구를 나타냅니다.DisplayText represents the recognized phrase after capitalization, punctuation, and inverse-text-normalization have been applied and profanity has been masked with asterisks. RecognitionStatus 필드의 값이 Success경우에만 DisplayText 필드가 있습니다.The DisplayText field is present only if the RecognitionStatus field has the value Success.

  • Offset은 오디오 스트림의 시작을 기준으로 구가 인식된 오프셋(100나노초 단위)을 지정합니다.Offset specifies the offset (in 100-nanosecond units) at which the phrase was recognized, relative to the start of the audio stream.

  • Duration은 이 음성 구의 지속 시간(100나노초 단위)을 지정합니다.Durationspecifies the duration (in 100-nanosecond units) of this speech phrase.

필요한 경우 전사 응답에서 더 많은 정보를 반환합니다.A transcription response returns more information if desired. 더 자세한 출력을 반환하는 방법은 출력 형식을 참조하세요.See output format for how to return more detailed outputs.

Microsoft Speech Service는 대문자 표시/문장 부호 추가, 불경한 언어 마스킹 및 일반 형식으로의 텍스트 정규화가 포함된 추가 전사 프로세스를 지원합니다.Microsoft Speech Service supports additional transcription process that includes adding capitalization and punctuation, masking profanity, and normalizing text to common forms. 예를 들어 사용자가 "여섯 개의 아이폰을 구입하라고 미리 알려주세요"라는 단어로 표현된 구를 말하면 Microsoft Speech Service에서 "6개의 아이폰을 구입하라고 미리 알려주세요"라고 전사된 텍스트를 반환합니다.For example, if a user speaks a phrase represented by the words "remind me to buy six iPhones", Microsoft's Speech Services will return the transcribed text "Remind me to buy 6 iPhones." "여섯"이라는 단어를 "6"이라는 숫자로 변환하는 프로세스를 ITN(역 텍스트 정규화)라고 합니다.The process that converts the word "six" to the number "6" is called Inverse Text Normalization (ITN for short).

NoMatch 인식 상태NoMatch recognition status

Microsoft Speech Service가 오디오 스트림에서 음성을 감지하지만 해당 음성을 요청에 사용되는 언어 문법과 일치시킬 수 없는 경우 전사 응답에서 RecognitionStatusNoMatch를 반환합니다.The transcription response returns NoMatch in RecognitionStatus when the Microsoft Speech Service detects speech in the audio stream but is unable to match that speech to the language grammar being used for the request. 예를 들어 인식기에서 미국 영어를 음성 언어로 사용해야 하는 경우 사용자가 독일어로 무언가를 말하면 NoMatch 상태가 발생할 수 있습니다.For example, a NoMatch condition might occur if a user says something in German when the recognizer expects US English as the spoken language. 발화의 파형 패턴은 사람의 음성이 있음을 나타내지만, 발화된 단어 중 어느 것도 인식기에서 사용하는 미국 영어 어휘집과 일치하지 않습니다.The waveform pattern of the utterance would indicate the presence of human speech, but none of the words spoken would match the US English lexicon being used by the recognizer.

또 다른 NoMatch 상태는 인식 알고리즘에서 오디오 스트림에 포함된 소리에 대한 정확한 일치를 찾을 수 없는 경우에 발생합니다.Another NoMatch condition occurs when the recognition algorithm is unable to find an accurate match for the sounds contained in the audio stream. 이 상태가 발생하면 Microsoft Speech Service에서 가설 텍스트가 포함된 speech.hypothesis 메시지를 생성할 수 있지만 RecognitionStatusNoMatchspeech.phrase 메시지를 생성합니다.When this condition happens, the Microsoft Speech Service may produce speech.hypothesis messages that contain hypothesized text but will produce a speech.phrase message in which the RecognitionStatus is NoMatch. 이 상태는 정상입니다. speech.hypothesis 메시지에서 텍스트의 정확도 또는 충실도에 대해 어떤 가정도 하면 안됩니다.This condition is normal; you must not make any assumptions about the accuracy or fidelity of the text in the speech.hypothesis message. 또한 Microsoft Speech Service에서 RecognitionStatus Success가 있는 speech.phrase 메시지를 생성할 수 있는 speech.hypothesis 메시지를 생성하므로 이를 가정하면 안됩니다.Furthermore, you must not assume that because the Microsoft Speech Service produces speech.hypothesis messages that the service is able to produce a speech.phrase message with RecognitionStatus Success.

출력 형식Output format

Microsoft Speech Service는 전사 응답에 다양한 페이로드 형식을 반환할 수 있습니다.Microsoft Speech Service can return a variety of payload formats in transcription responses. 모든 페이로드는 JSON 구조입니다.All payloads are JSON structures.

format URL 쿼리 매개 변수를 지정하여 구 결과 형식을 제어할 수 있습니다.You can control the phrase result format by specifying the format URL query parameter. 기본적으로 서비스는 simple 결과를 반환합니다.By default, the service returns simple results.

형식Format 설명Description
simple 인식 상태와 인식된 텍스트가 표시 형식으로 포함된 간소화된 구 결과입니다.A simplified phrase result containing the recognition status and the recognized text in display form.
detailed 각 구 결과에 네 가지 인식 형식과 신뢰도 점수가 모두 포함된 구 검색 결과의 인식 상태 및 N 상위 목록입니다.A recognition status and N-best list of phrase results where each phrase result contains all four recognition forms and a confidence score.

detailed 형식에는 응답에서 RecognitionStatus, Offsetduration외에도 N 상위 값이 포함됩니다.The detailed format contains N-best values, in addition to RecognitionStatus, Offset, and duration, in the response.

N 상위 값N-best values

수신기는 인간이든 컴퓨터이든 간에 이들이 말한 것을 정확히 들었는지 확신할 수 없습니다.Listeners, whether human or machine, can never be certain that they heard exactly what was spoken. 수신기는 발화의 특정 해석에만 확률을 할당할 수 있습니다.A listener can assign a probability only to a particular interpretation of an utterance.

정상 조건에서 자주 상호 작용하는 다른 사람에게 말할 때 사람들은 발화된 단어를 인식할 확률이 높습니다.In normal conditions, when speaking to others with whom they frequently interact, people have a high probability of recognizing the words that were spoken. 컴퓨터 기반 음성 수신기는 비슷한 정확도 수준을 달성하기 위해 노력하고, 적절한 조건에서 인간과의 동등성을 달성합니다.Machine-based speech listeners strive to achieve similar accuracy levels and, under the right conditions, they achieve parity with humans.

음성 인식에 사용되는 알고리즘은 정상 처리의 일환으로 발화에 대한 대체 해석을 탐색합니다.The algorithms that are used in speech recognition explore alternative interpretations of an utterance as part of normal processing. 일반적으로 이러한 대체 해석은 단일 해석을 강력하게 지지하는 증거가 되면 무시됩니다.Usually, these alternatives are discarded as the evidence in favor of a single interpretation becomes overwhelming. 그러나 최적 조건에 미치지 못하면 음성 인식기에서 가능한 다른 해석 목록으로 마무리됩니다.In less than optimal conditions, however, the speech recognizer finishes with a list of alternate possible interpretations. 이 목록의 상위 N개 대체 해석을 N 상위 목록이라고 합니다.The top N alternatives in this list are called the N-best list. 각 대체 해석에는 신뢰도 점수가 할당됩니다.Each alternative is assigned a confidence score. 신뢰도 점수의 범위는 0에서 1까지입니다.Confidence scores range from 0 to 1. 1점은 가장 높은 신뢰도를 나타내며,A score of 1 represents the highest level of confidence. 0점은 가장 낮은 신뢰도를 나타냅니다.A score of 0 represents the lowest level of confidence.

참고

N 상위 목록의 항목 수는 여러 발화에 따라 달라집니다.The number of entries in the N-best list vary across multiple utterances. 항목 수는 동일한 발화의 여러 인식에 따라 달라질 수 있습니다.The number of entries can vary across multiple recognitions of the same utterance. 이 변형은 음성 인식 알고리즘의 확률적 특성에 따른 당연하고 예상된 결과입니다.This variation is a natural and expected outcome of the probabilistic nature of the speech recognition algorithm.

N 상위 목록에 반환되는 각 항목은 다음과 같습니다.Each entry returned in the N-best list contains

신뢰도 점수 Confidence scores

신뢰도 점수는 음성 인식 시스템에 필수적인 요소입니다.Confidence scores are integral to speech recognition systems. Microsoft Speech Service는 신뢰도 분류자로부터 신뢰도 점수를 얻습니다.The Microsoft Speech Service obtains confidence scores from a confidence classifier. Microsoft는 정확한 인식과 잘못된 인식을 최대한 구별할 수 있도록 설계된 기능 집합을 통해 신뢰도 분류자를 학습합니다.Microsoft trains the confidence classifier over a set of features that are designed to maximally discriminate between correct and incorrect recognition. 신뢰도 점수는 개별 단어와 전체 발화에 대해 평가됩니다.Confidence scores are evaluated for individual words and entire utterances.

서비스에서 반환된 신뢰도 점수를 사용하도록 선택하는 경우 다음 동작을 알고 있어야 합니다.If you choose to use the confidence scores that are returned by the service, be aware of the following behavior:

  • 신뢰도 점수는 동일한 인식 모드와 언어 내에서만 비교할 수 있습니다.Confidence scores can be compared only within the same recognition mode and language. 다른 언어 또는 다른 인식 모드 간에 점수를 비교하지 않습니다.Do not compare scores between different languages or different recognition modes. 예를 들어 대화형 인식 모드의 신뢰도 점수는 받아쓰기 모드의 신뢰도 점수와 상관 관계가 없습니다.For example, a confidence score in interactive recognition mode has no correlation to a confidence score in dictation mode.
  • 신뢰도 점수는 제한된 발화 집합에 가장 적합합니다.Confidence scores are best used on a restricted set of utterances. 큰 발화 집합에 대한 점수에는 당연히 상당한 정도의 가변성이 있습니다.There is naturally a great degree of variability in the scores for a large set of utterances.

신뢰도 점수 값을 응용 프로그램이 작동하는 임계값으로 사용하도록 선택하는 경우 음성 인식을 사용하여 임계값을 설정합니다.If you choose to use a confidence score value as a threshold on which your application acts, use speech recognition to establish the threshold values.

  • 응용 프로그램에 대한 발화 대표 샘플에서 음성 인식을 실행합니다.Execute speech recognition on a representative sample of utterances for your application.
  • 샘플 집합의 각 인식에 대한 신뢰도 점수를 수집합니다.Collect the confidence scores for each recognition in the sample set.
  • 해당 샘플에 대한 신뢰도의 일부 백분위수를 기준으로 임계값을 설정합니다.Base your threshold value on some percentile of confidence for that sample.

모든 응용 프로그램에 대해 단일 임계값을 설정하는 것은 적절하지 않습니다.No single threshold value is appropriate for all applications. 한 응용 프로그램에 허용 가능한 신뢰도 점수가 다른 응용 프로그램에는 허용되지 않을 수도 있습니다.An acceptable confidence score for one application might be unacceptable for another application.

어휘 형식lexical form

어휘 형식은 문장 부호 또는 대문자 표시가 없이 정확히 어떻게 발생했는지를 나타내는 인식된 텍스트입니다.The lexical form is the recognized text, exactly how it occurred in the utterance and without punctuation or capitalization. 예를 들어 "1020 엔터프라이즈 가도" 주소의 어휘 형식은 "일십 이십 엔터프라이즈 가도"로 말한 것으로 가정하면 일십 이십 엔터프라이즈 가도가 됩니다.For example, the lexical form of the address "1020 Enterprise Way" would be ten twenty enterprise way, assuming that it was spoken that way. "5개의 아이폰을 구입하라고 미리 알려주세요"라는 문장의 어휘 형식은 다섯 개의 아이폰을 구입하라고 미리 알려주세요입니다.The lexical form of the sentence "Remind me to buy 5 pencils" is remind me to buy five pencils.

어휘 형식은 비표준 텍스트 정규화를 수행해야 하는 응용 프로그램에 가장 적합합니다.The lexical form is most appropriate for applications that need to perform non-standard text normalization. 어휘 형식은 처리되지 않은 인식 단어가 필요한 응용 프로그램에도 적합합니다.The lexical form is also appropriate for applications that need unprocessed recognition words.

불경한 언어는 어휘 형식으로 마스킹되지 않습니다.Profanity is never masked in the lexical form.

ITN(역 텍스트 정규화) 형식ITN form

텍스트 정규화는 한 형식에서 다른 형식의 "정규" 형식으로 텍스트를 변환하는 프로세스입니다.Text normalization is the process of converting text from one form to another "canonical" form. 예를 들어 "555-1212" 전화 번호는 오 오 오 일 이 일 이 정규 형식으로 변환할 수 있습니다.For example, the phone number "555-1212" might be converted to the canonical form five five five one two one two. 텍스트 정규화(ITN)는 이 프로세스를 역방향으로 수행하여 "오 오 오 일 이 일 이"라는 단어를 반전된 555-1212 정규 형식으로 변환합니다.Inverse text normalization (ITN) reverses this process, converting the words "five five five one two one two" to the inverted canonical form 555-1212. 인식 결과의 ITN 형식에는 대문자 표시 또는 문장 부호가 포함되지 않습니다.The ITN form of a recognition result does not include capitalization or punctuation.

ITN 형식은 인식된 텍스트에서 작동하는 응용 프로그램에 가장 적합합니다.The ITN form is most appropriate for applications that act on the recognized text. 예를 들어 사용자가 검색어를 말한 다음, 웹 쿼리에서 이러한 용어를 사용할 수 있도록 허용하는 응용 프로그램은 ITN 형식을 사용합니다.For example, an application that allows a user to speak search terms and then uses these terms in a web query would use the ITN form. 불경한 언어는 ITN 형식으로 마스킹되지 않습니다.Profanity is never masked in the ITN form. 불경한 언어를 마스킹하려면 마스킹된 ITN 형식을 사용합니다.To mask profanity, use the Masked ITN form.

마스킹된 ITN 형식Masked ITN form

불경한 언어는 당연히 음성 언어의 일부이기 때문에 이러한 단어와 구가 발화되면 Microsoft Speech Service에서 이를 인식합니다.Because profanity is naturally a part of spoken language, the Microsoft Speech Service recognizes such words and phrases when they are spoken. 그러나 불경한 언어는 모든 응용 프로그램, 특히 제한된 비성인 사용자 대상 그룹이 있는 응용 프로그램에 적합하지 않을 수 있습니다.Profanity might not, however, be appropriate for all applications, especially those applications with a restricted, non-adult user audience.

마스킹된 ITN 형식은 불경한 언어 마스킹을 역 텍스트 정규화 형식에 적용합니다.The masked ITN form applies profanity masking to the inverse text normalization form. 불경한 언어를 마스킹하려면 불경한 언어 매개 변수 값을 masked로 설정합니다.To mask profanity, set the value of the profanity parameter value to masked. 불경한 언어를 마스킹하는 경우 언어의 불경한 어휘집에 속한 것으로 인식되는 단어는 별표로 바뀝니다.When profanity is masked, words that are recognized as part of the language's profanity lexicon are replaced with asterisks. 예를 들어 5 ****개의 연필을 구입하라고 미리 알려주세요와 같습니다.For example: remind me to buy 5 **** pencils. 인식 결과의 마스킹된 ITN 형식에는 대문자 표시 또는 문장 부호가 포함되지 않습니다.The masked ITN form of a recognition result does not include capitalization or punctuation.

참고

불경한 언어 쿼리 매개 변수 값이 raw로 설정되면 마스킹된 ITN 형식이 ITN 형식과 같습니다.If the profanity query parameter value is set to raw, the masked ITN form is the same as the ITN form. 이에 따라 불경한 언어가 마스킹되지 않습니다.Profanity is not masked.

표시 형식Display form

문장 부호 및 대문자 표시는 텍스트를 더 쉽게 이해할 수 있도록 강조할 위치, 일시 중지할 위치 등을 알려줍니다.Punctuation and capitalization signal where to put emphasis, where to pause, and so on, which makes text easier to understand. 표시 형식은 문장 부호 및 대문자 표시를 인식 결과에 추가하여 음성 텍스트를 표시하는 응용 프로그램에 가장 적합한 형식입니다.The display form adds punctuation and capitalization to recognition results, making it the most appropriate form for applications that display the spoken text.

표시 형식은 마스킹된 ITN 형식을 확장하므로 불경한 언어 매개 변수 값을 masked 또는 raw로 설정할 수 있습니다.Because the display form extends the masked ITN form, you can set the profanity parameter value to masked or raw. 값을 raw로 설정하면 사용자가 말하는 모든 불경한 언어가 인식 결과에 포함됩니다.If the value is set to raw, the recognition results include any profanity spoken by the user. 값을 masked로 설정하면 언어의 불경한 어휘집에 속한 것으로 인식되는 단어가 별표로 바뀝니다.If the value is set to masked, words recognized as part of the language's profanity lexicon are replaced with asterisks.

샘플 응답Sample responses

모든 페이로드는 JSON 구조입니다.All payloads are JSON structures.

simple 구 결과의 페이로드 형식:The payload format of the simple phrase result:

{
  "RecognitionStatus": "Success",
  "DisplayText": "Remind me to buy 5 pencils.",
  "Offset": "1236645672289",
  "Duration": "1236645672289"
}

detailed 구 결과의 페이로드 형식:The payload format of the detailed phrase result:

{
  "RecognitionStatus": "Success",
  "Offset": "1236645672289",
  "Duration": "1236645672289",
  "NBest": [
      {
        "Confidence" : "0.87",
        "Lexical" : "remind me to buy five pencils",
        "ITN" : "remind me to buy 5 pencils",
        "MaskedITN" : "remind me to buy 5 pencils",
        "Display" : "Remind me to buy 5 pencils.",
      },
      {
        "Confidence" : "0.54",
        "Lexical" : "rewind me to buy five pencils",
        "ITN" : "rewind me to buy 5 pencils",
        "MaskedITN" : "rewind me to buy 5 pencils",
        "Display" : "Rewind me to buy 5 pencils.",
      }
  ]
}

음성 인식의 불경한 언어 처리Profanity-handling in speech recognition

Microsoft Speech Service는 많은 사람들이 "불경한 언어"로 분류하는 단어와 구를 포함하여 모든 형태의 사람 음성을 인식합니다.The Microsoft Speech Service recognizes all forms of human speech, including words and phrases that many people would classify as "profanity." 서비스에서 profanity 쿼리 매개 변수를 사용하여 불경한 언어를 처리하는 방법을 제어할 수 있습니다.You can control how the service handles profanity by using the profanity query parameter. 기본적으로 서비스는 speech.phrase 결과에 불경한 언어를 표시하지 않으며, 불경한 언어가 포함된 speech.hypothesis 메시지도 반환하지 않습니다.By default, the service masks profanity in speech.phrase results and does not return speech.hypothesis messages that contain profanity.

profanityProfanity value 설명Description
masked 불경한 언어를 별표로 마스킹합니다.Masks profanity with asterisks. 이 동작은 기본값입니다.This behavior is the default.
removed 모든 결과에서 불경한 언어를 제거합니다.Removes profanity from all results.
raw 모든 결과에서 불경한 언어를 인식하고 반환합니다.Recognizes and returns profanity in all results.

Masked profanity 값Profanity value Masked

불경한 언어를 마스킹하려면 profanity 쿼리 매개 변수를 masked 값으로 설정합니다.To mask profanity, set the profanity query parameter to the value masked. profanity 쿼리 매개 변수에 이 값이 있거나 요청에 대해 지정되지 않으면 서비스에서 불경한 언어를 마스킹합니다.When the profanity query parameter has this value or is not specified for a request, the service masks profanity. 서비스에서 인식 결과의 불경한 언어를 별표로 바꾸면서 마스킹을 수행합니다.The service performs masking by replacing profanity in the recognition results with asterisks. 불경한 언어 마스킹 처리를 지정하면 서비스에서 불경한 언어가 포함된 speech.hypothesis 메시지를 반환하지 않습니다.When you specify profanity-masking handling, the service does not return speech.hypothesis messages that contain profanity.

Removed profanity 값Profanity value Removed

profanity 쿼리 매개 변수의 값이 removed이면 서비스에서 speech.phrasespeech.hypothesi 메시지 모두로부터 불경한 언어를 제거합니다.When the profanity query parameter has the value removed, the service removes profanity from both speech.phrase and speech.hypothesis messages. 결과는 불경한 언어를 말하지 않은 경우와 같습니다.The results are the same as if the profanity words were not spoken.

불경한 언어 전용 발화Profanity-only utterances

응용 프로그램에서 불경한 언어를 제거하도록 서비스를 구성한 경우 사용자는 불경한 언어만 말할 수 있습니다.A user might speak only profanity when an application has configured the service to remove profanity. 이 시나리오의 경우 인식 모드가 받아쓰기 또는 대화이면 서비스에서 speech.result를 반환하지 않습니다.For this scenario, if the recognition mode is dictation or conversation, the service does not return a speech.result. 인식 모드가 대화형이면 서비스에서 상태 코드가 NoMatchspeech.result를 반환합니다.If the recognition mode is interactive, the service returns a speech.result with the status code NoMatch.

Raw profanity 값Profanity value Raw

profanity 쿼리 매개 변수의 값이 raw이면 서비스에서 speech.phrase 또는 speech.hypothesis의 불경한 언어를 제거하거나 마스킹하지 않습니다.When the profanity query parameter has the value raw, the service does not remove or mask profanity in either the speech.phrase or speech.hypothesis messages.