Fix "ValueError: the metadata doesn't contain a Duration field"
* seems like microsoft updated their API to include this metadata type Fixes #16
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
[metadata]
|
[metadata]
|
||||||
name = edge-tts
|
name = edge-tts
|
||||||
version = 5.0.0
|
version = 5.0.1
|
||||||
author = rany
|
author = rany
|
||||||
author_email = ranygh@riseup.net
|
author_email = ranygh@riseup.net
|
||||||
description = Microsoft Edge's TTS
|
description = Microsoft Edge's TTS
|
||||||
|
|||||||
@@ -333,19 +333,13 @@ class Communicate:
|
|||||||
metadata_offset = metadata["Metadata"][0]["Data"][
|
metadata_offset = metadata["Metadata"][0]["Data"][
|
||||||
"Offset"
|
"Offset"
|
||||||
]
|
]
|
||||||
try:
|
if metadata_type == "WordBoundary":
|
||||||
metadata_duration = metadata["Metadata"][0]["Data"][
|
metadata_duration = metadata["Metadata"][0]["Data"][
|
||||||
"Duration"
|
"Duration"
|
||||||
]
|
]
|
||||||
except KeyError as exception:
|
metadata_text = metadata["Metadata"][0]["Data"]["text"][
|
||||||
raise ValueError(
|
"Text"
|
||||||
"The metadata doesn't contain a Duration field. "
|
]
|
||||||
+ "This usually happens when SentenceBoundary metadata type is sent."
|
|
||||||
) from exception
|
|
||||||
metadata_text = metadata["Metadata"][0]["Data"]["text"][
|
|
||||||
"Text"
|
|
||||||
]
|
|
||||||
if metadata_type == "WordBoundary":
|
|
||||||
yield (
|
yield (
|
||||||
[
|
[
|
||||||
metadata_offset,
|
metadata_offset,
|
||||||
@@ -358,6 +352,8 @@ class Communicate:
|
|||||||
raise NotImplementedError(
|
raise NotImplementedError(
|
||||||
"SentenceBoundary is not supported due to being broken."
|
"SentenceBoundary is not supported due to being broken."
|
||||||
)
|
)
|
||||||
|
elif metadata_type == "SessionEnd":
|
||||||
|
continue
|
||||||
else:
|
else:
|
||||||
raise NotImplementedError(
|
raise NotImplementedError(
|
||||||
f"Unknown metadata type: {metadata_type}"
|
f"Unknown metadata type: {metadata_type}"
|
||||||
|
|||||||
Reference in New Issue
Block a user