임베디드 음성이란?
Embedded Speech는 클라우드 연결이 간헐적이거나 사용할 수 없는 디바이스 내 음성 텍스트 변환 및 텍스트 음성 변환 시나리오를 위해 설계되었습니다. 예를 들어 산업용 장비, 음성 지원 에어컨 장치 또는 범위를 벗어나 주행할 수 있는 자동차에서 포함된 음성을 사용할 수 있습니다. 하이브리드 클라우드 및 오프라인 솔루션을 개발할 수도 있습니다. 디바이스가 은행 또는 정부 기관과 같은 안전한 환경에 있어야 하는 시나리오의 경우 먼저 연결이 끊긴 컨테이너를 고려해야 합니다.
Important
Microsoft는 포함된 음성에 대한 액세스를 제한합니다. Azure AI 음성 포함된 음성 제한된 액세스 검토를 통해 액세스를 신청할 수 있습니다. 자세한 내용은 포함된 음성에 대한 제한된 액세스를 참조하세요.
플랫폼 요구 사항
포함된 음성은 C#, C++및 Java용 Speech SDK(버전 1.24.1 이상)에 포함됩니다. 프로그래밍 언어 및 대상 플랫폼별 세부 정보에 대한 일반적인 Speech SDK 설치 요구 사항을 참조하세요.
대상 환경 선택
Arm64(arm64-v8a
) 또는 Arm32(armeabi-v7a
) 하드웨어에서 Android 7.0(API 수준 24) 이상이 필요합니다.
신경망 음성이 있는 포함된 TTS는 Arm64에서만 지원됩니다.
제한 사항
포함된 음성은 C#, C++및 Java SDK에서만 사용할 수 있습니다. 다른 Speech SDK, Speech CLI 및 REST API는 포함된 음성을 지원하지 않습니다.
포함된 음성 인식은 모노 16비트, 8kHz 또는 16kHz PCM으로 인코딩된 WAV 오디오 형식만 지원합니다.
포함된 인공신경망 음성은 RAM 요구 사항이 100MB인 24kHz RIFF/RAW를 지원합니다.
포함된 Speech SDK 패키지
C# 포함된 애플리케이션의 경우 다음 C#용 Speech SDK 패키지를 설치합니다.
패키지 | 설명 |
---|---|
Microsoft.CognitiveServices.Speech | Speech SDK 사용에 필요 |
Microsoft.CognitiveServices.Speech.Extension.Embedded.SR | 포함된 음성 인식에 필요 |
Microsoft.CognitiveServices.Speech.Extension.Embedded.TTS | 포함된 음성 합성에 필요 |
Microsoft.CognitiveServices.Speech.Extension.ONNX.Runtime | 포함된 음성 인식 및 합성에 필요 |
Microsoft.CognitiveServices.Speech.Extension.Telemetry | 포함된 음성 인식 및 합성에 필요 |
C++ 포함된 애플리케이션의 경우 다음 C++용 Speech SDK 패키지를 설치합니다.
패키지 | 설명 |
---|---|
Microsoft.CognitiveServices.Speech | Speech SDK 사용에 필요 |
Microsoft.CognitiveServices.Speech.Extension.Embedded.SR | 포함된 음성 인식에 필요 |
Microsoft.CognitiveServices.Speech.Extension.Embedded.TTS | 포함된 음성 합성에 필요 |
Microsoft.CognitiveServices.Speech.Extension.ONNX.Runtime | 포함된 음성 인식 및 합성에 필요 |
Microsoft.CognitiveServices.Speech.Extension.Telemetry | 포함된 음성 인식 및 합성에 필요 |
대상 환경 선택
Java 포함 애플리케이션의 경우 client-sdk-embedded(.jar
)를 종속 항목으로 추가합니다. 이 패키지는 클라우드, 포함 및 하이브리드 음성을 지원합니다.
Important
클라우드 Speech Services만 지원하므로 동일한 프로젝트에 client-sdk를 추가하지 마세요.
Apache Maven을 사용하여 Java용 Speech SDK를 설치하려면 다음 단계를 따릅니다.
- Apache Maven을 설치합니다.
- 새 프로젝트를 원하는 명령 프롬프트를 열고 새
pom.xml
파일을 만듭니다. - 다음 XML 콘텐츠를
pom.xml
에 복사합니다.<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.microsoft.cognitiveservices.speech.samples</groupId> <artifactId>quickstart-eclipse</artifactId> <version>1.0.0-SNAPSHOT</version> <build> <sourceDirectory>src</sourceDirectory> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.7.0</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>com.microsoft.cognitiveservices.speech</groupId> <artifactId>client-sdk-embedded</artifactId> <version>1.40.0</version> </dependency> </dependencies> </project>
- 다음 Maven 명령을 실행하여 Speech SDK 및 종속성을 설치합니다.
mvn clean dependency:copy-dependencies
모델 및 음성
포함된 음성의 경우 음성 텍스트 변환을 위한 음성 인식 모델과 텍스트 음성 변환을 위한 음성을 다운로드해야 합니다. 제한된 액세스 검토 프로세스를 성공적으로 완료하면 지침이 제공됩니다.
사용 가능한 음성 텍스트 변환 모델: da-DK, de-DE, en-AU, en-CA, en-GB, en-IE, en-IN, en-NZ, en-US, es-ES, es-MX, fr-CA, fr-FR, it-IT, ja-JP, ko-KR, pt-BR, pt-PT, zh-CN, zh-HK 및 zh-TW.
여기에서 모든 텍스트 음성 변환 로캘(fa-IR, 페르시아어(이란) 제외)은 선택한 여성 음성 1가지 및/또는 선택한 남성 음성 1가지를 통해 바로 사용할 수 있습니다. 추가 언어 및 음성에 대한 수요를 측정하는 데 도움이 되는 내용을 사용자가 입력하는 것이 좋습니다.
포함된 음성 구성
대부분의 Speech SDK 샘플에 표시된 것처럼 클라우드 연결 애플리케이션의 경우 Speech 리소스 키 및 지역과 함께 SpeechConfig
개체를 사용합니다. 포함된 음성의 경우 Speech 리소스를 사용하지 않습니다. 클라우드 리소스 대신, 로컬 디바이스에 다운로드한 모델 및 음성을 사용합니다.
EmbeddedSpeechConfig
개체를 사용하여 모델 또는 음성의 위치를 설정합니다. 애플리케이션이 음성 텍스트 변환 및 텍스트 음성 변환 모두에 사용되는 경우 동일한 EmbeddedSpeechConfig
개체를 사용하여 모델 및 음성의 위치를 설정할 수 있습니다.
// Provide the location of the models and voices.
List<string> paths = new List<string>();
paths.Add("C:\\dev\\embedded-speech\\stt-models");
paths.Add("C:\\dev\\embedded-speech\\tts-voices");
var embeddedSpeechConfig = EmbeddedSpeechConfig.FromPaths(paths.ToArray());
// For speech to text
embeddedSpeechConfig.SetSpeechRecognitionModel(
"Microsoft Speech Recognizer en-US FP Model V8",
Environment.GetEnvironmentVariable("EMBEDDED_SPEECH_MODEL_LICENSE"));
// For text to speech
embeddedSpeechConfig.SetSpeechSynthesisVoice(
"Microsoft Server Speech Text to Speech Voice (en-US, JennyNeural)",
Environment.GetEnvironmentVariable("EMBEDDED_SPEECH_MODEL_LICENSE"));
embeddedSpeechConfig.SetSpeechSynthesisOutputFormat(SpeechSynthesisOutputFormat.Riff24Khz16BitMonoPcm);
팁
GetEnvironmentVariable
함수는 음성 텍스트 변환 빠른 시작 및 텍스트 음성 변환 빠른 시작에서 정의됩니다.
// Provide the location of the models and voices.
vector<string> paths;
paths.push_back("C:\\dev\\embedded-speech\\stt-models");
paths.push_back("C:\\dev\\embedded-speech\\tts-voices");
auto embeddedSpeechConfig = EmbeddedSpeechConfig::FromPaths(paths);
// For speech to text
embeddedSpeechConfig->SetSpeechRecognitionModel((
"Microsoft Speech Recognizer en-US FP Model V8",
GetEnvironmentVariable("EMBEDDED_SPEECH_MODEL_LICENSE"));
// For text to speech
embeddedSpeechConfig->SetSpeechSynthesisVoice(
"Microsoft Server Speech Text to Speech Voice (en-US, JennyNeural)",
GetEnvironmentVariable("EMBEDDED_SPEECH_MODEL_LICENSE"));
embeddedSpeechConfig->SetSpeechSynthesisOutputFormat(SpeechSynthesisOutputFormat::Riff24Khz16BitMonoPcm);
// Provide the location of the models and voices.
List<String> paths = new ArrayList<>();
paths.add("C:\\dev\\embedded-speech\\stt-models");
paths.add("C:\\dev\\embedded-speech\\tts-voices");
var embeddedSpeechConfig = EmbeddedSpeechConfig.fromPaths(paths);
// For speech to text
embeddedSpeechConfig.setSpeechRecognitionModel(
"Microsoft Speech Recognizer en-US FP Model V8",
System.getenv("EMBEDDED_SPEECH_MODEL_LICENSE"));
// For text to speech
embeddedSpeechConfig.setSpeechSynthesisVoice(
"Microsoft Server Speech Text to Speech Voice (en-US, JennyNeural)",
System.getenv("EMBEDDED_SPEECH_MODEL_LICENSE"));
embeddedSpeechConfig.setSpeechSynthesisOutputFormat(SpeechSynthesisOutputFormat.Riff24Khz16BitMonoPcm);
포함된 음성 코드 샘플
GitHub에서 포함된 음성 샘플을 사용할 준비가 된 것을 확인할 수 있습니다. 처음부터 프로젝트에 대한 언급은 샘플 특정 설명서를 참조하세요.
GitHub에서 포함된 음성 샘플을 사용할 준비가 된 것을 확인할 수 있습니다. 처음부터 프로젝트에 대한 언급은 샘플 특정 설명서를 참조하세요.
하이브리드 음성
HybridSpeechConfig
개체를 사용하는 하이브리드 음성은 기본적으로 클라우드 음성 서비스를 사용하고, 클라우드 연결이 제한되거나 느린 경우 대체 기능으로서 포함된 음성을 사용합니다.
음성 텍스트 변환(인식 모델)에 대한 하이브리드 음성 구성에서는 반복된 시도 후 클라우드 서비스에 대한 연결이 실패할 때 포함된 음성이 사용됩니다. 나중에 연결이 다시 시작되면 인식 기능에서 클라우드 서비스를 계속 다시 사용할 수 있습니다.
텍스트 음성 변환(음성)에 대한 하이브리드 음성 구성에서는 포함된 음성 및 클라우드 서비스 합성이 병렬로 실행되고, 응답 속도에 따라 최종 결과가 선택됩니다. 새 합성 요청이 있을 때마다 최상의 결과가 다시 평가됩니다.
클라우드 음성
클라우드 음성의 경우 음성 텍스트 변환 빠른 시작 및 텍스트 음성 변환 빠른 시작에 표시된 대로 SpeechConfig
개체를 사용합니다. 포함된 음성에 대한 빠른 시작을 실행하려면 SpeechConfig
를 EmbeddedSpeechConfig
또는 HybridSpeechConfig
로 바꿀 수 있습니다. 클라우드, 포함 또는 하이브리드 중 어떤 구성을 사용하든 대부분의 다른 음성 인식 및 합성 코드는 동일합니다.
포함된 음성 기능
포함된 음성의 경우 모델 구조의 차이로 인해 특정 SSML 태그가 현재 지원되지 않을 수 있습니다. 지원되지 않는 SSML 태그에 대한 자세한 내용은 다음 표를 참조하세요.
수준 1 | 수준 2 | 하위 값 | 포함된 NTTS에서 지원되는지 여부 |
---|---|---|---|
오디오 | src | 아니요 | |
bookmark | 예 | ||
break | strength | 예 | |
시간 | 예 | ||
silence | type | Leading, Tailing, Comma-exact 등 | 아니요 |
value | 아니요 | ||
emphasis | level | 아니요 | |
lang | 아니요 | ||
lexicon | uri | 예 | |
수치 연산 | 아니요 | ||
msttsaudioduration | value | 아니요 | |
msttsbackgroundaudio | src | 아니요 | |
volume | 아니요 | ||
fadein | 아니요 | ||
fadeout | 아니요 | ||
msttsexpress-as | style | 아니요 | |
styledegree | 아니요 | ||
역할(role) | 아니요 | ||
msttssilence | 아니요 | ||
msttsviseme | type | redlips_front, FacialExpression | 아니요 |
p | 예 | ||
음소 | alphabet | ipa, sapi, ups 등 | 예 |
ph | 예 | ||
prosody | contour | Sentences level support, word level only en-US 및 zh-CN | 예 |
pitch | 예 | ||
range | 예 | ||
rate | 예 | ||
volume | 예 | ||
s | 예 | ||
say-as | interpret-as | characters, spell-out, number_digit, date 등 | 예 |
format | 예 | ||
detail | 예 | ||
하위 | 별칭 | 예 | |
speak | 예 | ||
voice | 아니요 |