ไคลเอนต์ข้อความเป็นคำพูดง่ายๆสำหรับ Azure TTS API -
เริ่มต้นจากเวอร์ชัน 6.0.0 aspeak โดยค่าเริ่มต้นใช้ API RESTFUL ของ Azure TTS หากคุณต้องการใช้ WebSocket API คุณสามารถระบุ --mode websocket เมื่อเรียกใช้ aspeak หรือ Set mode = "websocket" ในส่วน auth ของโปรไฟล์ของคุณ
เริ่มต้นจากเวอร์ชัน 4.0.0 aspeak ถูกเขียนใหม่ใน Rust รุ่น Python เก่ามีให้บริการที่สาขา python
คุณสามารถลงทะเบียนสำหรับบัญชี Azure จากนั้นเลือกแผนการชำระเงินตามต้องการ (หรือติดกับ Tier ฟรี) ระดับฟรีมีโควต้า 0.5 ล้านอักขระต่อเดือนฟรี
โปรดดูส่วนการรับรองความถูกต้องเพื่อเรียนรู้วิธีตั้งค่าการรับรองความถูกต้องสำหรับ Aspeak
ดาวน์โหลดรุ่นล่าสุดจากที่นี่
หลังจากดาวน์โหลดแล้วให้แยกไฟล์เก็บถาวรแล้วคุณจะได้รับไฟล์ปฏิบัติการไบนารี
คุณสามารถวางไว้ในไดเรกทอรีที่อยู่ในตัวแปรสภาพแวดล้อม PATH ของคุณเพื่อให้คุณสามารถเรียกใช้ได้จากทุกที่
จาก v4.1.0 คุณสามารถติดตั้ง aspeak-bin จาก AUR
การติดตั้งจาก PYPI จะติดตั้งการผูก Python ของ aspeak สำหรับคุณ ตรวจสอบการใช้ห้องสมุด#Python สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้การผูก Python
pip install -U aspeak==6.0.0ตอนนี้ล้อ prebuilt มีให้เฉพาะสำหรับสถาปัตยกรรม x86_64 เท่านั้น เนื่องจากปัญหาทางเทคนิคบางอย่างฉันยังไม่ได้อัปโหลดการกระจายแหล่งที่มาไปยัง PYPI ดังนั้นในการสร้างล้อจากแหล่งที่มาคุณต้องทำตามคำแนะนำในการติดตั้งจากแหล่งที่มา
เนื่องจากปัญหาความเข้ากันได้ของ Manylinux ล้อสำหรับ Linux จึงไม่สามารถใช้ได้กับ PYPI (แต่คุณยังสามารถสร้างพวกเขาจากแหล่งที่มาได้)
วิธีที่ง่ายที่สุดในการติดตั้ง aspeak จากแหล่งที่มาคือการใช้สินค้า:
cargo install aspeak -F binary หรือคุณสามารถติดตั้ง aspeak จาก AUR
ในการสร้างล้อ Python คุณต้องติดตั้ง 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
เรียกใช้ aspeak help เพื่อดูข้อความช่วยเหลือ
เรียกใช้ aspeak help <subcommand> เพื่อดูข้อความช่วยเหลือของคำสั่งย่อย
ควรวางตัวเลือกการรับรองความถูกต้องไว้ก่อนคำสั่งย่อยใด ๆ
ตัวอย่างเช่นในการใช้คีย์การสมัครสมาชิกของคุณและจุดสิ้นสุดอย่างเป็นทางการที่กำหนดโดยภูมิภาคให้เรียกใช้คำสั่งต่อไปนี้:
$ aspeak --region < YOUR_REGION > --key < YOUR_SUBSCRIPTION_KEY > text " Hello World " หากคุณใช้จุดสิ้นสุดที่กำหนดเองคุณสามารถใช้ตัวเลือก --endpoint แทน --region
เพื่อหลีกเลี่ยงการทำซ้ำคุณสามารถจัดเก็บรายละเอียดการรับรองความถูกต้องของคุณในโปรไฟล์ Aspeak ของคุณ อ่านส่วนต่อไปนี้สำหรับรายละเอียดเพิ่มเติม
จาก v5.2.0 คุณสามารถตั้งค่าความลับการตรวจสอบความถูกต้องผ่านตัวแปรสภาพแวดล้อมต่อไปนี้:
ASPEAK_AUTH_KEY สำหรับการรับรองความถูกต้องโดยใช้คีย์สมัครสมาชิกASPEAK_AUTH_TOKEN สำหรับการตรวจสอบโดยใช้โทเค็นการอนุญาตจาก v4.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ในการแก้ไขโปรไฟล์ Run:
$ 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 ส่งผลให้อัตราสามเท่าpitch : สนามของเสียง-0.5 ) ค่าจะถูกคูณด้วย 100% และกลายเป็น -50.00%x-low , low , medium , high , x-high , default+10%-2st หรือ +80Hz ):600Hzหมายเหตุ : ค่าสูง/ต่ำที่ไม่สมเหตุสมผลจะถูกตัดเป็นค่าที่สมเหตุสมผลโดยบริการความรู้ความเข้าใจ Azure
ตัวอย่างต่อไปนี้สมมติว่าคุณได้ตั้งค่าการรับรองความถูกต้องในโปรไฟล์ของคุณแล้ว
$ 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.Riff24KHz16BitMonoPcmAudioFormat("mp3", 2)endpoint : จุดสิ้นสุดของบริการพูดregion : อีกทางเลือกหนึ่งคุณสามารถระบุภูมิภาคของบริการการพูดแทนการพิมพ์ URL ปลายทางที่น่าเบื่อkey : คีย์การสมัครสมาชิกของบริการพูดtoken : โทเค็นการรับรองความถูกต้องสำหรับบริการพูด หากคุณให้โทเค็นคีย์การสมัครสมาชิกจะถูกละเว้นheaders : ส่วนหัว HTTP เพิ่มเติมสำหรับบริการพูดmode : เลือกซินธิไซเซอร์ที่จะใช้ ส่วน rest หรือ websocketSpeechService ซ์ SPUINESSERVICE หลังจากนั้นคุณสามารถเรียก speak_text() เพื่อพูดข้อความหรือ speak_ssml() เพื่อพูด ssml หรือคุณสามารถเรียก synthesize_text() หรือ synthesize_ssml() เพื่อรับข้อมูลเสียง
สำหรับ synthesize_text() และ synthesize_ssml() หากคุณให้ output ข้อมูลเสียงจะถูกเขียนลงในไฟล์นั้นและฟังก์ชั่นจะ None กลับมา มิฉะนั้นฟังก์ชั่นจะส่งคืนข้อมูลเสียง
นี่คือตัวเลือกทั่วไปสำหรับ speak_text() และ synthesize_text() :
locale : สถานที่ของเสียง ค่าเริ่มต้นคือ en-USvoice : ชื่อเสียง ค่าเริ่มต้นคือ en-US-JennyNeuralrate : อัตราการพูดของเสียง ต้องเป็นสตริงที่เหมาะกับข้อกำหนดตามที่บันทึกไว้ในส่วนนี้: ระดับเสียงและอัตราpitch : สนามของเสียง ต้องเป็นสตริงที่เหมาะกับข้อกำหนดตามที่บันทึกไว้ในส่วนนี้: ระดับเสียงและอัตราstyle : สไตล์ของเสียงaspeak -L -v <VOICE_ID>generalstyle_degree : ระดับของสไตล์role : บทบาทของเสียงrole ระบุการเล่นบทบาทที่พูด เสียงทำหน้าที่เป็นอายุและเพศที่แตกต่างกัน แต่ชื่อเสียงจะไม่เปลี่ยนแปลงzh-CN-XiaomoNeural , zh-CN-XiaoxuanNeural , zh-CN-YunxiNeural และ zh-CN-YunyeNeural เพิ่ม aspeak ลงใน Cargo.toml ของคุณ:
$ cargo add aspeak จากนั้นทำตามเอกสารของลัง aspeak
มี 4 ตัวอย่างสำหรับการอ้างอิงอย่างรวดเร็ว: