返回列表 发帖
查看: 16|回复: 3

使用Trae AI功能为编辑器添加话筒,调用windows读写功能

TaC

108

主题

651

回帖

807

积分

自成一派

贡献
5 点
金币
3 个
发表于 3 天前 | 查看全部 |阅读模式
这几天为了这个东东,真折腾。

原想在程序上添加语音转文字的功能,网上查了好些资料,并使用Trae 提问,可回复的内容,真心看不懂,找不到所在文件的路径。
这是通过AI分析DZ程序的回复,有点看不明白,先留个底。
要在 Discuz 程序的编辑器里增加一个语音转文字的功能,可按以下步骤实现:

### 1. 选择语音转文字服务
可以选择使用第三方语音转文字服务,例如百度语音识别、阿里云语音识别或者腾讯云语音识别。这里以百度语音识别为例进行说明。

### 2. 申请 API Key 和 Secret Key
访问百度语音开放平台,创建一个新应用,获取 API Key 和 Secret Key 。

### 3. 引入必要的 JavaScript 库
在编辑器页面引入百度语音识别的 JavaScript SDK。

### 4. 修改编辑器页面
找到 Discuz 编辑器相关的模板文件,从工具调用历史来看,可能涉及到编辑器相关的文件有 `post_editor_attribute.htm` 和 `lang_editor.php` 。不过具体的编辑器核心文件可能未完全展示,下面以假设的方式添加语音转文字按钮和功能。
修改语言文件
在 `lang_editor.php` 中添加新的语言项:

```php
// ... existing code ...
$lang = array(
    // ... existing code ...
    'editor_voice_to_text' => '语音转文字',
    // ... existing code ...
);
// ... existing code ...
```
修改模板文件
在编辑器模板文件中添加语音转文字按钮,并绑定相应的 JavaScript 事件。假设在 `post_editor_attribute.htm` 中添加:

```html
// ... existing code ...
<ul class="swiper-wrapper" id="post_extra_tb">
    <!-- ... existing code ... -->
    <li class="swiper-slide" id="voice_to_text_b"><a>{lang editor_voice_to_text}</a></li>
    <!-- ... existing code ... -->
</ul>
// ... existing code ...
```
```

### 5. 实现 JavaScript 逻辑
在页面中添加百度语音识别的 JavaScript 代码:

```html
// ... existing code ...
<script type="text/javascript">
    // 百度语音识别配置
    var client = new BaiduSpeech();
    client.setAppId('your_app_id');
    client.setApiKey('your_api_key', 'your_secret_key');

    function startVoiceRecognition() {
        client.start({
            lang: 'zh', // 识别语言
            cuid: 'your_cuid',
            pdt: 1536 // 普通话输入法模型
        });

        client.onmessage = function (res) {
            if (res.result) {
                var text = res.result[0];
                // 将识别结果插入到编辑器中
                var editor = document.getElementById('your_editor_id');
                if (editor) {
                    editor.value += text;
                }
            }
        };
    }
</script>
// ... existing code ...
```
```

### 注意事项
- 请将 your_app_id 、 your_api_key 、 your_secret_key 和 your_cuid 替换为你自己的实际信息。
- your_editor_id 需要替换为 Discuz 编辑器的实际 ID。
- 由于工具调用历史可能未包含所有相关文件,若上述文件不是实际的编辑器文件,请提供更多文件信息以便进一步调整。
然后根据提示,找到百度语音转文字的啥东西,一看,价格不菲呀。也就是网上疯转的所谓AI系列东西。
这哪是添加功能,这不是要人命嘛。按小时收费。
后来一想,手机上不是可以嘛,根据输入法,也找到了官方网址,可就是没有电脑端的应用。谷歌好象有,可链接不上,这把人搞得一晕一晕的。

回到原址,再向Trae提问:
你的这个回复先放放,我也不明白编辑器ID。现在,不去研究这个ID。那我们换个思路,在编辑器里添加话筒图标,点击后,能唤起电脑自带的听写功能。比如win11,打开记事本,或文字编辑器,按windows图标+H,就可以唤起电脑系统自带的听写功能。那么,怎么更改网站代码,或者怎么实现这个功能。
得到回复【非常漂亮,并测试成功】:
要在网站编辑器里添加话筒图标,点击后唤起 Windows 11 系统自带的听写功能(按 Windows 键 + H ),可以借助 JavaScript 模拟按键事件。不过,浏览器出于安全考虑,通常不允许直接模拟 Windows 键 + H 这样的系统级组合键。但可以通过提示用户手动触发,或者引导用户了解该功能。

以下是实现步骤和示例代码:

### 1. 添加话筒图标
在编辑器相关的模板文件中添加一个话筒图标按钮,假设该文件路径为 d:\wamp64\www\tianya\template\default\touch\forum\post_editor_attribute.htm 。

