mirror of https://gitlab.com/bashrc2/epicyon
Alter TTS pitch based upon speaker gender
parent
8d085d615d
commit
770a135d51
|
@ -1945,9 +1945,12 @@ if args.speaker:
|
||||||
if speakerJson['say'] != prevSay:
|
if speakerJson['say'] != prevSay:
|
||||||
if speakerJson.get('name'):
|
if speakerJson.get('name'):
|
||||||
nameStr = speakerJson['name']
|
nameStr = speakerJson['name']
|
||||||
|
gender = 'They/Them'
|
||||||
|
if speakerJson.get('gender'):
|
||||||
|
gender = speakerJson['gender']
|
||||||
|
|
||||||
# get the speech parameters
|
# get the speech parameters
|
||||||
pitch = getSpeakerPitch(nameStr, args.screenreader)
|
pitch = getSpeakerPitch(nameStr, args.screenreader, gender)
|
||||||
rate = getSpeakerRate(nameStr, args.screenreader)
|
rate = getSpeakerRate(nameStr, args.screenreader)
|
||||||
srange = getSpeakerRange(nameStr)
|
srange = getSpeakerRange(nameStr)
|
||||||
|
|
||||||
|
|
17
speaker.py
17
speaker.py
|
@ -16,13 +16,24 @@ from utils import getFullDomain
|
||||||
speakerRemoveChars = ('.\n', '. ', ',', ';', '?', '!')
|
speakerRemoveChars = ('.\n', '. ', ',', ';', '?', '!')
|
||||||
|
|
||||||
|
|
||||||
def getSpeakerPitch(displayName: str, screenreader: str) -> int:
|
def getSpeakerPitch(displayName: str, screenreader: str, gender) -> int:
|
||||||
"""Returns the speech synthesis pitch for the given name
|
"""Returns the speech synthesis pitch for the given name
|
||||||
"""
|
"""
|
||||||
random.seed(displayName)
|
random.seed(displayName)
|
||||||
|
rangeMin = 1
|
||||||
|
rangeMax = 100
|
||||||
|
if 'She' in gender:
|
||||||
|
rangeMin = 50
|
||||||
|
elif 'Him' in gender:
|
||||||
|
rangeMax = 50
|
||||||
if screenreader == 'picospeaker':
|
if screenreader == 'picospeaker':
|
||||||
return random.randint(-8, 3)
|
rangeMin = -8
|
||||||
return random.randint(1, 100)
|
rangeMax = 3
|
||||||
|
if 'She' in gender:
|
||||||
|
rangeMin = -1
|
||||||
|
elif 'Him' in gender:
|
||||||
|
rangeMax = -1
|
||||||
|
return random.randint(rangeMin, rangeMax)
|
||||||
|
|
||||||
|
|
||||||
def getSpeakerRate(displayName: str, screenreader: str) -> int:
|
def getSpeakerRate(displayName: str, screenreader: str) -> int:
|
||||||
|
|
Loading…
Reference in New Issue