『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 61721|回复: 129

[技术讨论] 基于Edge浏览器的微软TTS插件,无需app_key

  [复制链接]

6

主题

267

帖子

2379

积分

论坛技术达人

积分
2379
金钱
2092
HASS币
90
发表于 2021-9-28 14:45:24 | 显示全部楼层 |阅读模式
本帖最后由 anlong 于 2022-2-21 19:04 编辑

插件地址:https://github.com/hasscc/hass-edge-tts

本插件基于Edge浏览器的TTS服务,无需在微软Azure申请app_key等。且可指定声音、语气、角色、银两、语速等选项。

安装:
下载并复制`custom_components/edge_tts`文件夹到HomeAssistant根目录下的`custom_components`文件夹,也可通过下面的shell命令安装:
wget -q -O - https://cdn.jsdelivr.net/gh/al-one/hass-xiaomi-miot/install.sh | DOMAIN=edge_tts REPO_PATH=hasscc/hass-edge-tts ARCHIVE_TAG=main bash -

配置:
# configuration.yaml
tts:
  - platform: edge_tts
    language: zh-CN # 默认语言或声音(可选)

支持的语言:
- zh-CN
- zh-CN-XiaoxiaoNeural
- zh-CN-YunyangNeural
- zh-CN-YunyeNeural
- zh-CN-YunxiNeural
- zh-CN-XiaohanNeural
- zh-CN-XiaomoNeural
- zh-CN-XiaoxuanNeural
- zh-CN-XiaoruiNeural
- zh-HK
- zh-HK-HiuMaanNeural
- zh-TW
- zh-TW-HsiaoChenNeural

选项:
  • voice: 声音
  • style: 语气
  • styledegree: 语气强度,范围:0.01 - 2,仅普通话可用
  • role: 角色,仅`zh-CN-XiaomoNeural`和`zh-CN-XiaoxuanNeural`可用
  • 调整韵律(`pitch`、`rate`、`volume`)



基础使用示例:
以下代码不是写到配置文件中,可以在[开发者工具] -> [服务]中来执行,也可以在自动化、脚本、自定义卡片中调用。
service: tts.edge_tts_say
data:
  entity_id: media_player.your_player_entity_id
  message: 你好
  language: zh-CN-XiaoxiaoNeural # 语言或声音(可选)

完整使用示例:
service: tts.edge_tts_say
data:
  entity_id: media_player.your_player_entity_id
  message: 吃葡萄不吐葡萄皮,不吃葡萄倒吐葡萄皮
  language: zh-CN
  cache: true
  options:
    voice: zh-CN-XiaomoNeural
    style: cheerful
    styledegree: 2
    role: Girl
    pitch: +0Hz
    rate: +0%
    volume: +10%

评分

参与人数 20金钱 +178 HASS币 +20 收起 理由
vico + 2 感谢楼主分享!
tink + 8 高手,这是高手!
rickyxrc + 2 感谢楼主分享!
summ99111 + 1 感谢楼主分享!
chiunownow + 10 感谢楼主分享!
隔壁老崔 + 5
allenalex + 5 感谢楼主分享!
eric + 16 感谢楼主分享!
毅力10分够不够 + 3 论坛有你更精彩!
gzroc + 10 论坛有你更精彩!
EDAD + 5 感谢楼主分享!
jyz_0501 + 20 感谢楼主分享!
woaifunta + 5
+ 20 + 20 膜拜大神!
aexyun + 5 厉害了word楼主!
jpcugv + 5 纳尼,还有这种操作?
Tao173 + 10 大神666!
diba.qiu + 10 论坛有你更精彩!
XCray + 20 迄今最好的TTS!
dscao + 16 厉害了word楼主!测试了一下很好用,感谢分.

查看全部评分

小米MIoT插件:miot-spec.com
回复

使用道具 举报

105

主题

2954

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
12103
金钱
9084
HASS币
460

教程狂人突出贡献

发表于 2021-9-28 14:57:41 来自手机 | 显示全部楼层

这是迄今为止HA上效果最好、使用最方便的TTS组件!

本帖最后由 XCray 于 2021-9-28 17:52 编辑

好!楼主给力!

评分

参与人数 1金钱 +10 收起 理由
anlong + 10 论坛有你更精彩!

查看全部评分

回复

使用道具 举报

0

主题

19

帖子

76

积分

注册会员

Rank: 2

积分
76
金钱
57
HASS币
0
发表于 2024-11-6 14:40:21 | 显示全部楼层
感谢分享
回复

使用道具 举报

0

主题

3

帖子

58

积分

注册会员

Rank: 2