```html
// ... existing code ...
<ul class="swiper-wrapper" id="post_extra_tb">
    <!-- ... existing code ... -->
    <li class="swiper-slide" id="voice_dictation_btn">
        <a href="javascript:void(0);">
            <img src="path/to/microphone-icon.png" alt="语音听写">
        </a>
    </li>
    <!-- ... existing code ... -->
</ul>
// ... existing code ...
```
```

请将 path/to/microphone-icon.png 替换为实际的话筒图标路径。

### 2. 实现提示功能
添加 JavaScript 代码,当用户点击话筒图标时,弹出提示框告知用户如何触发系统听写功能。

```html
// ... existing code ...
<script>
function showVoiceDictationTip() {
    alert('请按下 Windows 键 + H 来启动系统自带的语音听写功能。');
}
</script>
// ... existing code ...
```
```

### 总结
由于浏览器安全限制,无法直接通过代码触发 Windows 键 + H 组合键。上述方案通过添加图标和提示信息,引导用户手动触发系统听写功能。你可以根据实际需求调整图标样式和提示信息内容。
回复是到位,可哪个是编辑器文件呢,在官方论坛上查了半天,也没看到是哪个文件。
没办法,死办法一个一个的查。
本人使用的模板是直接在默认模板上修改的,所以路径上供大家参考,forum/post_editor_body.htm。
约107行,把修改过的代码完整复制过去,并测试编辑器的显示情况。
  1. <!-- 添加话筒,读写 -->
  2.                         <ul class="swiper-wrapper" id="post_extra_tb" onselectstart="return false">
  3.              <li class="swiper-slide" id="voice_dictation_btn">
  4.                 <a href="javascript:void(0);" onclick="showVoiceDictationTip()">
  5.                   <img src="images/ty_ht.png" alt="语音听写">
  6.                 </a>
  7.              </li>
  8.             </ul>
  9.             <script>
  10.                                 function showVoiceDictationTip() { alert('请按下 Windows 键 + H 来启动系统自带的语音听写功能。'); }
  11.             </script>
复制代码


至此,电脑端windows系统调用语音功能到位,下面就是细节上的修改了。
但是苹果电脑怎么弄,希望有苹果电脑的,弄好后,分享一下。
回复

使用道具 举报

TaC

108

主题

651

回帖

807

积分

自成一派

贡献
5 点
金币
3 个
 楼主| 发表于 3 天前 | 查看全部
哈,接着上楼,再向Trae提问。
经过测试,上面方法可用,但是,如果是苹果电脑,怎么优化上面的代码
靠,回复来了:
在苹果电脑上,唤起系统自带的语音听写功能可以通过按下 Fn + Control + 空格 组合键。我们可以修改之前的代码,当用户使用苹果设备时,提示相应的操作方法。

### 修改模板文件
在 d:\wamp64\www\tianya\template\default\touch\forum\post_editor_attribute.htm 文件中保持图标按钮不变,但修改 JavaScript 代码来根据用户设备类型给出不同提示。

```html
// ... existing code ...
<script>
function showVoiceDictationTip() {
    const isMac = navigator.platform.toUpperCase().indexOf('MAC') >= 0;
    if (isMac) {
        alert('请按下 Fn + Control + 空格 来启动系统自带的语音听写功能。');
    } else {
        alert('请按下 Windows 键 + H 来启动系统自带的语音听写功能。');
    }
}
</script>
// ... existing code ...
```
```

上述代码通过 navigator.platform 来判断用户是否使用苹果设备,如果是则提示 Fn + Control + 空格 组合键,否则提示 Windows 键 + H 组合键。
我的妈呀,可我没有苹果啊。怎么测试呢。
回复

使用道具 举报

TaC

108

主题

651

回帖

807

积分

自成一派

贡献
5 点
金币
3 个
 楼主| 发表于 3 天前 | 查看全部
遗憾来了,打开抖音短视频,读写正常,可没有标点符号
回复

使用道具 举报

TaC

108

主题

651

回帖

807

积分

自成一派

贡献
5 点
金币
3 个
 楼主| 发表于 3 天前 | 查看全部
纠正一下,行数不对,测试使用的 是有背景底色的,更换png格式后,显示有其它图标。
位置错了?大佬提示一下。
回复

使用道具 举报

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

本版积分规则

  • 关注公众号
  • 有偿服务微信
  • 有偿服务QQ

手机版|小黑屋|Discuz! 官方交流社区 ( 皖ICP备16010102号 |皖公网安备34010302002376号 )|网站地图|star

GMT+8, 2025-4-30 17:56 , Processed in 0.054603 second(s), 12 queries , Redis On.

Powered by Discuz! W1.0 Licensed

Cpoyright © 2001-2025 Discuz! Team.

关灯 在本版发帖
有偿服务QQ
有偿服务微信
返回顶部
快速回复 返回顶部 返回列表