diff --git a/inbox.py b/inbox.py
index d66615953..abca8ca0f 100644
--- a/inbox.py
+++ b/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',
diff --git a/speaker.py b/speaker.py
index b35a2cd0c..c1f670e15 100644
--- a/speaker.py
+++ b/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 '\n' + \
@@ -312,14 +313,13 @@ def _ssm_lheader(system_language: str, instance_title: str) -> str:
' version="1.1">\n' + \
' \n' + \
' ' + \
- instance_title + ' inbox\n' + \
+ 'inbox\n' + \
' \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) + \
'
\n' + \
' \n' + \
' \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)
diff --git a/utils.py b/utils.py
index bc75b1e10..91979df56 100644
--- a/utils.py
+++ b/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:
diff --git a/webapp_post.py b/webapp_post.py
index a84fddf9c..314a2e104 100644
--- a/webapp_post.py
+++ b/webapp_post.py
@@ -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')