积分
58
金钱
55
HASS币
0
发表于 2024-10-31 21:30:40 | 显示全部楼层
我部署好了之后,调用提示未知错误。
日志记录器: homeassistant.components.websocket_api.http.connection
来源: components/apple_tv/media_player.py:345
集成: Home Assistant WebSocket API (文档, 问题)
首次出现: 21:09:28 (5 次总计出现)
上次记录: 21:27:19

[139966096845280] Error handling message: Unknown error (unknown_error)  (Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0)
[139966086077104] Error handling message: Unknown error (unknown_error) weida295 from 192.168.3.50 (Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0)
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/pyatv/protocols/raop/audio_source.py", line 598, in open
    stream_generator = await loop.run_in_executor(
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/miniaudio.py", line 1270, in stream_any
    raise DecodeError("failed to init decoder", result)
miniaudio.DecodeError: ('failed to init decoder', -17)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/websocket_api/decorators.py", line 28, in _handle_async_response
    await func(hass, connection, msg)
  File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 816, in handle_execute_script
    script_result = await script_obj.async_run(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 1795, in async_run
    return await asyncio.shield(create_eager_task(run.async_run()))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 463, in async_run
    await self._async_step(log_exceptions=False)
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 527, in _async_step
    self._handle_exception(
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 557, in _handle_exception
    raise exception
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 525, in _async_step
    await getattr(self, handler)()
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 763, in _async_call_service_step
    response_data = await self._async_run_long_action(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 726, in _async_run_long_action
    return await long_task
           ^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2761, in async_call
    response_data = await coro
                    ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2804, in _execute_service
    return await target(service_call)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/tts/legacy.py", line 156, in async_say_handle
    await hass.services.async_call(
  File "/usr/src/homeassistant/homeassistant/core.py", line 2761, in async_call
    response_data = await coro
                    ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2804, in _execute_service
    return await target(service_call)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 996, in entity_service_call
    single_response = await _handle_entity_call(
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 1068, in _handle_entity_call
    result = await task
             ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/apple_tv/media_player.py", line 345, in async_play_media
    await self.atv.stream.stream_file(media_id)
  File "/usr/local/lib/python3.12/site-packages/pyatv/core/facade.py", line 374, in stream_file
    await self.relay("stream_file")(
  File "/usr/local/lib/python3.12/site-packages/pyatv/protocols/raop/__init__.py", line 360, in stream_file
    audio_file = await open_source(
                 ^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/pyatv/protocols/raop/audio_source.py", line 730, in open_source
    return await InternetSource.open(source, sample_rate, channels, sample_size)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/pyatv/protocols/raop/audio_source.py", line 611, in open
    raise ProtocolError(source.error_message) from ex
pyatv.exceptions.ProtocolError: Got status 500 with message: Internal Server Error
回复

使用道具 举报

2

主题

126

帖子

885

积分

高级会员

Rank: 4

积分
885
金钱
759
HASS币
0
发表于 2024-10-25 18:11:57 来自手机 | 显示全部楼层
请问小爱一直循环应该如何设置成只TTS一次呢
回复

使用道具 举报

7

主题

94

帖子

849

积分

高级会员

Rank: 4

积分
849
金钱
755
HASS币
0
发表于 2024-10-19 00:40:36 | 显示全部楼层
guitengyue 发表于 2024-9-16 19:50
2024.09.16亲测可用,玩了这么久ha,终于开始尝试下tts

今天发现不能用了,只有缓存过的还能说
回复

使用道具 举报

66

主题

779

帖子

4407

积分

论坛元老

Rank: 8Rank: 8

积分
4407
金钱
3623
HASS币
20
发表于 2024-9-16 19:50:26 | 显示全部楼层
2024.09.16亲测可用,玩了这么久ha,终于开始尝试下tts
回复

使用道具 举报

0

主题

17

帖子

67

积分

注册会员

Rank: 2

积分
67
金钱
50
HASS币
0
发表于 2024-6-1 19:13:25 | 显示全部楼层
太强大了,感谢
回复

使用道具 举报

3

主题

53

帖子

536

积分

高级会员

Rank: 4

积分
536
金钱
483
HASS币
0
发表于 2024-2-29 11:22:41 | 显示全部楼层
2024.02.29亲测可用,楼主威武,期待更多优秀经验分享!
回复

使用道具 举报

0

主题

4

帖子

72

积分

注册会员

Rank: 2

积分
72
金钱
68
HASS币
0
发表于 2024-1-6 00:17:05 | 显示全部楼层

亲测支持
回复

使用道具 举报

5

主题

64

帖子

320

积分

中级会员

Rank: 3Rank: 3

积分
320
金钱
256
HASS币
0
发表于 2023-12-12 12:50:48 | 显示全部楼层
Call-service error. required key not provided @ data['message']

nr的msg.playload推送不了,请教下怎么弄,ha调用服务是可以成功的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-23 16:01 , Processed in 0.152602 second(s), 38 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表