Azure TTS API를위한 간단한 텍스트 음성 클라이언트. ?
버전 6.0.0에서 시작하여 aspeak 기본적으로 Azure TTS의 RESTFUL API를 사용합니다. WebSocket API를 사용하려면 프로필의 auth 섹션에서 aspeak 또는 Set mode = "websocket" 호출 할 때 --mode websocket 지정할 수 있습니다.
버전 4.0.0부터 aspeak Rust로 다시 작성됩니다. 이전 파이썬 버전은 python 브랜치에서 사용할 수 있습니다.
Azure 계정에 가입 한 다음 필요에 따라 결제 계획을 선택할 수 있습니다 (또는 무료 계층). 무료 계층에는 한 달에 50 만 문자의 할당량이 포함되어 있습니다.
Aspeak에 대한 인증을 설정하는 방법을 배우려면 인증 섹션을 참조하십시오.
여기에서 최신 릴리스를 다운로드하십시오.
다운로드 후 아카이브를 추출하면 이진 실행 파일이 나타납니다.
PATH 환경 변수에있는 디렉토리에 넣어 어디서나 실행할 수 있습니다.
v4.1.0에서 AUR에서 aspeak-bin 설치할 수 있습니다.
PYPI에서 설치하면 aspeak 의 Python 바인딩이 설치됩니다. 파이썬 바인딩 사용에 대한 자세한 내용은 라이브러리 사용#Python을 확인하십시오.
pip install -U aspeak==6.0.0이제 사전 제작 된 휠은 X86_64 아키텍처에서만 사용할 수 있습니다. 몇 가지 기술적 인 문제로 인해 아직 소스 배포를 PYPI에 업로드하지 않았습니다. 따라서 소스에서 휠을 만들려면 소스에서 설치 지침을 따라야합니다.
많은 Llinux 호환성 문제로 인해 Linux 용 휠은 PYPI에서 사용할 수 없습니다. (하지만 여전히 소스에서 구축 할 수 있습니다.)
소스에서 aspeak 설치하는 가장 쉬운 방법은화물을 사용하는 것입니다.
cargo install aspeak -F binary 또는 AUR에서 aspeak 설치할 수도 있습니다.
파이썬 휠을 만들려면 먼저 maturin 설치해야합니다.
pip install maturin 저장소와 cd 디렉토리로 복제 한 후 다음을 작동시켜 휠을 만들 수 있습니다.
maturin build --release --strip -F python --bindings pyo3 --interpreter python --manifest-path Cargo.toml --out dist-pyo3
maturin build --release --strip --bindings bin -F binary --interpreter python --manifest-path Cargo.toml --out dist-bin
bash merge-wheel.bash 모든 것이 잘 진행되면 dist Directory에 휠 파일이 나타납니다.
도움말 메시지를 볼 수 있도록 aspeak help 실행하십시오.
aspeak help <subcommand> 실행하여 부하 명령의 도움말 메시지를보십시오.
인증 옵션은 부드러운 명령 앞에 배치해야합니다.
예를 들어, 구독 키와 지역에서 지정된 공식 엔드 포인트를 활용하려면 다음 명령을 실행하십시오.
$ aspeak --region < YOUR_REGION > --key < YOUR_SUBSCRIPTION_KEY > text " Hello World " 사용자 정의 엔드 포인트를 사용하는 경우 --region 대신 --endpoint 옵션을 사용할 수 있습니다.
반복을 피하려면 인증 세부 정보를 Aspeak 프로필에 저장할 수 있습니다. 자세한 내용은 다음 섹션을 참조하십시오.
v5.2.0에서 다음 환경 변수를 통해 인증 비밀을 설정할 수도 있습니다.
ASPEAK_AUTH_KEYASPEAK_AUTH_TOKENv4.3.0에서 Aspeak가 프록시 서버를 사용하여 엔드 포인트에 연결할 수 있습니다. 현재 HTTP 및 Socks5 프록시 만 지원됩니다 (아직 HTTPS 지원은 없음). 예를 들어:
$ aspeak --proxy http://your_proxy_server:port text " Hello World "
$ aspeak --proxy socks5://your_proxy_server:port text " Hello World " Aspeak는 또한 HTTP_PROXY (또는 http_proxy ) 환경 변수를 존중합니다.
Aspeak V4는 프로파일의 개념을 소개합니다. 프로필은 명령 줄 옵션의 기본값을 지정할 수있는 구성 파일입니다.
다음 명령을 실행하여 기본 프로필을 만듭니다.
$ aspeak config init프로필을 편집하려면 실행하십시오.
$ aspeak config edit위 명령을 실행하는 데 문제가있는 경우 프로필을 수동으로 편집 할 수 있습니다.
주먹은 다음을 실행하여 프로파일의 경로를 얻습니다.
$ aspeak config where그런 다음 좋아하는 텍스트 편집기로 파일을 편집하십시오.
프로필은 TOML 파일입니다. 기본 프로필은 다음과 같습니다.
사용 가능한 옵션에 대한 자세한 내용은 구성 파일의 주석을 확인하십시오.
# Profile for aspeak
# GitHub: https://github.com/kxxt/aspeak
# Output verbosity
# 0 - Default
# 1 - Verbose
# The following output verbosity levels are only supported on debug build
# 2 - Debug
# >=3 - Trace
verbosity = 0
#
# Authentication configuration
#
[ auth ]
# Endpoint for TTS
# endpoint = "wss://eastus.tts.speech.microsoft.com/cognitiveservices/websocket/v1"
# Alternatively, you can specify the region if you are using official endpoints
# region = "eastus"
# Synthesizer Mode, "rest" or "websocket"
# mode = "rest"
# Azure Subscription Key
# key = "YOUR_KEY"
# Authentication Token
# token = "Your Authentication Token"
# Extra http headers (for experts)
# headers = [["X-My-Header", "My-Value"], ["X-My-Header2", "My-Value2"]]
# Proxy
# proxy = "socks5://127.0.0.1:7890"
# Voice list API url
# voice_list_api = "Custom voice list API url"
#
# Configuration for text subcommand
#
[ text ]
# Voice to use. Note that it takes precedence over the locale
# voice = "en-US-JennyNeural"
# Locale to use
locale = " en-US "
# Rate
# rate = 0
# Pitch
# pitch = 0
# Role
# role = "Boy"
# Style, "general" by default
# style = "general"
# Style degree, a floating-point number between 0.1 and 2.0
# style_degree = 1.0
#
# Output Configuration
#
[ output ]
# Container Format, Only wav/mp3/ogg/webm is supported.
container = " wav "
# Audio Quality. Run `aspeak list-qualities` to see available qualities.
#
# If you choose a container format that does not support the quality level you specified here,
# we will automatically select the closest level for you.
quality = 0
# Audio Format(for experts). Run `aspeak list-formats` to see available formats.
# Note that it takes precedence over container and quality!
# format = "audio-16khz-128kbitrate-mono-mp3" 기본 프로필 이외의 프로필을 사용하려면 --profile 인수를 사용할 수 있습니다.
aspeak --profile < PATH_TO_A_PROFILE > text " Hello " 프로필을 일시적으로 비활성화하려면 --no-profile 인수를 사용할 수 있습니다.
aspeak --no-profile --region eastus --key < YOUR_KEY > text " Hello "rate : 음성의 말하기 속도.0.5 )을 사용하면 값에 100%를 곱하고 50.00% 가됩니다.x-slow , slow , medium , fast , x-fast , default 다음 값도 사용할 수 있습니다.+10% .f postfix), 1.2f 사용할 수도 있습니다.1f 값은 속도의 변화가 없습니다. 0.5f 의 값은 속도를 절반으로 만듭니다. 3f 의 값은 비율의 3 배가됩니다.pitch : 음성의 피치.-0.5 )을 사용하면 값에 100%를 곱하고 -50.00% 가됩니다.x-low , low , medium , high , x-high , default 다음 값도 사용할 수 있습니다.+10% .-2st 또는 +80Hz )을 사용할 수도 있습니다.600Hz참고 : 불합리한 높은/낮은 값은 Azure Cognitive Services에 의해 합리적인 값으로 구성됩니다.
다음 예제는 프로필에서 이미 인증을 설정했다고 가정합니다.
$ aspeak text " Hello, world " $ aspeak ssml << EOF
<speak version='1.0' xmlns='http://www.w3.org/2001/10/synthesis' xml:lang='en-US'><voice name='en-US-JennyNeural'>Hello, world!</voice></speak>
EOF $ aspeak list-voices$ aspeak list-voices -l zh-CN$ aspeak list-voices -v en-US-SaraNeural Microsoft Server Speech Text to Speech Voice (en-US, SaraNeural)
Display name: Sara
Local name: Sara @ en-US
Locale: English (United States)
Gender: Female
ID: en-US-SaraNeural
Voice type: Neural
Status: GA
Sample rate: 48000Hz
Words per minute: 157
Styles: ["angry", "cheerful", "excited", "friendly", "hopeful", "sad", "shouting", "terrified", "unfriendly", "whispering"]
$ aspeak text " Hello, world " -o output.wav mp3 / ogg / webm을 선호하는 경우 -c mp3 / -c ogg / -c webm 옵션을 사용할 수 있습니다.
$ aspeak text " Hello, world " -o output.mp3 -c mp3
$ aspeak text " Hello, world " -o output.ogg -c ogg
$ aspeak text " Hello, world " -o output.webm -c webm$ aspeak list-qualities Qualities for MP3:
3: audio-48khz-192kbitrate-mono-mp3
2: audio-48khz-96kbitrate-mono-mp3
-3: audio-16khz-64kbitrate-mono-mp3
1: audio-24khz-160kbitrate-mono-mp3
-2: audio-16khz-128kbitrate-mono-mp3
-4: audio-16khz-32kbitrate-mono-mp3
-1: audio-24khz-48kbitrate-mono-mp3
0: audio-24khz-96kbitrate-mono-mp3
Qualities for WAV:
-2: riff-8khz-16bit-mono-pcm
1: riff-24khz-16bit-mono-pcm
0: riff-24khz-16bit-mono-pcm
-1: riff-16khz-16bit-mono-pcm
Qualities for OGG:
0: ogg-24khz-16bit-mono-opus
-1: ogg-16khz-16bit-mono-opus
1: ogg-48khz-16bit-mono-opus
Qualities for WEBM:
0: webm-24khz-16bit-mono-opus
-1: webm-16khz-16bit-mono-opus
1: webm-24khz-16bit-24kbps-mono-opus
$ aspeak list-formats amr-wb-16000hz
audio-16khz-128kbitrate-mono-mp3
audio-16khz-16bit-32kbps-mono-opus
audio-16khz-32kbitrate-mono-mp3
audio-16khz-64kbitrate-mono-mp3
audio-24khz-160kbitrate-mono-mp3
audio-24khz-16bit-24kbps-mono-opus
audio-24khz-16bit-48kbps-mono-opus
audio-24khz-48kbitrate-mono-mp3
audio-24khz-96kbitrate-mono-mp3
audio-48khz-192kbitrate-mono-mp3
audio-48khz-96kbitrate-mono-mp3
ogg-16khz-16bit-mono-opus
ogg-24khz-16bit-mono-opus
ogg-48khz-16bit-mono-opus
raw-16khz-16bit-mono-pcm
raw-16khz-16bit-mono-truesilk
raw-22050hz-16bit-mono-pcm
raw-24khz-16bit-mono-pcm
raw-24khz-16bit-mono-truesilk
raw-44100hz-16bit-mono-pcm
raw-48khz-16bit-mono-pcm
raw-8khz-16bit-mono-pcm
raw-8khz-8bit-mono-alaw
raw-8khz-8bit-mono-mulaw
riff-16khz-16bit-mono-pcm
riff-22050hz-16bit-mono-pcm
riff-24khz-16bit-mono-pcm
riff-44100hz-16bit-mono-pcm
riff-48khz-16bit-mono-pcm
riff-8khz-16bit-mono-pcm
riff-8khz-8bit-mono-alaw
riff-8khz-8bit-mono-mulaw
webm-16khz-16bit-mono-opus
webm-24khz-16bit-24kbps-mono-opus
webm-24khz-16bit-mono-opus
# Less than default quality.
$ aspeak text " Hello, world " -o output.mp3 -c mp3 -q=-1
# Best quality for mp3
$ aspeak text " Hello, world " -o output.mp3 -c mp3 -q=3$ cat input.txt | aspeak text또는
$ aspeak text -f input.txt사용자 정의 인코딩 :
$ aspeak text -f input.txt -e gbk$ aspeak text아마 당신은 선호합니다 :
$ aspeak text -l zh-CN << EOF
我能吞下玻璃而不伤身体。
EOF $ aspeak text "你好,世界! " -l zh-CN$ aspeak text "你好,世界! " -v zh-CN-YunjianNeural$ aspeak text "你好,世界! " -v zh-CN-XiaoxiaoNeural -p 1.5 -r 0.5 -S sad
$ aspeak text "你好,世界! " -v zh-CN-XiaoxiaoNeural -p=-10% -r=+5% -S cheerful
$ aspeak text "你好,世界! " -v zh-CN-XiaoxiaoNeural -p=+40Hz -r=1.2f -S fearful
$ aspeak text "你好,世界! " -v zh-CN-XiaoxiaoNeural -p=high -r=x-slow -S calm
$ aspeak text "你好,世界! " -v zh-CN-XiaoxiaoNeural -p=+1st -r=-7% -S lyrical참고 : 스피커에 출력 할 때 일부 오디오 형식은 지원되지 않습니다.
$ aspeak text " Hello World " -F riff-48khz-16bit-mono-pcm -o high-quality.wav 새로운 버전의 aspeak 는 Rust로 작성되었으며 Python 바인딩은 PYO3에 의해 제공됩니다.
간단한 예는 다음과 같습니다.
from aspeak import SpeechService
service = SpeechService ( region = "eastus" , key = "YOUR_AZURE_SUBSCRIPTION_KEY" )
service . speak_text ( "Hello, world" ) 먼저 SpeechService 인스턴스를 만들어야합니다.
SpeechService 인스턴스를 만들 때 다음 매개 변수를 지정할 수 있습니다.
audio_format (위치 인수) : 출력 오디오의 오디오 형식. 기본값은 AudioFormat.Riff24KHz16BitMonoPcm 입니다.AudioFormat("mp3", 2) 제공하여 오디오 형식을 얻을 수 있습니다.endpoint : 음성 서비스의 끝점.region : 또는 보링 엔드 포인트 URL을 입력하는 대신 음성 서비스 영역을 지정할 수 있습니다.key : 음성 서비스의 구독 키.token : 음성 서비스의 인증 토큰. 토큰을 제공하면 구독 키가 무시됩니다.headers : 음성 서비스를위한 추가 HTTP 헤더.mode : 사용할 신시사이저를 선택하십시오. rest 또는 websocket .SpeechService 인스턴스가 생성 될 때 신디사이저가 엔드 포인트에 연결됩니다. 그런 다음 speak_text() 에게 전화하여 텍스트 또는 speak_ssml() 말하기 위해 ssml을 말할 수 있습니다. 또는 synthesize_text() 또는 synthesize_ssml() 호출하여 오디오 데이터를 얻을 수 있습니다.
synthesize_text() 및 synthesize_ssml() 의 경우 output 제공하면 오디오 데이터가 해당 파일에 기록되고 함수는 None 반환하지 않습니다. 그렇지 않으면 기능이 오디오 데이터를 반환합니다.
다음은 speak_text() 및 synthesize_text() 의 일반적인 옵션입니다.
locale : 음성의 로케일. 기본값은 en-US 입니다.voice : 음성 이름. 기본값은 en-US-JennyNeural 입니다.rate : 음성의 말하기 속도. 이 섹션에서 문서화 된 요구 사항에 맞는 문자열이어야합니다.pitch : 음성의 피치. 이 섹션에서 문서화 된 요구 사항에 맞는 문자열이어야합니다.style : 음성 스타일.aspeak -L -v <VOICE_ID> 실행하여 특정 음성에 사용 가능한 스타일 목록을 얻을 수 있습니다.general 입니다.style_degree : 스타일의 정도.role : 음성의 역할.role 말하기 역할극을 지정합니다. 음성은 다른 연령과 성별로 작용하지만 음성 이름은 변경되지 않습니다.zh-CN-XiaomoNeural , zh-CN-XiaoxuanNeural , zh-CN-YunxiNeural 및 zh-CN-YunyeNeural . Cargo.toml 에 aspeak 추가하십시오 :
$ cargo add aspeak 그런 다음 aspeak Crate의 문서를 따르십시오.
빠른 참조를위한 4 가지 예가 있습니다.