3

私は会社で働いており、新しいデモページを作ろうとしています。機能していないページを正確に説明したいと思いますが、残念ながら、サーバー上のさまざまなスクリプトや、同じドメイン名に送信する必要がある AJAX 要求に関連付けられています。ただし、進行状況を可能な限り説明します。

基本的に、私のセッション コードはほぼ期待どおりに動作しています。これは問題がある場所ではありません。問題は、「Say It」ボタンをクリックした後に再生される音声が Chrome で期待どおりに機能することですが、Firefox は最初の音声要求のみを再生し、後続の音声要求が別のテキストで再生された後でも再生され、Internet Explorer では何も再生されません。関連するコードはすべて head セクションにあり、3 つの関数のグループがすべての処理を制御します。「Say It」ボタンが押されたときに formSubmit() が呼び出され、オーディオが読み込まれると onAudioLoad() が呼び出され、limitText() が呼び出されます。これにより、ユーザーが入力できるテキストの量が制限されます。

したがって、formSumbmit() は AJAX リクエストをサーバー スクリプトに送信し、次の 2 つのいずれかを返します。

1) 正しい src 属性を持つ source 要素を含む HTML5 オーディオ タグ、または 2) セッションの有効期限が切れたことを示す p 要素。

私は単純に、恐ろしいエコー (実際の mp3/ogg 変換ソフトウェアが原因である場合とそうでない場合があります) なしでオーディオを再生し、すべてのブラウザーで期待どおりに動作するようにしようとしています。

onAudioLoad は、人々が私たちの製品を簡単に盗むのを避けるために、オーディオを削除するリクエストを送信します:D

予想される行動:

デモ テキスト領域に存在するテキストはすべてサーバー側に送信されて合成され、クライアントのスピーカーから音声が再生されます。

さらに質問がある場合は、定期的にここに戻ってきます。

デモの URL は次のとおりです。

http://www.cepstral.com/demos/temp/cepstral_tts_demo.php

助けてくれてありがとう。

究極の質問:

これが Chrome では期待どおりに機能するのに、Firefox 11 と IE9 では機能しないのはなぜですか?

Firefox では、最初のオーディオ リクエストのみが再生されます。

IE9 ではオーディオは再生されません。

オーディオが決して安全ではないことは承知しています。私たちは、一般ユーザーにとってより困難なものにしようとしているだけです。

4

1 に答える 1

2

何が起こっているのかを調べ、チャットで連絡を取った後 (トランスクリプト)、次の結論に達しました。これはキャッシュの問題です。

FF でテキストを変更しようとして新しいサウンドファイルを要求すると、古いサウンドが再生されます。要求と応答を確認すると、サウンド自体は異なりますが、常に同じファイル名 (オーディオ ファイル用) で応答しているように見えます。

そのサウンドファイルをダウンロードするか、新しいタブで開いてキャッシュなしで更新すると、(新しいテキストで) 正しいサウンドが再生されるので、キャッシュについてはかなり確信があります。

ブラウザがキャッシュされたバージョンを再生しないように、さまざまなテキストに対して一意のファイル名を返す方法を見つける必要があります。

私のマシンのIEでテストするときも同じことが当てはまります。

OPによる編集

私の IE で動作しなかった理由は、私が Windows 7 N を使用しているためと思われることを付け加えたいと思います。彼らは HTML5 オーディオについて言及していませんが、これが問題であると私は推測しています。

于 2012-04-04T20:03:55.733 に答える