That explains because it depends on the HttpRequestBuilder
for creating HTTP requests. The HttpRequestBuilder
is only available in 2.4.0-SNAPSHOT. So upgrading to a recent milestone or SNAPSHOT should solve it.
I try install GoogleTTS Addon without platform dependencies and show this errors:
2018-11-25 16:22:11.660 [ERROR] [org.openhab.voice.googletts ] - bundle org.openhab.voice.googletts:2.4.0.201811120148 (279)[org.openhab.voice.googletts.internal.GoogleTTSService(28)] : The activate method has thrown an exception
java.lang.NullPointerException: null
2018-11-25 16:22:11.699 [WARN ] [org.openhab.voice.googletts ] - FrameworkEvent WARNING - org.openhab.voice.googletts
org.osgi.framework.ServiceException: org.apache.felix.scr.impl.manager.SingleComponentManager.getService() returned a null service object
Thanks for help
I have: openHAB 2.4.0~20181119183855-1
did you use the testing jar in your addons folder and uninstalled the one from PaperUI?
Please post full logging and stack traces so we can see when and what code throws the NullPointerException.
Yes, i uninstall Google TTS from PaperUI and install this addon https://github.com/wborn/openhab2-addons/releases/download/googletts-remove-native-dependencies/org.openhab.voice.googletts-2.4.0-SNAPSHOT.jar
2018-11-26 11:02:19.407 [INFO ] [.googletts.internal.GoogleTTSService] - Using home folder: /var/lib/openhab2/googletts
2018-11-26 11:02:19.450 [INFO ] [.googletts.internal.GoogleTTSService] - Using cache folder /var/lib/openhab2/cache/org.openhab.voice.googletts
2018-11-26 11:02:19.461 [DEBUG] [.googletts.internal.GoogleTTSService] - Updating configuration
2018-11-26 11:02:19.483 [TRACE] [.googletts.internal.GoogleTTSService] - New configuration: GoogleTTSConfig{serviceAccountKey='{
"type": "service_account",
"project_id": "my-project-1488966886274",
"private_key_id": "15bf40fb531d0e21830d012197195896db4908ee",
"private_key": "-----BEGIN PRIVATE KEY-----\xxx\n-----END PRIVATE KEY-----\n",
"client_email": "openhab@my-project-1488966886274.iam.gserviceaccount.com",
"client_id": "102878307864680662856",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/openhab%40my-project-1488966886274.iam.gserviceaccount.com"
}', pitch=0.0, speakingRate=1.0, volumeGainDb=0.0, purgeCache=false}
2018-11-26 11:02:20.529 [ERROR] [org.openhab.voice.googletts ] - bundle org.openhab.voice.googletts:2.4.0.201811120148 (279)[org.openhab.voice.googletts.internal.GoogleTTSService(28)] : The activate method has thrown an exception
java.lang.NullPointerException: null
at org.openhab.voice.googletts.internal.GoogleCloudAPI.listVoices(GoogleCloudAPI.java:238) ~[?:?]
at org.openhab.voice.googletts.internal.GoogleCloudAPI.initVoices(GoogleCloudAPI.java:215) ~[?:?]
at org.openhab.voice.googletts.internal.GoogleCloudAPI.setConfig(GoogleCloudAPI.java:140) ~[?:?]
at org.openhab.voice.googletts.internal.GoogleTTSService.updateConfig(GoogleTTSService.java:220) ~[?:?]
at org.openhab.voice.googletts.internal.GoogleTTSService.activate(GoogleTTSService.java:126) ~[?:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?]
at org.apache.felix.scr.impl.inject.methods.BaseMethod.invokeMethod(BaseMethod.java:228) ~[39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.inject.methods.BaseMethod.access$500(BaseMethod.java:41) ~[39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.inject.methods.BaseMethod$Resolved.invoke(BaseMethod.java:664) ~[39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.inject.methods.BaseMethod.invoke(BaseMethod.java:510) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.inject.methods.ActivateMethod.invoke(ActivateMethod.java:317) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.inject.methods.ActivateMethod.invoke(ActivateMethod.java:307) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.SingleComponentManager.createImplementationObject(SingleComponentManager.java:334) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.SingleComponentManager.createComponent(SingleComponentManager.java:114) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:947) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:919) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:863) [39:org.apache.felix.scr:2.1.2]
at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse$1.run(ServiceFactoryUse.java:212) [?:?]
at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.factoryGetService(ServiceFactoryUse.java:210) [?:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.getService(ServiceFactoryUse.java:111) [?:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceConsumer$2.getService(ServiceConsumer.java:45) [?:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:508) [?:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:461) [?:?]
at org.eclipse.osgi.internal.framework.BundleContextImpl.getService(BundleContextImpl.java:624) [?:?]
at org.apache.felix.scr.impl.manager.SingleRefPair.getServiceObject(SingleRefPair.java:73) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.inject.BindParameters.getServiceObject(BindParameters.java:47) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.inject.methods.BindMethod.getServiceObject(BindMethod.java:662) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.DependencyManager.getServiceObject(DependencyManager.java:2304) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.DependencyManager.invokeUnbindMethod(DependencyManager.java:1915) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.SingleComponentManager.invokeUnbindMethod(SingleComponentManager.java:432) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.removedService(DependencyManager.java:390) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.removedService(DependencyManager.java:302) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerRemoved(ServiceTracker.java:1242) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerRemoved(ServiceTracker.java:1137) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.untrack(ServiceTracker.java:997) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:1176) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.BundleComponentActivator$ListenerInfo.serviceChanged(BundleComponentActivator.java:125) [39:org.apache.felix.scr:2.1.2]
at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:109) [?:?]
at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:920) [?:?]
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) [?:?]
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) [?:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:862) [?:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry$1.run(ServiceRegistry.java:805) [?:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry$1.run(ServiceRegistry.java:1) [?:?]
at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:803) [?:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.unregister(ServiceRegistrationImpl.java:222) [?:?]
at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.unregister(AbstractComponentManager.java:912) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.unregister(AbstractComponentManager.java:877) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.RegistrationManager.changeRegistration(RegistrationManager.java:135) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.AbstractComponentManager.unregisterService(AbstractComponentManager.java:954) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.AbstractComponentManager.doDeactivate(AbstractComponentManager.java:808) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.AbstractComponentManager.deactivateInternal(AbstractComponentManager.java:790) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.AbstractComponentManager.dispose(AbstractComponentManager.java:579) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.ConfigurableComponentHolder.disposeComponents(ConfigurableComponentHolder.java:716) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.BundleComponentActivator.dispose(BundleComponentActivator.java:511) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.Activator.disposeComponents(Activator.java:428) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.Activator.access$300(Activator.java:49) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.Activator$ScrExtension.destroy(Activator.java:291) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.AbstractExtender$1.run(AbstractExtender.java:216) [39:org.apache.felix.scr:2.1.2]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]
at org.apache.felix.scr.impl.AbstractExtender.destroyExtension(AbstractExtender.java:238) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.AbstractExtender.bundleChanged(AbstractExtender.java:132) [39:org.apache.felix.scr:2.1.2]
at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:908) [?:?]
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) [?:?]
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) [?:?]
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:213) [?:?]
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher$1.run(EquinoxEventPublisher.java:124) [?:?]
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher$1.run(EquinoxEventPublisher.java:1) [?:?]
at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:122) [?:?]
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:112) [?:?]
at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:168) [?:?]
at org.eclipse.osgi.container.Module.publishEvent(Module.java:476) [?:?]
at org.eclipse.osgi.container.Module.doStop(Module.java:634) [?:?]
at org.eclipse.osgi.container.Module.stop(Module.java:498) [?:?]
at org.eclipse.osgi.container.ModuleContainer.uninstall(ModuleContainer.java:399) [?:?]
at org.eclipse.osgi.internal.framework.EquinoxBundle.uninstall(EquinoxBundle.java:446) [?:?]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.uninstall(DirectoryWatcher.java:1098) [10:org.apache.felix.fileinstall:3.6.4]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.uninstall(DirectoryWatcher.java:901) [10:org.apache.felix.fileinstall:3.6.4]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.doProcess(DirectoryWatcher.java:487) [10:org.apache.felix.fileinstall:3.6.4]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:365) [10:org.apache.felix.fileinstall:3.6.4]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:316) [10:org.apache.felix.fileinstall:3.6.4]
2018-11-26 11:02:20.588 [WARN ] [org.openhab.voice.googletts ] - FrameworkEvent WARNING - org.openhab.voice.googletts
org.osgi.framework.ServiceException: org.apache.felix.scr.impl.manager.SingleComponentManager.getService() returned a null service object
at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.factoryGetService(ServiceFactoryUse.java:232) ~[?:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.getService(ServiceFactoryUse.java:111) ~[?:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceConsumer$2.getService(ServiceConsumer.java:45) ~[?:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:508) ~[?:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:461) ~[?:?]
at org.eclipse.osgi.internal.framework.BundleContextImpl.getService(BundleContextImpl.java:624) ~[?:?]
at org.apache.felix.scr.impl.manager.SingleRefPair.getServiceObject(SingleRefPair.java:73) ~[?:?]
at org.apache.felix.scr.impl.inject.BindParameters.getServiceObject(BindParameters.java:47) ~[?:?]
at org.apache.felix.scr.impl.inject.methods.BindMethod.getServiceObject(BindMethod.java:662) ~[?:?]
at org.apache.felix.scr.impl.manager.DependencyManager.getServiceObject(DependencyManager.java:2304) ~[?:?]
at org.apache.felix.scr.impl.manager.DependencyManager.invokeUnbindMethod(DependencyManager.java:1915) ~[?:?]
at org.apache.felix.scr.impl.manager.SingleComponentManager.invokeUnbindMethod(SingleComponentManager.java:432) ~[?:?]
at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.removedService(DependencyManager.java:390) ~[?:?]
at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.removedService(DependencyManager.java:302) ~[?:?]
at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerRemoved(ServiceTracker.java:1242) ~[?:?]
at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerRemoved(ServiceTracker.java:1137) ~[?:?]
at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.untrack(ServiceTracker.java:997) ~[?:?]
at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:1176) ~[?:?]
at org.apache.felix.scr.impl.BundleComponentActivator$ListenerInfo.serviceChanged(BundleComponentActivator.java:125) ~[?:?]
at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:109) ~[?:?]
at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:920) ~[?:?]
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) ~[?:?]
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) ~[?:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:862) ~[?:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry$1.run(ServiceRegistry.java:805) ~[?:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry$1.run(ServiceRegistry.java:1) ~[?:?]
at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:803) ~[?:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.unregister(ServiceRegistrationImpl.java:222) ~[?:?]
at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.unregister(AbstractComponentManager.java:912) ~[?:?]
at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.unregister(AbstractComponentManager.java:877) ~[?:?]
at org.apache.felix.scr.impl.manager.RegistrationManager.changeRegistration(RegistrationManager.java:135) ~[?:?]
at org.apache.felix.scr.impl.manager.AbstractComponentManager.unregisterService(AbstractComponentManager.java:954) ~[?:?]
at org.apache.felix.scr.impl.manager.AbstractComponentManager.doDeactivate(AbstractComponentManager.java:808) ~[?:?]
at org.apache.felix.scr.impl.manager.AbstractComponentManager.deactivateInternal(AbstractComponentManager.java:790) ~[?:?]
at org.apache.felix.scr.impl.manager.AbstractComponentManager.dispose(AbstractComponentManager.java:579) ~[?:?]
at org.apache.felix.scr.impl.manager.ConfigurableComponentHolder.disposeComponents(ConfigurableComponentHolder.java:716) ~[?:?]
at org.apache.felix.scr.impl.BundleComponentActivator.dispose(BundleComponentActivator.java:511) ~[?:?]
at org.apache.felix.scr.impl.Activator.disposeComponents(Activator.java:428) ~[?:?]
at org.apache.felix.scr.impl.Activator.access$300(Activator.java:49) ~[?:?]
at org.apache.felix.scr.impl.Activator$ScrExtension.destroy(Activator.java:291) ~[?:?]
at org.apache.felix.scr.impl.AbstractExtender$1.run(AbstractExtender.java:216) ~[?:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:?]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:?]
at org.apache.felix.scr.impl.AbstractExtender.destroyExtension(AbstractExtender.java:238) ~[?:?]
at org.apache.felix.scr.impl.AbstractExtender.bundleChanged(AbstractExtender.java:132) ~[?:?]
at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:908) ~[?:?]
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) ~[?:?]
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) ~[?:?]
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:213) ~[?:?]
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher$1.run(EquinoxEventPublisher.java:124) ~[?:?]
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher$1.run(EquinoxEventPublisher.java:1) ~[?:?]
at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:122) ~[?:?]
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:112) ~[?:?]
at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:168) ~[?:?]
at org.eclipse.osgi.container.Module.publishEvent(Module.java:476) ~[?:?]
at org.eclipse.osgi.container.Module.doStop(Module.java:634) ~[?:?]
at org.eclipse.osgi.container.Module.stop(Module.java:498) ~[?:?]
at org.eclipse.osgi.container.ModuleContainer.uninstall(ModuleContainer.java:399) ~[?:?]
at org.eclipse.osgi.internal.framework.EquinoxBundle.uninstall(EquinoxBundle.java:446) ~[?:?]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.uninstall(DirectoryWatcher.java:1098) ~[?:?]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.uninstall(DirectoryWatcher.java:901) ~[?:?]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.doProcess(DirectoryWatcher.java:487) ~[?:?]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:365) ~[?:?]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:316) ~[?:?]
2018-11-26 11:02:20.608 [DEBUG] [org.openhab.voice.googletts ] - ServiceEvent UNREGISTERING - {org.eclipse.smarthome.core.voice.TTSService}={serviceAccountKey={
"type": "service_account",
"project_id": "my-project-1488966886274",
"private_key_id": "15bf40fb531d0e21830d012197195896db4908ee",
"private_key": "-----BEGIN PRIVATE KEY-----\xxx\n-----END PRIVATE KEY-----\n",
"client_email": "openhab@my-project-1488966886274.iam.gserviceaccount.com",
"client_id": "102878307864680662856",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/openhab%40my-project-1488966886274.iam.gserviceaccount.com"
}, service.id=123, service.bundleid=279, service.scope=bundle, component.name=org.openhab.voice.googletts.internal.GoogleTTSService, service.config.label=Google Cloud Text-to-Speech, pitch=0.0, component.id=28, purgeCache=false, volumeGain=0.0, speakingRate=1.0, service.config.category=voice, service.config.description.uri=voice:googletts, service.pid=org.openhab.voice.googletts} - org.openhab.voice.googletts
2018-11-26 11:02:20.726 [DEBUG] [org.openhab.voice.googletts ] - BundleEvent STOPPING - org.openhab.voice.googletts
2018-11-26 11:02:20.751 [DEBUG] [org.openhab.voice.googletts ] - ServiceEvent UNREGISTERING - {org.osgi.service.cm.ManagedService}={service.id=122, service.bundleid=279, service.scope=singleton} - org.openhab.voice.googletts
2018-11-26 11:02:20.770 [DEBUG] [org.openhab.voice.googletts ] - BundleEvent STOPPED - org.openhab.voice.googletts
2018-11-26 11:02:20.844 [DEBUG] [org.openhab.voice.googletts ] - BundleEvent UNRESOLVED - org.openhab.voice.googletts
2018-11-26 11:02:21.075 [DEBUG] [org.openhab.voice.googletts ] - BundleEvent UNINSTALLED - org.openhab.voice.googletts
2018-11-26 11:02:31.710 [DEBUG] [org.openhab.voice.googletts ] - BundleEvent INSTALLED - org.openhab.voice.googletts
2018-11-26 11:02:32.144 [DEBUG] [org.openhab.voice.googletts ] - BundleEvent RESOLVED - org.openhab.voice.googletts
2018-11-26 11:02:32.206 [DEBUG] [org.openhab.voice.googletts ] - ServiceEvent REGISTERED - {org.osgi.service.cm.ManagedService}={service.id=404, service.bundleid=280, service.scope=singleton} - org.openhab.voice.googletts
2018-11-26 11:02:32.519 [DEBUG] [org.openhab.voice.googletts ] - BundleEvent STARTING - org.openhab.voice.googletts
2018-11-26 11:02:32.528 [DEBUG] [org.openhab.voice.googletts ] - BundleEvent STARTED - org.openhab.voice.googletts
2018-11-26 11:02:32.547 [INFO ] [.googletts.internal.GoogleTTSService] - Using home folder: /var/lib/openhab2/googletts
2018-11-26 11:02:32.552 [INFO ] [.googletts.internal.GoogleTTSService] - Using cache folder /var/lib/openhab2/cache/org.openhab.voice.googletts
2018-11-26 11:02:32.569 [DEBUG] [.googletts.internal.GoogleTTSService] - Updating configuration
2018-11-26 11:02:32.574 [TRACE] [.googletts.internal.GoogleTTSService] - New configuration: GoogleTTSConfig{serviceAccountKey='{
"type": "service_account",
"project_id": "my-project-1488966886274",
"private_key_id": "15bf40fb531d0e21830d012197195896db4908ee",
"private_key": "-----BEGIN PRIVATE KEY-----\xxx\n-----END PRIVATE KEY-----\n",
"client_email": "openhab@my-project-1488966886274.iam.gserviceaccount.com",
"client_id": "102878307864680662856",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/openhab%40my-project-1488966886274.iam.gserviceaccount.com"
}', pitch=0.0, speakingRate=1.0, volumeGainDb=0.0, purgeCache=false}
2018-11-26 11:02:33.604 [ERROR] [org.openhab.voice.googletts ] - bundle org.openhab.voice.googletts:2.4.0.201811120148 (280)[org.openhab.voice.googletts.internal.GoogleTTSService(252)] : The activate method has thrown an exception
java.lang.NullPointerException: null
at org.openhab.voice.googletts.internal.GoogleCloudAPI.listVoices(GoogleCloudAPI.java:238) ~[?:?]
at org.openhab.voice.googletts.internal.GoogleCloudAPI.initVoices(GoogleCloudAPI.java:215) ~[?:?]
at org.openhab.voice.googletts.internal.GoogleCloudAPI.setConfig(GoogleCloudAPI.java:140) ~[?:?]
at org.openhab.voice.googletts.internal.GoogleTTSService.updateConfig(GoogleTTSService.java:220) ~[?:?]
at org.openhab.voice.googletts.internal.GoogleTTSService.activate(GoogleTTSService.java:126) ~[?:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?]
at org.apache.felix.scr.impl.inject.methods.BaseMethod.invokeMethod(BaseMethod.java:228) ~[39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.inject.methods.BaseMethod.access$500(BaseMethod.java:41) ~[39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.inject.methods.BaseMethod$Resolved.invoke(BaseMethod.java:664) ~[39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.inject.methods.BaseMethod.invoke(BaseMethod.java:510) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.inject.methods.ActivateMethod.invoke(ActivateMethod.java:317) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.inject.methods.ActivateMethod.invoke(ActivateMethod.java:307) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.SingleComponentManager.createImplementationObject(SingleComponentManager.java:334) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.SingleComponentManager.createComponent(SingleComponentManager.java:114) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:947) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:919) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:863) [39:org.apache.felix.scr:2.1.2]
at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse$1.run(ServiceFactoryUse.java:212) [?:?]
at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.factoryGetService(ServiceFactoryUse.java:210) [?:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.getService(ServiceFactoryUse.java:111) [?:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceConsumer$2.getService(ServiceConsumer.java:45) [?:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:508) [?:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:461) [?:?]
at org.eclipse.osgi.internal.framework.BundleContextImpl.getService(BundleContextImpl.java:624) [?:?]
at org.apache.felix.scr.impl.manager.SingleRefPair.getServiceObject(SingleRefPair.java:73) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.inject.BindParameters.getServiceObject(BindParameters.java:47) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.inject.methods.BindMethod.getServiceObject(BindMethod.java:662) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.DependencyManager.getServiceObject(DependencyManager.java:2304) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.DependencyManager.doInvokeBindMethod(DependencyManager.java:1801) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.DependencyManager.invokeBindMethod(DependencyManager.java:1784) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.SingleComponentManager.invokeBindMethod(SingleComponentManager.java:409) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.addedService(DependencyManager.java:333) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.addedService(DependencyManager.java:302) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1216) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1137) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.trackAdding(ServiceTracker.java:944) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.track(ServiceTracker.java:880) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:1168) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.BundleComponentActivator$ListenerInfo.serviceChanged(BundleComponentActivator.java:125) [39:org.apache.felix.scr:2.1.2]
at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:109) [?:?]
at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:920) [?:?]
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) [?:?]
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) [?:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:862) [?:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry$1.run(ServiceRegistry.java:805) [?:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry$1.run(ServiceRegistry.java:1) [?:?]
at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:803) [?:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:127) [?:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:225) [?:?]
at org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:469) [?:?]
at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:891) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:877) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.RegistrationManager.changeRegistration(RegistrationManager.java:128) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:944) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:727) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:661) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:427) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.manager.ConfigurableComponentHolder.enableComponents(ConfigurableComponentHolder.java:665) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.BundleComponentActivator.initialEnable(BundleComponentActivator.java:339) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:381) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.Activator.access$200(Activator.java:49) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.Activator$ScrExtension.start(Activator.java:263) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.AbstractExtender.createExtension(AbstractExtender.java:196) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.AbstractExtender.modifiedBundle(AbstractExtender.java:169) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.AbstractExtender.addingBundle(AbstractExtender.java:139) [39:org.apache.felix.scr:2.1.2]
at org.apache.felix.scr.impl.AbstractExtender.addingBundle(AbstractExtender.java:49) [39:org.apache.felix.scr:2.1.2]
at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:469) [?:?]
at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:415) [?:?]
at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256) [?:?]
at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229) [?:?]
at org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:444) [?:?]
at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:908) [?:?]
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) [?:?]
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) [?:?]
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:213) [?:?]
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher$1.run(EquinoxEventPublisher.java:124) [?:?]
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher$1.run(EquinoxEventPublisher.java:1) [?:?]
at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:122) [?:?]
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:112) [?:?]
at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:168) [?:?]
at org.eclipse.osgi.container.Module.publishEvent(Module.java:476) [?:?]
at org.eclipse.osgi.container.Module.start(Module.java:467) [?:?]
at org.eclipse.osgi.framework.util.SecureAction$23.run(SecureAction.java:474) [?:?]
at org.eclipse.osgi.framework.util.SecureAction$23.run(SecureAction.java:1) [?:?]
at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:472) [?:?]
at org.eclipse.osgi.container.ModuleContainer.start(ModuleContainer.java:750) [?:?]
at org.eclipse.osgi.container.ModuleContainer.applyDelta(ModuleContainer.java:741) [?:?]
at org.eclipse.osgi.container.ModuleContainer.resolveAndApply(ModuleContainer.java:511) [?:?]
at org.eclipse.osgi.container.ModuleContainer.resolve(ModuleContainer.java:457) [?:?]
at org.eclipse.osgi.container.ModuleContainer.refresh(ModuleContainer.java:1001) [?:?]
at org.eclipse.osgi.container.ModuleContainer$ContainerWiring.dispatchEvent(ModuleContainer.java:1382) [?:?]
at org.eclipse.osgi.container.ModuleContainer$ContainerWiring.dispatchEvent(ModuleContainer.java:1) [?:?]
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) [?:?]
at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340) [?:?]
2018-11-26 11:02:33.674 [INFO ] [.googletts.internal.GoogleTTSService] - Using home folder: /var/lib/openhab2/googletts
2018-11-26 11:02:33.665 [WARN ] [org.openhab.voice.googletts ] - FrameworkEvent WARNING - org.openhab.voice.googletts
org.osgi.framework.ServiceException: org.apache.felix.scr.impl.manager.SingleComponentManager.getService() returned a null service object
at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.factoryGetService(ServiceFactoryUse.java:232) ~[?:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.getService(ServiceFactoryUse.java:111) ~[?:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceConsumer$2.getService(ServiceConsumer.java:45) ~[?:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:508) ~[?:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:461) ~[?:?]
at org.eclipse.osgi.internal.framework.BundleContextImpl.getService(BundleContextImpl.java:624) ~[?:?]
at org.apache.felix.scr.impl.manager.SingleRefPair.getServiceObject(SingleRefPair.java:73) ~[?:?]
at org.apache.felix.scr.impl.inject.BindParameters.getServiceObject(BindParameters.java:47) ~[?:?]
at org.apache.felix.scr.impl.inject.methods.BindMethod.getServiceObject(BindMethod.java:662) ~[?:?]
at org.apache.felix.scr.impl.manager.DependencyManager.getServiceObject(DependencyManager.java:2304) ~[?:?]
at org.apache.felix.scr.impl.manager.DependencyManager.doInvokeBindMethod(DependencyManager.java:1801) ~[?:?]
at org.apache.felix.scr.impl.manager.DependencyManager.invokeBindMethod(DependencyManager.java:1784) ~[?:?]
at org.apache.felix.scr.impl.manager.SingleComponentManager.invokeBindMethod(SingleComponentManager.java:409) ~[?:?]
at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.addedService(DependencyManager.java:333) ~[?:?]
at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.addedService(DependencyManager.java:302) ~[?:?]
at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1216) ~[?:?]
at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1137) ~[?:?]
at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.trackAdding(ServiceTracker.java:944) ~[?:?]
at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.track(ServiceTracker.java:880) ~[?:?]
at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:1168) ~[?:?]
at org.apache.felix.scr.impl.BundleComponentActivator$ListenerInfo.serviceChanged(BundleComponentActivator.java:125) ~[?:?]
at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:109) ~[?:?]
at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:920) ~[?:?]
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) ~[?:?]
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) ~[?:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:862) ~[?:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry$1.run(ServiceRegistry.java:805) ~[?:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry$1.run(ServiceRegistry.java:1) ~[?:?]
at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:803) ~[?:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:127) ~[?:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:225) ~[?:?]
at org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:469) ~[?:?]
at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:891) ~[?:?]
at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:877) ~[?:?]
at org.apache.felix.scr.impl.manager.RegistrationManager.changeRegistration(RegistrationManager.java:128) ~[?:?]
at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:944) ~[?:?]
at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:727) ~[?:?]
at org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:661) ~[?:?]
at org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:427) ~[?:?]
at org.apache.felix.scr.impl.manager.ConfigurableComponentHolder.enableComponents(ConfigurableComponentHolder.java:665) ~[?:?]
at org.apache.felix.scr.impl.BundleComponentActivator.initialEnable(BundleComponentActivator.java:339) ~[?:?]
at org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:381) ~[?:?]
at org.apache.felix.scr.impl.Activator.access$200(Activator.java:49) ~[?:?]
at org.apache.felix.scr.impl.Activator$ScrExtension.start(Activator.java:263) ~[?:?]
at org.apache.felix.scr.impl.AbstractExtender.createExtension(AbstractExtender.java:196) ~[?:?]
at org.apache.felix.scr.impl.AbstractExtender.modifiedBundle(AbstractExtender.java:169) ~[?:?]
at org.apache.felix.scr.impl.AbstractExtender.addingBundle(AbstractExtender.java:139) ~[?:?]
at org.apache.felix.scr.impl.AbstractExtender.addingBundle(AbstractExtender.java:49) ~[?:?]
at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:469) ~[?:?]
at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:415) ~[?:?]
at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256) ~[?:?]
at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229) ~[?:?]
at org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:444) ~[?:?]
at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:908) [?:?]
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) ~[?:?]
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) ~[?:?]
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:213) ~[?:?]
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher$1.run(EquinoxEventPublisher.java:124) ~[?:?]
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher$1.run(EquinoxEventPublisher.java:1) ~[?:?]
at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:122) ~[?:?]
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:112) ~[?:?]
at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:168) ~[?:?]
at org.eclipse.osgi.container.Module.publishEvent(Module.java:476) ~[?:?]
at org.eclipse.osgi.container.Module.start(Module.java:467) ~[?:?]
at org.eclipse.osgi.framework.util.SecureAction$23.run(SecureAction.java:474) ~[?:?]
at org.eclipse.osgi.framework.util.SecureAction$23.run(SecureAction.java:1) ~[?:?]
at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:472) ~[?:?]
at org.eclipse.osgi.container.ModuleContainer.start(ModuleContainer.java:750) ~[?:?]
at org.eclipse.osgi.container.ModuleContainer.applyDelta(ModuleContainer.java:741) ~[?:?]
at org.eclipse.osgi.container.ModuleContainer.resolveAndApply(ModuleContainer.java:511) ~[?:?]
at org.eclipse.osgi.container.ModuleContainer.resolve(ModuleContainer.java:457) ~[?:?]
at org.eclipse.osgi.container.ModuleContainer.refresh(ModuleContainer.java:1001) ~[?:?]
at org.eclipse.osgi.container.ModuleContainer$ContainerWiring.dispatchEvent(ModuleContainer.java:1382) ~[?:?]
at org.eclipse.osgi.container.ModuleContainer$ContainerWiring.dispatchEvent(ModuleContainer.java:1) ~[?:?]
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) [?:?]
at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340) [?:?]
i replace in log my private key with xxx.
Maybe the account/permissions are not correct so it doesn’t return voices?
After the review I added several null checks (which aren’t in the JAR). So that NullPointerException is already fixed. Though it won’t list any voices if it occurs:
Yes, in PaperUI System / TTS have not voices in select box.
I have it I did not have API enabled on Google TTS cloud.
now voices have been downloadet.
But I need Czech and it is not there.
In next thread its voices report with CS
googletts:cs GoogleTTS - Tschechisch
Why is not Czech in my google TTS? Thx
That’s good news!
The post you linked to was about the initial implementation of a googletts voice addon that was using Google Translate instead of the newer Google Cloud TTS engine. I.e.:
Yes,this is it.
Google Translate instead its fine for me (available czech language) and its free.
I try unninstal TTS 2.4 and install 2.3 with translate services.
When create test rule
rule "test"
when
Time cron "0 * * * * ?"
then
logInfo("vstup", "minuta")
say("ahoj")
end
show in log:
2018-11-26 14:51:05.483 [ERROR] [ntime.internal.engine.ExecuteRuleJob] - Error during the execution of rule 'test': For input string: "TKK='428677.1320964712';VERSION_LABEL = 'twsfe_w_20181112_RC02';WEB_TRANSLATION_PATH='/translate';SIGNED_IN=false;USAGE='';</script><div id=gt-form-c><form id=gt-form action="/" name=text_form method=post enctype="application/x-www-form-urlencoded"><div id=gt-appbar><div id=gt-apb-c><div id=gt-apb-main><a id=gt-appname href="/">Translate</a><span id=ft-l><a id=gt-otf-switch class="gt-otf-switch-with-pb" href="/?hl=en&eotf=0">Turn off instant translation</a></span></div></div></div><div id=gt-text-all><div id=gt-main><div id=gt-text-c><div id=gt-langs><div id=gt-lang-left class=goog-inline-block><div id=gt-lang-src><div id=gt-sl-sugg class="gt-lang-sugg-message goog-inline-block je"><div class="goog-inline-block jfk-button jfk-button-standard jfk-button-collapse-right">English</div><div class="goog-inline-block jfk-button jfk-button-standard jfk-button-collapse-left jfk-button-collapse-right">Spanish</div><div class="goog-inline-block jfk-button jfk-button-standard jfk-button-collapse-left jfk-button-collapse-right">French</div><div class="goog-inline-block jfk-button jfk-button-standard jfk-button-checked jfk-button-collapse-left jfk-button-collapse-right">Detect language</div></div><label for=gt-sl class="gt-lang-lbl nje"></label><select id=gt-sl name=sl class="jfk-button jfk-button-standard nje" tabindex=0><option SELECTED value=auto>Detect language</option><option value=separator disabled>—</option><option value=af>Afrikaans</option><option value=sq>Albanian</option><option value=am>Amharic</option><option value=ar>Arabic</option><option value=hy>Armenian</option><option value=az>Azerbaijani</option><option value=eu>Basque</option><option value=be>Belarusian</option><option value=bn>Bengali</option><option value=bs>Bosnian</option><option value=bg>Bulgarian</option><option value=ca>Catalan</option><option value=ceb>Cebuano</option><option value=ny>Chichewa</option><option value=zh-CN>Chinese</option><option value=co>Corsican</option><option value=hr>Croatian</option><option value=cs>Czech</option><option value=da>Danish</option><option value=nl>Dutch</option><option value=en>English</option><option value=eo>Esperanto</option><option value=et>Estonian</option><option value=tl>Filipino</option><option value=fi>Finnish</option><option value=fr>French</option><option value=fy>Frisian</option><option value=gl>Galician</option><option value=ka>Georgian</option><option value=de>German</option><option value=el>Greek</option><option value=gu>Gujarati</option><option value=ht>Haitian Creole</option><option value=ha>Hausa</option><option value=haw>Hawaiian</option><option value=iw>Hebrew</option><option value=hi>Hindi</option><option value=hmn>Hmong</option><option value=hu>Hungarian</option><option value=is>Icelandic</option><option value=ig>Igbo</option><option value=id>Indonesian</option><option value=ga>Irish</option><option value=it>Italian</option><option value=ja>Japanese</option><option value=jw>Javanese</option><option value=kn>Kannada</option><option value=kk>Kazakh</option><option value=km>Khmer</option><option value=ko>Korean</option><option value=ku>Kurdish (Kurmanji)</option><option value=ky>Kyrgyz</option><option value=lo>Lao</option><option value=la>Latin</option><option value=lv>Latvian</option><option value=lt>Lithuanian</option><option value=lb>Luxembourgish</option><option value=mk>Macedonian</option><option value=mg>Malagasy</option><option value=ms>Malay</option><option value=ml>Malayalam</option><option value=mt>Maltese</option><option value=mi>Maori</option><option value=mr>Marathi</option><option value=mn>Mongolian</option><option value=my>Myanmar (Burmese)</option><option value=ne>Nepali</option><option value=no>Norwegian</option><option value=ps>Pashto</option><option value=fa>Persian</option><option value=pl>Polish</option><option value=pt>Portuguese</option><option value=pa>Punjabi</option><option value=ro>Romanian</option><option value=ru>Russian</option><option value=sm>Samoan</option><option value=gd>Scots Gaelic</option><option value=sr>Serbian</option><option value=st>Sesotho</option><option value=sn>Shona</option><option value=sd>Sindhi</option><option value=si>Sinhala</option><option value=sk>Slovak</option><option value=sl>Slovenian</option><option value=so>Somali</option><option SELECTED value=es>Spanish</option><option value=su>Sundanese</option><option value=sw>Swahili</option><option value=sv>Swedish</option><option value=tg>Tajik</option><option value=ta>Tamil</option><option value=te>Telugu</option><option value=th>Thai</option><option value=tr>Turkish</option><option value=uk>Ukrainian</option><option value=ur>Urdu</option><option value=uz>Uzbek</option><option value=vi>Vietnamese</option><option value=cy>Welsh</option><option value=xh>Xhosa</option><option value=yi>Yiddish</option><option value=yo>Yoruba</option><option value=zu>Zulu</option></select><div id="gt-sl-gms" class="goog-inline-block goog-flat-menu-button goog-flat-menu-button-collapse-left gt-gms-icon je"><div class="goog-inline-block goog-flat-menu-button-caption"> </div><div class="goog-inline-block goog-flat-menu-button-dropdown"></div></div></div><div id=gt-swap title="Swap languages"class="jfk-button-standard jfk-button-narrow jfk-button jfk-button-disabled trans-swap-button je"><span class="jfk-button-img"></span></div></div><div id=gt-lang-right class=goog-inline-block><div id=gt-lang-tgt><div id=gt-tl-sugg class="gt-lang-sugg-message goog-inline-block je"><div class="goog-inline-block jfk-button jfk-button-standard jfk-button-checked jfk-button-collapse-right">English</div><div class="goog-inline-block jfk-button jfk-button-standard jfk-button-collapse-left jfk-button-collapse-right">Spanish</div><div class="goog-inline-block jfk-button jfk-button-standard jfk-button-collapse-left jfk-button-collapse-right">French</div></div><label for=gt-tl class="gt-lang-lbl nje"></label><select id=gt-tl name=tl class="jfk-button jfk-button-standard nje" tabindex=0><option value=af>Afrikaans</option><option value=sq>Albanian</option><option value=am>Amharic</option><option value=ar>Arabic</option><option value=hy>Armenian</option><option value=az>Azerbaijani</option><option value=eu>Basque</option><option value=be>Belarusian</option><option value=bn>Bengali</option><option value=bs>Bosnian</option><option value=bg>Bulgarian</option><option value=ca>Catalan</option><option value=ceb>Cebuano</option><option value=ny>Chichewa</option><option value=zh-CN>Chinese (Simplified)</option><option value=zh-TW>Chinese (Traditional)</option><option value=co>Corsican</option><option value=hr>Croatian</option><option value=cs>Czech</option><option value=da>Danish</option><option value=nl>Dutch</option><option SELECTED value=en>English</option><option value=eo>Esperanto</option><option value=et>Estonian</option><option value=tl>Filipino</option><option value=fi>Finnish</option><option value=fr>French</option><option value=fy>Frisian</option><option value=gl>Galician</option><option value=ka>Georgian</option><option value=de>German</option><option value=el>Greek</option><option value=gu>Gujarati</option><option value=ht>Haitian Creole</option><option value=ha>Hausa</option><option value=haw>Hawaiian</option><option value=iw>Hebrew</option><option value=hi>Hindi</option><option value=hmn>Hmong</option><option value=hu>Hungarian</option><option value=is>Icelandic</option><option value=ig>Igbo</option><option value=id>Indonesian</option><option value=ga>Irish</option><option value=it>Italian</option><option value=ja>Japanese</option><option value=jw>Javanese</option><option value=kn>Kannada</option><option value=kk>Kazakh</option><option value=km>Khmer</option><option value=ko>Korean</option><option value=ku>Kurdish (Kurmanji)</option><option value=ky>Kyrgyz</option><option value=lo>Lao</option><option value=la>Latin</option><option value=lv>Latvian</option><option value=lt>Lithuanian</option><option value=lb>Luxembourgish</option><option value=mk>Macedonian</option><option value=mg>Malagasy</option><option value=ms>Malay</option><option value=ml>Malayalam</option><option value=mt>Maltese</option><option value=mi>Maori</option><option value=mr>Marathi</option><option value=mn>Mongolian</option><option value=my>Myanmar (Burmese)</option><option value=ne>Nepali</option><option value=no>Norwegian</option><option value=ps>Pashto</option><option value=fa>Persian</option><option value=pl>Polish</option><option value=pt>Portuguese</option><option value=pa>Punjabi</option><option value=ro>Romanian</option><option value=ru>Russian</option><option value=sm>Samoan</option><option value=gd>Scots Gaelic</option><option value=sr>Serbian</option><option value=st>Sesotho</option><option value=sn>Shona</option><option value=sd>Sindhi</option><option value=si>Sinhala</option><option value=sk>Slovak</option><option value=sl>Slovenian</option><option value=so>Somali</option><option value=es>Spanish</option><option value=su>Sundanese</option><option value=sw>Swahili</option><option value=sv>Swedish</option><option value=tg>Tajik</option><option value=ta>Tamil</option><option value=te>Telugu</option><option value=th>Thai</option><option value=tr>Turkish</option><option value=uk>Ukrainian</option><option value=ur>Urdu</option><option value=uz>Uzbek</option><option value=vi>Vietnamese</option><option value=cy>Welsh</option><option value=xh>Xhosa</option><option value=yi>Yiddish</option><option value=yo>Yoruba</option><option value=zu>Zulu</option></select><div id="gt-tl-gms" class="goog-inline-block goog-flat-menu-button goog-flat-menu-button-collapse-left gt-gms-icon je"><div class="goog-inline-block goog-flat-menu-button-caption"> </div><div class="goog-inline-block goog-flat-menu-button-dropdown"></div></div></div><div id=gt-lang-submit><input type=submit id=gt-submit value="Translate" tabindex=0 class="jfk-button jfk-button-action"></div></div></div><div id=gt-text-top><div id=gt-src-c class=g-unit><div id=gt-src-p><input type=hidden name=js value=n id=js><input type=hidden name=prev value="_t" id=prev><input type=hidden name=hl value="en" id=hl><input type=hidden name=ie value="UTF-8"><div id=gt-src-wrap ><label for=source style="display:none">Translate text or webpage</label><div id=gt-src-is style="display:none" class="gt-is gt-is-desktop"><div id=gt-src-is-list class=gt-is-ctr></div></div><div style="width: 100%;"><textarea id=source name=text wrap=SOFT tabindex=0 dir="ltr" spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off"></textarea><textarea id=source-is name=text-is disabled wrap=SOFT dir="ltr" spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" ></textarea></div><script>(function(){var src = document.getElementById('source');src.focus();src.select();src.style.boxSizing=src.style.WebkitBoxSizing=src.style.MozBoxSizing=src.style.MsBoxSizing='border-box';})"
Confirm the snapshot is working properly in an QNAP VM x86_32:
$ uname -a
Linux openHAB 4.4.0-138-generic #164-Ubuntu SMP Wed Oct 3 15:02:00 UTC 2018 i686 i686 i686 GNU/Linux
Thanks for your answer
i think that i have done it in the right way
please correct me on the process in case that i am missing something
- uninstall from paper ui
- stop openhab service
- copy the jar file to
/usr/share/openhab2/addons
- start openhab service
You may want to clean cache & tmp also after step 2.
check using the OH2 console if only 1 bundle is listed as active:
bundle:list -s|grep googletts
Thanks it works
indeed, i had 2 bundles. i removed it from the console.
The steps procedure :
- uninstall from paper ui
- stop openhab service
- clean cache & tmp
- copy the jar file to
/usr/share/openhab2/addons
- start openhab service
- check using the OH2 console if only 1 bundle is listed as active:
The procedure is now simplified since the changes got merged and are available in the latest 2.4.0-SNAPSHOT Build #1446.
help me please with googleTTS 2.3 with translate services.
When create rule with command say(“xx”) show in log:
2018-11-26 14:51:05.483 [ERROR] [ntime.internal.engine.ExecuteRuleJob] - Error during the execution of rule 'test': For input string: "TKK='428677.1320964712';VERSION_LABEL = 'twsfe_w_20181112_RC02';WEB_TRANSLATION_PATH='/translate';SIGNED_IN=false;USAGE='';</script><div id=gt-form-c><form id=gt-form action="/" name=text_form method=post enctype="application/x-www-form-urlencoded"><div id=gt-appbar><div id=gt-apb-c><div id=gt-apb-main><a id=gt-appname href="/">Translate</a><span id=ft-l><a id=gt-otf-switch class="gt-otf-switch-with-pb" href="/?hl=en&eotf=0">Turn off instant translation</a></span></div></div></div><div id=gt-text-all><div id=gt-main><div id=gt-text-c><div id=gt-langs><div id=gt-lang-left class=goog-inline-block><div id=gt-lang-src><div id=gt-sl-sugg class="gt-lang-sugg-message goog-inline-block je"><div class="goog-inline-block jfk-button jfk-button-standard jfk-button-collapse-right">English</div><div class="goog-inline-block jfk-button jfk-button-standard jfk-button-collapse-left jfk-button-collapse-right">Spanish</div><div class="goog-inline-block jfk-button jfk-button-standard jfk-button-collapse-left jfk-button-collapse-right">French</div><div class="goog-inline-block jfk-button jfk-button-standard jfk-button-checked jfk-button-collapse-left jfk-button-collapse-right">Detect language</div></div><label for=gt-sl class="gt-lang-lbl nje"></label><select id=gt-sl name=sl class="jfk-button jfk-button-standard nje" tabindex=0><option SELECTED value=auto>Detect language</option><option value=separator disabled>—</option><option value=af>Afrikaans</option><option value=sq>Albanian</option><option value=am>Amharic</option><option value=ar>Arabic</option><option value=hy>Armenian</option><option value=az>Azerbaijani</option><option value=eu>Basque</option><option value=be>Belarusian</option><option value=bn>Bengali</option><option value=bs>Bosnian</option><option value=bg>Bulgarian</option><option value=ca>Catalan</option><option value=ceb>Cebuano</option><option value=ny>Chichewa</option><option value=zh-CN>Chinese</option><option value=co>Corsican</option><option value=hr>Croatian</option><option value=cs>Czech</option><option value=da>Danish</option><option value=nl>Dutch</option><option value=en>English</option><option value=eo>Esperanto</option><option value=et>Estonian</option><option value=tl>Filipino</option><option value=fi>Finnish</option><option value=fr>French</option><option value=fy>Frisian</option><option value=gl>Galician</option><option value=ka>Georgian</option><option value=de>German</option><option value=el>Greek</option><option value=gu>Gujarati</option><option value=ht>Haitian Creole</option><option value=ha>Hausa</option><option value=haw>Hawaiian</option><option value=iw>Hebrew</option><option value=hi>Hindi</option><option value=hmn>Hmong</option><option value=hu>Hungarian</option><option value=is>Icelandic</option><option value=ig>Igbo</option><option value=id>Indonesian</option><option value=ga>Irish</option><option value=it>Italian</option><option value=ja>Japanese</option><option value=jw>Javanese</option><option value=kn>Kannada</option><option value=kk>Kazakh</option><option value=km>Khmer</option><option value=ko>Korean</option><option value=ku>Kurdish (Kurmanji)</option><option value=ky>Kyrgyz</option><option value=lo>Lao</option><option value=la>Latin</option><option value=lv>Latvian</option><option value=lt>Lithuanian</option><option value=lb>Luxembourgish</option><option value=mk>Macedonian</option><option value=mg>Malagasy</option><option value=ms>Malay</option><option value=ml>Malayalam</option><option value=mt>Maltese</option><option value=mi>Maori</option><option value=mr>Marathi</option><option value=mn>Mongolian</option><option value=my>Myanmar (Burmese)</option><option value=ne>Nepali</option><option value=no>Norwegian</option><option value=ps>Pashto</option><option value=fa>Persian</option><option value=pl>Polish</option><option value=pt>Portuguese</option><option value=pa>Punjabi</option><option value=ro>Romanian</option><option value=ru>Russian</option><option value=sm>Samoan</option><option value=gd>Scots Gaelic</option><option value=sr>Serbian</option><option value=st>Sesotho</option><option value=sn>Shona</option><option value=sd>Sindhi</option><option value=si>Sinhala</option><option value=sk>Slovak</option><option value=sl>Slovenian</option><option value=so>Somali</option><option SELECTED value=es>Spanish</option><option value=su>Sundanese</option><option value=sw>Swahili</option><option value=sv>Swedish</option><option value=tg>Tajik</option><option value=ta>Tamil</option><option value=te>Telugu</option><option value=th>Thai</option><option value=tr>Turkish</option><option value=uk>Ukrainian</option><option value=ur>Urdu</option><option value=uz>Uzbek</option><option value=vi>Vietnamese</option><option value=cy>Welsh</option><option value=xh>Xhosa</option><option value=yi>Yiddish</option><option value=yo>Yoruba</option><option value=zu>Zulu</option></select><div id="gt-sl-gms" class="goog-inline-block goog-flat-menu-button goog-flat-menu-button-collapse-left gt-gms-icon je"><div class="goog-inline-block goog-flat-menu-button-caption"> </div><div class="goog-inline-block goog-flat-menu-button-dropdown"></div></div></div><div id=gt-swap title="Swap languages"class="jfk-button-standard jfk-button-narrow jfk-button jfk-button-disabled trans-swap-button je"><span class="jfk-button-img"></span></div></div><div id=gt-lang-right class=goog-inline-block><div id=gt-lang-tgt><div id=gt-tl-sugg class="gt-lang-sugg-message goog-inline-block je"><div class="goog-inline-block jfk-button jfk-button-standard jfk-button-checked jfk-button-collapse-right">English</div><div class="goog-inline-block jfk-button jfk-button-standard jfk-button-collapse-left jfk-button-collapse-right">Spanish</div><div class="goog-inline-block jfk-button jfk-button-standard jfk-button-collapse-left jfk-button-collapse-right">French</div></div><label for=gt-tl class="gt-lang-lbl nje"></label><select id=gt-tl name=tl class="jfk-button jfk-button-standard nje" tabindex=0><option value=af>Afrikaans</option><option value=sq>Albanian</option><option value=am>Amharic</option><option value=ar>Arabic</option><option value=hy>Armenian</option><option value=az>Azerbaijani</option><option value=eu>Basque</option><option value=be>Belarusian</option><option value=bn>Bengali</option><option value=bs>Bosnian</option><option value=bg>Bulgarian</option><option value=ca>Catalan</option><option value=ceb>Cebuano</option><option value=ny>Chichewa</option><option value=zh-CN>Chinese (Simplified)</option><option value=zh-TW>Chinese (Traditional)</option><option value=co>Corsican</option><option value=hr>Croatian</option><option value=cs>Czech</option><option value=da>Danish</option><option value=nl>Dutch</option><option SELECTED value=en>English</option><option value=eo>Esperanto</option><option value=et>Estonian</option><option value=tl>Filipino</option><option value=fi>Finnish</option><option value=fr>French</option><option value=fy>Frisian</option><option value=gl>Galician</option><option value=ka>Georgian</option><option value=de>German</option><option value=el>Greek</option><option value=gu>Gujarati</option><option value=ht>Haitian Creole</option><option value=ha>Hausa</option><option value=haw>Hawaiian</option><option value=iw>Hebrew</option><option value=hi>Hindi</option><option value=hmn>Hmong</option><option value=hu>Hungarian</option><option value=is>Icelandic</option><option value=ig>Igbo</option><option value=id>Indonesian</option><option value=ga>Irish</option><option value=it>Italian</option><option value=ja>Japanese</option><option value=jw>Javanese</option><option value=kn>Kannada</option><option value=kk>Kazakh</option><option value=km>Khmer</option><option value=ko>Korean</option><option value=ku>Kurdish (Kurmanji)</option><option value=ky>Kyrgyz</option><option value=lo>Lao</option><option value=la>Latin</option><option value=lv>Latvian</option><option value=lt>Lithuanian</option><option value=lb>Luxembourgish</option><option value=mk>Macedonian</option><option value=mg>Malagasy</option><option value=ms>Malay</option><option value=ml>Malayalam</option><option value=mt>Maltese</option><option value=mi>Maori</option><option value=mr>Marathi</option><option value=mn>Mongolian</option><option value=my>Myanmar (Burmese)</option><option value=ne>Nepali</option><option value=no>Norwegian</option><option value=ps>Pashto</option><option value=fa>Persian</option><option value=pl>Polish</option><option value=pt>Portuguese</option><option value=pa>Punjabi</option><option value=ro>Romanian</option><option value=ru>Russian</option><option value=sm>Samoan</option><option value=gd>Scots Gaelic</option><option value=sr>Serbian</option><option value=st>Sesotho</option><option value=sn>Shona</option><option value=sd>Sindhi</option><option value=si>Sinhala</option><option value=sk>Slovak</option><option value=sl>Slovenian</option><option value=so>Somali</option><option value=es>Spanish</option><option value=su>Sundanese</option><option value=sw>Swahili</option><option value=sv>Swedish</option><option value=tg>Tajik</option><option value=ta>Tamil</option><option value=te>Telugu</option><option value=th>Thai</option><option value=tr>Turkish</option><option value=uk>Ukrainian</option><option value=ur>Urdu</option><option value=uz>Uzbek</option><option value=vi>Vietnamese</option><option value=cy>Welsh</option><option value=xh>Xhosa</option><option value=yi>Yiddish</option><option value=yo>Yoruba</option><option value=zu>Zulu</option></select><div id="gt-tl-gms" class="goog-inline-block goog-flat-menu-button goog-flat-menu-button-collapse-left gt-gms-icon je"><div class="goog-inline-block goog-flat-menu-button-caption"> </div><div class="goog-inline-block goog-flat-menu-button-dropdown"></div></div></div><div id=gt-lang-submit><input type=submit id=gt-submit value="Translate" tabindex=0 class="jfk-button jfk-button-action"></div></div></div><div id=gt-text-top><div id=gt-src-c class=g-unit><div id=gt-src-p><input type=hidden name=js value=n id=js><input type=hidden name=prev value="_t" id=prev><input type=hidden name=hl value="en" id=hl><input type=hidden name=ie value="UTF-8"><div id=gt-src-wrap ><label for=source style="display:none">Translate text or webpage</label><div id=gt-src-is style="display:none" class="gt-is gt-is-desktop"><div id=gt-src-is-list class=gt-is-ctr></div></div><div style="width: 100%;"><textarea id=source name=text wrap=SOFT tabindex=0 dir="ltr" spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off"></textarea><textarea id=source-is name=text-is disabled wrap=SOFT dir="ltr" spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" ></textarea></div><script>(function(){var src = document.getElementById('source');src.focus();src.select();src.style.boxSizing=src.style.WebkitBoxSizing=src.style.MozBoxSizing=src.style.MsBoxSizing='border-box';})"
Please add Hungarian to Google TTS.
Does this still require a download of a jar or is the Google Cloud TTS voice addon in OpenHAB 2.4 the same?
Thanks
JR
It should be available via PaperUI in 2.4+