mirror of
https://github.com/legop3/MultiRoombaRover.git
synced 2026-09-17 10:00:46 -04:00
Restore Pi Chrome TTS daemon unchanged
This commit is contained in:
@@ -1,6 +1,5 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
import ctypes
|
import ctypes
|
||||||
import ctypes.util
|
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
import struct
|
import struct
|
||||||
@@ -34,40 +33,6 @@ MAX_PITCH = 2.0
|
|||||||
MIN_SPEED = 0.5
|
MIN_SPEED = 0.5
|
||||||
MAX_SPEED = 2.0
|
MAX_SPEED = 2.0
|
||||||
|
|
||||||
_runtime_handles = []
|
|
||||||
|
|
||||||
|
|
||||||
def load_shared_library(path):
|
|
||||||
mode = ctypes.RTLD_GLOBAL | getattr(os, "RTLD_NOW", 0)
|
|
||||||
return ctypes.CDLL(path, mode=mode)
|
|
||||||
|
|
||||||
|
|
||||||
def preload_runtime_libraries():
|
|
||||||
# Some ChromeOS libchrometts builds reference compiler helper symbols such
|
|
||||||
# as __udivmodti4 without declaring the runtime library as an ELF dependency.
|
|
||||||
# Loading common compiler runtimes globally first makes those symbols visible
|
|
||||||
# before ctypes loads /opt/roverd/googletts/libchrometts.so.
|
|
||||||
candidates = [
|
|
||||||
"gcc_s",
|
|
||||||
"atomic",
|
|
||||||
"stdc++",
|
|
||||||
"c++",
|
|
||||||
"c++abi",
|
|
||||||
]
|
|
||||||
for name in candidates:
|
|
||||||
lib = ctypes.util.find_library(name)
|
|
||||||
if not lib:
|
|
||||||
continue
|
|
||||||
try:
|
|
||||||
_runtime_handles.append(load_shared_library(lib))
|
|
||||||
except OSError:
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
# Load the runtime helpers at module import time so daemon readiness fails only
|
|
||||||
# when libchrometts itself is still unusable after the best-effort preloads.
|
|
||||||
preload_runtime_libraries()
|
|
||||||
|
|
||||||
|
|
||||||
def varint(value):
|
def varint(value):
|
||||||
out = bytearray()
|
out = bytearray()
|
||||||
@@ -99,7 +64,7 @@ def build_speaker(name, gender):
|
|||||||
|
|
||||||
class ChromeTTS:
|
class ChromeTTS:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.lib = load_shared_library(LIB_PATH)
|
self.lib = ctypes.CDLL(LIB_PATH)
|
||||||
self.lib.GoogleTtsInit.argtypes = [ctypes.c_char_p, ctypes.c_char_p]
|
self.lib.GoogleTtsInit.argtypes = [ctypes.c_char_p, ctypes.c_char_p]
|
||||||
self.lib.GoogleTtsInit.restype = ctypes.c_bool
|
self.lib.GoogleTtsInit.restype = ctypes.c_bool
|
||||||
self.lib.GoogleTtsInitBuffered.argtypes = [ctypes.c_char_p, ctypes.c_char_p, ctypes.c_int, ctypes.c_int]
|
self.lib.GoogleTtsInitBuffered.argtypes = [ctypes.c_char_p, ctypes.c_char_p, ctypes.c_int, ctypes.c_int]
|
||||||
|
|||||||
Reference in New Issue
Block a user