Remove pitch option as it no longer has any effect
* Most likely Microsoft started ignoring it along with the custom SSML purge
This commit is contained in:
@@ -63,17 +63,18 @@ You must first check the available voices with the `--list-voices` option:
|
|||||||
|
|
||||||
Support for custom SSML has been removed since 5.0.0 because Microsoft has taken the initiative to prevent it from working. You cannot use custom SSML anymore.
|
Support for custom SSML has been removed since 5.0.0 because Microsoft has taken the initiative to prevent it from working. You cannot use custom SSML anymore.
|
||||||
|
|
||||||
### Changing pitch, rate, volume, etc.
|
### Changing rate, volume, etc.
|
||||||
|
|
||||||
It is possible to make minor changes to the generated speech.
|
It is possible to make minor changes to the generated speech.
|
||||||
|
|
||||||
$ edge-tts --pitch=-10Hz --text "Hello, world!" --write-media hello_with_pitch_down.mp3
|
|
||||||
$ edge-tts --rate=-50% --text "Hello, world!" --write-media hello_with_rate_halved.mp3
|
$ edge-tts --rate=-50% --text "Hello, world!" --write-media hello_with_rate_halved.mp3
|
||||||
$ edge-tts --volume=-50% --text "Hello, world!" --write-media hello_with_volume_halved.mp3
|
$ edge-tts --volume=-50% --text "Hello, world!" --write-media hello_with_volume_halved.mp3
|
||||||
|
|
||||||
Keep in mind that the `--pitch`, `--rate`, `--volume`, etc. options are applied to the entire SSML document.
|
Keep in mind that the `--rate`, `--volume`, etc. options are applied to the entire SSML document.
|
||||||
|
|
||||||
In addition, it is required to use `--pitch=-10Hz` instead of `--pitch -10Hz` otherwise the `-10Hz` would be interpreted as just another argument.
|
In addition, it is required to use `--rate=-50%` instead of `--pitch -50%` otherwise the `-50%` would be interpreted as just another argument.
|
||||||
|
|
||||||
|
**NOTE**: `--pitch` was removed in 6.0.3 as it no longer appears to have any effect.
|
||||||
|
|
||||||
### Note on the `edge-playback` command
|
### Note on the `edge-playback` command
|
||||||
|
|
||||||
|
|||||||
@@ -133,7 +133,7 @@ def split_text_by_byte_length(text: Union[str, bytes], byte_length: int) -> List
|
|||||||
|
|
||||||
|
|
||||||
def mkssml(
|
def mkssml(
|
||||||
text: Union[str, bytes], voice: str, pitch: str, rate: str, volume: str
|
text: Union[str, bytes], voice: str, rate: str, volume: str
|
||||||
) -> str:
|
) -> str:
|
||||||
"""
|
"""
|
||||||
Creates a SSML string from the given parameters.
|
Creates a SSML string from the given parameters.
|
||||||
@@ -146,7 +146,7 @@ def mkssml(
|
|||||||
|
|
||||||
ssml = (
|
ssml = (
|
||||||
"<speak version='1.0' xmlns='http://www.w3.org/2001/10/synthesis' xml:lang='en-US'>"
|
"<speak version='1.0' xmlns='http://www.w3.org/2001/10/synthesis' xml:lang='en-US'>"
|
||||||
f"<voice name='{voice}'><prosody pitch='{pitch}' rate='{rate}' volume='{volume}'>"
|
f"<voice name='{voice}'><prosody pitch='+0Hz' rate='{rate}' volume='{volume}'>"
|
||||||
f"{text}</prosody></voice></speak>"
|
f"{text}</prosody></voice></speak>"
|
||||||
)
|
)
|
||||||
return ssml
|
return ssml
|
||||||
@@ -197,7 +197,6 @@ class Communicate:
|
|||||||
text: str,
|
text: str,
|
||||||
voice: str = "Microsoft Server Speech Text to Speech Voice (en-US, AriaNeural)",
|
voice: str = "Microsoft Server Speech Text to Speech Voice (en-US, AriaNeural)",
|
||||||
*,
|
*,
|
||||||
pitch: str = "+0Hz",
|
|
||||||
rate: str = "+0%",
|
rate: str = "+0%",
|
||||||
volume: str = "+0%",
|
volume: str = "+0%",
|
||||||
proxy: Optional[str] = None,
|
proxy: Optional[str] = None,
|
||||||
@@ -231,10 +230,6 @@ class Communicate:
|
|||||||
):
|
):
|
||||||
raise ValueError(f"Invalid voice '{voice}'.")
|
raise ValueError(f"Invalid voice '{voice}'.")
|
||||||
|
|
||||||
if re.match(r"^[+-]?\d+Hz$", pitch) is None:
|
|
||||||
raise ValueError(f"Invalid pitch '{pitch}'.")
|
|
||||||
self.pitch: str = pitch
|
|
||||||
|
|
||||||
if re.match(r"^[+-]?\d+%$", rate) is None:
|
if re.match(r"^[+-]?\d+%$", rate) is None:
|
||||||
raise ValueError(f"Invalid rate '{rate}'.")
|
raise ValueError(f"Invalid rate '{rate}'.")
|
||||||
self.rate: str = rate
|
self.rate: str = rate
|
||||||
@@ -254,7 +249,7 @@ class Communicate:
|
|||||||
ssml_headers_plus_data(
|
ssml_headers_plus_data(
|
||||||
connect_id(),
|
connect_id(),
|
||||||
date_to_string(),
|
date_to_string(),
|
||||||
mkssml("", self.voice, self.pitch, self.rate, self.volume),
|
mkssml("", self.voice, self.rate, self.volume),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
+ 50 # margin of error
|
+ 50 # margin of error
|
||||||
@@ -321,7 +316,7 @@ class Communicate:
|
|||||||
connect_id(),
|
connect_id(),
|
||||||
date,
|
date,
|
||||||
mkssml(
|
mkssml(
|
||||||
text, self.voice, self.pitch, self.rate, self.volume
|
text, self.voice, self.rate, self.volume
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -83,12 +83,6 @@ async def _async_main() -> None:
|
|||||||
help="lists available voices",
|
help="lists available voices",
|
||||||
action="store_true",
|
action="store_true",
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
|
||||||
"-p",
|
|
||||||
"--pitch",
|
|
||||||
help="set TTS pitch. Default +0Hz, For more info check https://bit.ly/3eAE5Nx",
|
|
||||||
default="+0Hz",
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"-r",
|
"-r",
|
||||||
"--rate",
|
"--rate",
|
||||||
|
|||||||
Reference in New Issue
Block a user