我构建了一个简单的应用程序来识别语音并说出结果。但是当我通过 Buildozer 用 python 文件制作 APK 时,tts 成功了,但 stt 即语音识别不起作用。我在这里使用的语音转文本和 TTS 库是 Plyer
这是代码:
import kivy
from kivy.app import App
from kivy.uix.switch import Switch
from kivy.uix.gridlayout import GridLayout
from kivy.uix.label import Label
from kivy.uix.image import Image
class SwitchContainer(GridLayout):
def __init__(self, **kwargs):
super(SwitchContainer, self).__init__(**kwargs)
self.cols = 1
self.add_widget(Label(text="speech recognizer", pos_hint= {'x': 5, 'y':
5,"right":5,"top":50},font_size= '90sp'))
self.settings_sample = Switch(active=False)
self.add_widget(self.settings_sample)
self.settings_sample.bind(active=switch_callback)
def switch_callback(switchObject, switchValue):
print('Value of sample settings is:', switchValue)
if(switchValue):
from plyer import tts
tts.speak('hello, will you please tell me the port')
try:
from plyer import stt
stt.start()
sst.stop()
from plyer import tts
tts.speak(stt.results)
except Exception as e:
from plyer import tts
tts.speak(' sir,its not working')
else:
print("off")
class SwitchExample(App):
def build(self):
return SwitchContainer()
# Run the kivy app
if __name__ == '__main__':
SwitchExample().run()
此应用程序的GUI仅包含一个按钮,当打开语音时被识别并通过TTS说出结果,或者如果发现任何错误,它会告诉"先生,它不起作用。我在这里做错了什么。
我遇到了同样的问题,但它已经解决了 只需按照以下步骤操作
1> 在安卓上安装应用程序 2>安装后找到应用程序并长按,因此您将获得两个选项 a>应用程序信息 b>卸载并单击应用程序信息 3>在"应用信息"中转到打开麦克风的权限 4> 重新启动应用程序并检查
它对我有用!!
或 您也可以在 Python 代码中授予对应用程序的运行时权限
from android.permissions import request_permissions, Permission
class SwitchExample(App):
def build(self):
return SwitchContainer()
# in SwitchExampleApp class
def on_start(self):
request_permissions([Permission.RECORD_AUDIO])
# In buildozer.spec file you have to give android.permissions = RECORD_AUDIO for speech to text
在您的应用中尝试上述代码。您可能会在Windows上收到错误(因为这仅适用于Android(,但是转换为Android后,您将在首次打开麦克风时获得麦克风权限。
您可以在上面的代码中授予多个权限 检查这个 python-for-android 和这个 Android Apk 的各种权限。
还有一件事>>在buildozer.spec中,你必须给出requirements=python3,kivy,plyer # if you are using plyer