mirror of https://gitlab.com/bashrc2/epicyon
Cache ssml for posts
parent
0e80ddb83a
commit
8bb32a6a55
5
inbox.py
5
inbox.py
|
@ -2282,7 +2282,7 @@ def _receive_announce(recent_posts_cache: {},
|
|||
nickname, domain, domain_full,
|
||||
post_json_object, person_cache,
|
||||
translate, lookup_actor,
|
||||
theme_name)
|
||||
theme_name, system_language)
|
||||
try:
|
||||
with open(post_filename + '.tts', 'w+') as ttsfile:
|
||||
ttsfile.write('\n')
|
||||
|
@ -4120,7 +4120,8 @@ def _inbox_after_initial(server, inbox_start_time,
|
|||
update_speaker(base_dir, http_prefix,
|
||||
nickname, domain, domain_full,
|
||||
post_json_object, person_cache,
|
||||
translate, None, theme_name)
|
||||
translate, None, theme_name,
|
||||
system_language)
|
||||
fitness_performance(inbox_start_time,
|
||||
server.fitness,
|
||||
'INBOX', 'update_speaker',
|
||||
|
|
41
speaker.py
41
speaker.py
|
@ -11,6 +11,7 @@ import os
|
|||
import html
|
||||
import random
|
||||
import urllib.parse
|
||||
from utils import get_cached_post_filename
|
||||
from utils import remove_id_ending
|
||||
from utils import is_dm
|
||||
from utils import is_reply
|
||||
|
@ -301,7 +302,7 @@ def _speaker_endpoint_json(display_name: str, summary: str,
|
|||
return speaker_json
|
||||
|
||||
|
||||
def _ssm_lheader(system_language: str, instance_title: str) -> str:
|
||||
def _ssml_header(system_language: str) -> str:
|
||||
"""Returns a header for an SSML document
|
||||
"""
|
||||
return '<?xml version="1.0"?>\n' + \
|
||||
|
@ -312,14 +313,13 @@ def _ssm_lheader(system_language: str, instance_title: str) -> str:
|
|||
' version="1.1">\n' + \
|
||||
' <metadata>\n' + \
|
||||
' <dc:title xml:lang="' + system_language + '">' + \
|
||||
instance_title + ' inbox</dc:title>\n' + \
|
||||
'inbox</dc:title>\n' + \
|
||||
' </metadata>\n'
|
||||
|
||||
|
||||
def _speaker_endpoint_ssml(display_name: str, summary: str,
|
||||
content: str, image_description: str,
|
||||
links: [], language: str,
|
||||
instance_title: str,
|
||||
gender: str) -> str:
|
||||
"""Returns an SSML endpoint for the TTS speaker
|
||||
https://en.wikipedia.org/wiki/Speech_Synthesis_Markup_Language
|
||||
|
@ -342,7 +342,7 @@ def _speaker_endpoint_ssml(display_name: str, summary: str,
|
|||
|
||||
content = _add_ssm_lemphasis(content)
|
||||
voice_params = 'name="' + display_name + '" gender="' + gender + '"'
|
||||
return _ssm_lheader(lang_short, instance_title) + \
|
||||
return _ssml_header(lang_short) + \
|
||||
' <p>\n' + \
|
||||
' <s xml:lang="' + language + '">\n' + \
|
||||
' <voice ' + voice_params + '>\n' + \
|
||||
|
@ -356,7 +356,6 @@ def _speaker_endpoint_ssml(display_name: str, summary: str,
|
|||
def get_ssml_box(base_dir: str, path: str,
|
||||
domain: str,
|
||||
system_language: str,
|
||||
instance_title: str,
|
||||
box_name: str) -> str:
|
||||
"""Returns SSML for the given timeline
|
||||
"""
|
||||
|
@ -379,7 +378,7 @@ def get_ssml_box(base_dir: str, path: str,
|
|||
speaker_json['imageDescription'],
|
||||
speaker_json['detectedLinks'],
|
||||
system_language,
|
||||
instance_title, gender)
|
||||
gender)
|
||||
|
||||
|
||||
def speakable_text(base_dir: str, content: str, translate: {}) -> (str, []):
|
||||
|
@ -544,7 +543,8 @@ def update_speaker(base_dir: str, http_prefix: str,
|
|||
nickname: str, domain: str, domain_full: str,
|
||||
post_json_object: {}, person_cache: {},
|
||||
translate: {}, announcing_actor: str,
|
||||
theme_name: str) -> None:
|
||||
theme_name: str,
|
||||
system_language: str) -> None:
|
||||
""" Generates a json file which can be used for TTS announcement
|
||||
of incoming inbox posts
|
||||
"""
|
||||
|
@ -554,5 +554,30 @@ def update_speaker(base_dir: str, http_prefix: str,
|
|||
post_json_object, person_cache,
|
||||
translate, announcing_actor,
|
||||
theme_name)
|
||||
speaker_filename = acct_dir(base_dir, nickname, domain) + '/speaker.json'
|
||||
account_dir = acct_dir(base_dir, nickname, domain)
|
||||
speaker_filename = account_dir + '/speaker.json'
|
||||
save_json(speaker_json, speaker_filename)
|
||||
|
||||
# save the ssml
|
||||
cached_ssml_filename = \
|
||||
get_cached_post_filename(base_dir, nickname,
|
||||
domain, post_json_object)
|
||||
if not cached_ssml_filename:
|
||||
return
|
||||
cached_ssml_filename = cached_ssml_filename.replace('.html', '.ssml')
|
||||
gender = None
|
||||
if speaker_json.get('gender'):
|
||||
gender = speaker_json['gender']
|
||||
ssml_str = \
|
||||
_speaker_endpoint_ssml(speaker_json['name'],
|
||||
speaker_json['summary'],
|
||||
speaker_json['say'],
|
||||
speaker_json['imageDescription'],
|
||||
speaker_json['detectedLinks'],
|
||||
system_language,
|
||||
gender)
|
||||
try:
|
||||
with open(cached_ssml_filename, 'w+') as fp_ssml:
|
||||
fp_ssml.write(ssml_str)
|
||||
except OSError:
|
||||
print('EX: unable to write ssml ' + cached_ssml_filename)
|
||||
|
|
8
utils.py
8
utils.py
|
@ -1744,6 +1744,14 @@ def delete_cached_html(base_dir: str, nickname: str, domain: str,
|
|||
print('EX: delete_cached_html ' +
|
||||
'unable to delete cached post file ' +
|
||||
str(cached_post_filename))
|
||||
cached_post_filename = cached_post_filename.replace('.html', '.ssml')
|
||||
if os.path.isfile(cached_post_filename):
|
||||
try:
|
||||
os.remove(cached_post_filename)
|
||||
except OSError:
|
||||
print('EX: delete_cached_html ' +
|
||||
'unable to delete cached ssml post file ' +
|
||||
str(cached_post_filename))
|
||||
|
||||
|
||||
def _delete_hashtags_on_post(base_dir: str, post_json_object: {}) -> None:
|
||||
|
|
|
@ -1698,7 +1698,7 @@ def individual_post_as_html(signing_priv_key_pem: str,
|
|||
nickname, domain, domain_full,
|
||||
post_json_object, person_cache,
|
||||
translate, post_json_object['actor'],
|
||||
theme_name)
|
||||
theme_name, system_language)
|
||||
with open(announce_filename + '.tts', 'w+') as ttsfile:
|
||||
ttsfile.write('\n')
|
||||
|
||||
|
|
Loading…
Reference in New Issue