簡體   English   中英

Google 文檔 - 實時訪問文本更改

[英]Google docs - Access text changes realtime

目標

我們的用戶在 Google Docs 中工作。 他們編寫的文本將在他們使用文本到語音輸入時被朗讀給他們。 它應該在盡可能多的平台和瀏覽器上工作。

我們的解決方案

這似乎符合Google Apps 腳本,它適用於所有桌面瀏覽器和一些移動瀏覽器。

這有效

我們有一個文本轉語音模塊,效果很好,所以沒問題。 我們目前正在使用側邊欄 側邊欄可以使用HTML 5 音頻標簽播放音頻,該標簽可以正常工作。

問題

問題實際上是從 Google docs 文檔中獲取文本。 到目前為止,我還沒有找到任何直接從側邊欄訪問 Google 文檔文本的方法。 我們一直在做的是:

  1. 邊欄每 x 毫秒輪詢一次我們在 Google 雲上運行的 Google Apps 腳本
  2. 我們在谷歌雲上運行的谷歌應用程序腳本然后訪問雲中的同步文檔
  3. 如果它發現任何更改,它會將它們發送回側邊欄
  4. 邊欄使用 HTML5 音頻標簽和我們的文本轉語音播放音頻。

在此處輸入圖像描述

從用戶在谷歌文檔中輸入文本到將更改同步到谷歌文檔雲中需要一秒鍾或更長時間。

我們已經為不同的步驟計時。 文字轉語音速度很快,HTML5 音頻也沒有問題。

時間接收器正在更改文本 目前需要1-3 秒,這對於我們的用例來說太長了。

問題

我們可以更快地訪問 Google Docs 中的文本嗎? 也許直接而不是通過谷歌的雲?

更新 2017-02-15看來目前不可能。 可以使用 Chrome 擴展程序來執行此操作,它會解析 Google Docs 主頁並從 HTML+JS 中提取文本。 這相當困難,但......可能。

如果瀏覽器插件是提供該功能的適當方式,則應該可以在更新頁面內容時收聽Google Docs對DOM所做的更改。

// This div contains all of the page content and not much else, in my rudimentary testing.
var pageRoot = document.getElementsByClassName('kix-appview-editor')[0].firstChild;

var observer = new MutationObserver(handleNewChanges);
observer.observe(pageRoot, {
  subtree: true,
  childList: true,
  attributes: false,
});

// Later, you can stop observing
observer.disconnect();

handleNewChanges DOM的內容發生變化時,都會調用handleNewChanges函數,並附帶更改列表。 這些變化非常混亂,但是

  • 可以通過查看添加和刪除的節點來過濾無關緊要的更改(如用戶選擇某些文本),
  • 您可以沿DOM樹向上查找文檔中更改的位置,以及
  • 您可以使用someNode.innerText來獲取實際內容。

通過觀察更改並保持某些文檔狀態,您應該能夠確定何時發生您所關心的更改。


這似乎非常適合您的用例,因為

  • 不需要遠程服務器。 數據流看起來更像是這樣,完全在瀏覽器標簽中:

     --------------- ---------- | Google Docs | <= fetch doc <= | Your | | Document | => DOM changes => | Module | --------------- ---------- 
  • 更新與文檔在視覺上更新同步,這感覺就像觸發它一樣自然。

  • 解析每個DOM更改所需執行的簿記量可能是不變的(即,不循環文檔內容)。 這意味着觀察添加的開銷是不變的,因此它應該擴展到任何大小的文檔。

正如您所知,瀏覽器擴展是一個很好的解決方案,它可能比您想象的更容易:Chrome的擴展API已有詳細記錄,構建擴展與使用HTMLJavascript構建網頁非常相似。

甚至還有一個可以與自定義TTS引擎集成的TTS擴展API

使用chrome.ttsEngine API使用擴展實現文本到語音轉換(TTS)引擎。 如果您的擴展程序使用此API注冊,則當任何擴展程序或Chrome應用程序使用tts API生成語音時,它將接收包含要說出的話語和其他參數的事件。 然后,您的分機可以使用任何可用的Web技術來合成和輸出語音,並將事件發送回呼叫功能以報告狀態。

一種解決方案也可能是使用我們的 API。 我們支持超過 500 種聲音,並具有更好的文字轉語音功能。

我想 webhook 功能可能很有用https://docs.api.audio/docs/webhooks因為您將更新 Google 文檔 -> 調用文本到語音 ZDB974238714CA8A1434A7CE1D08。

如果您想添加聲音效果之類的東西,我們也有音頻功能,但我認為這對您來說並不重要。

希望這可以幫助:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM