以下、本願の目的、技術的解決手段及び利点をより明確にするために、図面を参照しながら本願の実施形態について一層詳細に説明する。
本願に使用される用語の「第1」、「第2」などは、様々な概念を説明するために本明細書で使用され得るが、特に明記しない限り、これらの概念はこれらの用語によって限定されないことが理解される。これらの用語は、ある概念を別の概念と区別するためにのみ使用される。例えば、本願の範囲から逸脱することなく、第1のオーディオデータを第2のオーディオデータと呼んでもよく、同様に、第2のオーディオデータを第1のオーディオデータと呼んでもよい。
本願の実施例を詳細に説明する前に、関連する概念について以下に説明する。
1.クラウドアプリケーションプログラム:サーバで実行されるアプリケーションプログラムであって、選択可能に、当該クラウドアプリケーションプログラムはゲームアプリケーションプログラム又はオーディオ処理アプリケーションプログラムなどである。
2.コンテナ:コンテナには、例えばオペレーティングシステムなど、アプリケーションプログラムを実行するために必要な関連詳細がカプセル化され、一台のサーバは複数のコンテナを実行することができ、各コンテナ内にはクラウドアプリケーションプログラム及びオペレーティングシステムを実行することができ、そのうち、オペレーティングシステムは、例えばアンドロイドオペレーティングシステム、iOS(iPhone Operation System、アイフォーンオペレーティングシステム)など、いずれかのオペレーティングシステムである。
3.ハードウェア抽象化レイヤー(AudioHal):システムフレームとハードウェアドライバとの間に位置するものであり、システムフレームから配信されたオーディオデータを受信し、当該オーディオデータをハードウェアドライバによってハードウェアに出力することを担当する。
4.システムフレーム:オペレーティングシステムから提供されるフレームであり、選択可能に、オペレーティングシステム内のオーディオ処理フレーム(AudioFlinger)である。
5.リサンプリングプログラム(RemoteSubmix):オペレーティングシステム内の1つのモジュールであり、オペレーティングシステム内のオーディオをミキシング処理した後にネットワークを介して遠位端に送信するために用いられる。
6.オーディオ収集プログラム:サーバのオペレーティングシステムからオーディオデータを収集するためのプログラムであり、収集したオーディオデータを符号化モジュール(WebrtcProxy)に送信し、符号化モジュールにより当該オーディオデータを符号化した後に端末のアプリケーションプログラムに配信することができ、選択可能に、クラウドアプリケーションプログラムがクラウドゲームプログラムの場合、当該オーディオ収集プログラムはCloudGameクラウドゲームバックエンドである。
7.オーディオ録音インタフェース(AudioRecord):オペレーティングシステムにおけるオーディオデータ収集のインタフェースであり、オーディオデータのソースはマイク、RemoteSubmixなどである。
8.ミキシングスレッド(MixerThread):システムフレームにおけるミキシングを担当するスレッドである。
9.録音スレッド(RecordThread):システムフレームにおける録音を担当するスレッドである。
図1は、本願の実施例にて提供される実施環境概略図であり、図1に示すように、当該実施環境は、端末101とサーバ102とを含み、端末101とサーバ102は有線又は無線通信方式により直接又は間接的に接続することができ、ここでは、本願は制限しない。
ここで、端末101は、スマートフォン、タブレットコンピュータ、ノートパソコン、デスクトップコンピュータ、スマートスピーカボックス、スマートウォッチなどの機器であってもよいが、これらに限定されるものではない。選択可能に、サーバ102は独立した物理サーバであり、選択可能に、サーバ102は、複数の物理サーバで構成されたサーバクラスタ又は分散システムであり、選択可能に、サーバ102はクラウドサービス、クラウドデータベース、クラウドコンピューティング、クラウド関数、クラウドストレージ、ネットワークサービス、クラウド通信、ミドルウェアサービス、ドメイン名サービス、セキュリティサービス、CDN(Content Delivery Network、コンテンツ配信ネットワーク)、及びビッグデータと人工知能プラットフォームなどの基礎クラウドコンピューティングサービスを提供するクラウドサーバである。
ここで、サーバ102にはクラウドアプリケーションプログラムが実行されており、クラウドアプリケーションプログラムの実行中に、クラウドアプリケーションプログラムは、オーディオデータを生成し、サーバ102は、当該オーディオデータを端末101に送信することにより、端末101は、アプリケーションプログラムを実行しなくても、アプリケーションプログラムが生成したオーディオデータを再生することができる。
選択可能に、端末101にはローカルアプリケーションプログラムがインストールされており、ユーザは、ローカルアプリケーションプログラムによりサーバ102に制御命令を送信することができ、サーバ102内のクラウドアプリケーションプログラムは、当該制御命令に従って実行され、当該制御命令に対応するオーディオデータを生成し、サーバ102は、当該オーディオデータを端末101に配信することにより、ユーザは、端末101上のローカルアプリケーションプログラムによりオーディオデータを再生する。
選択可能に、本願の実施例に係る端末とサーバとは接続して分散システムを形成する。分散システムがブロックチェーンシステムの場合を例とし、図2に示すように、図2は、本願の実施例にて提供されるブロックチェーンシステムに適用される分散システム200の1つの選択可能な構造概略図であり、複数のノード201(例えばサーバ、端末のような、アクセスネットワークにおける任意の形態の計算機器)とクライアント202で形成され、ノード間は構成されるピアツーピア(P2P、Peer To Peer)ネットワークを形成し、P2Pプロトコルは、トランスミッションコントロールプロトコル(TCP、Transmission Control Protocol)上で実行されるアプリケーションレイヤープロトコルである。分散システムにおいて、サーバや、端末のような、任意の機器は参加してノードとなることができる。
図2に示すブロックチェーンシステム内の各ノードの機能を参照すると、関連する機能は以下を含む。
(1)ルーティングであって、ノードが有する基本機能であり、ノード間の通信をサポートするために用いられる。
ノードはルーティング機能を有する以外、さらに以下の機能を有してもよい。
(2)アプリケーションであって、ブロックチェーンに配置され、実際のサービスニーズに応じて特定のサービスを実現し、機能実現に関連するデータを記録して記録データを形成し、記録データにデジタル署名を付けてタスクデータのソースを示し、記録データをブロックチェーンシステム内の他のノードに送信することにより、他のノードが記録データのソース及び完全性を検証することに成功した時に、記録データを一時ブロックに追加するようにするために用いられる。
例えば、複数のサーバにはクラウドアプリケーションプログラムがそれぞれ実行され、各サーバはブロックチェーン内の1つのノードであり、当該複数のサーバがクラウドアプリケーションプログラムを実行して得たデータは同期的である。
本願の実施例はクラウドゲームのシーンに適用することができる。
例えば、ユーザは、端末によりクラウドゲームの実行を制御し、本願の実施例にて提供されるオーディオデータ処理方法を用い、クラウドゲームの実行中に生成されたオーディオデータを端末に送信し、端末により当該オーディオデータを再生することで、ユーザはゲーム中にオーディオデータを聞くことができる。
本願の実施例にて提供されるオーディオデータ処理方法を用いるため、サーバは端末にオーディオデータをより速く送信し、オーディオデータの遅延時間を低減することができることで、ユーザは、オーディオデータをより速く聞くことができる。
本願の実施例は、さらにサーバによりクラウドアプリケーションプログラムを実行する他のシーンに適用することができ、本願の実施例は、適用シーンについて限定しない。
図3は本願の実施例にて提供されるオーディオデータ処理方法のフローチャートである。本願の実施例の実行主体はサーバであり、図3に示すように、当該方法は以下のステップ301~303を含む。
301において、クラウドアプリケーションプログラムの第1のオーディオデータをシステムフレームに入力する。
ここで、クラウドアプリケーションプログラムは、サーバで実行されるアプリケーションプログラムのいずれかであり、選択可能に、当該クラウドアプリケーションプログラムはゲームアプリケーションプログラムであり、又は当該クラウドアプリケーションプログラムは、オーディオ処理アプリケーションプログラムなどである。本願の実施例は、クラウドアプリケーションプログラムのタイプについて限定しない。第1のオーディオデータは、クラウドアプリケーションプログラムが実行中に生成したオーディオデータである。
302において、システムフレームにより、第1のオーディオデータを処理し、第2のオーディオデータを得て、第2のオーディオデータを中継プログラムに送信する。
システムフレームは、サーバのオペレーティングシステムにおけるフレームであり、オーディオデータを処理するために用いられる。中継プログラムは、システムフレームとオーディオ収集プログラムとの間のプログラムであり、システムフレームによって処理されたオーディオデータをオーディオ収集プログラムに伝送するために用いられ、当該中継プログラムは、オーディオデータを転送する機能を有し、選択可能に、中継プログラムは、さらに他の機能を有してもよく、本願の実施例は、これについて限定しない。
303において、中継プログラムにより、中継プログラムとオーディオ収集プログラムとの間の通信接続に基づいて、第2のオーディオデータをオーディオ収集プログラムに送信し、オーディオ収集プログラムは、第2のオーディオデータを端末のローカルにおけるアプリケーションプログラムに送信するために用いられる。
ここで、中継プログラムとオーディオ収集プログラムとの間に通信接続が確立され、中継プログラムは、当該通信接続により、第2のオーディオデータをオーディオ収集プログラムに直接送信することができる。
端末にローカルアプリケーションプログラムがインストールされており、当該ローカルアプリケーションプログラムは端末とサーバとのインタラクションをサポートするアプリケーションプログラムであり、オーディオ収集プログラムは、第2のオーディオデータを受信した後、第2のオーディオデータを端末のローカルアプリケーションプログラムに送信して、端末に当該第2のオーディオデータを再生させ、ただし、当該ローカルアプリケーションプログラムは、ステップ303における、端末のローカルにおけるアプリケーションプログラムである。
本願の実施例にて提供されるオーディオデータ処理方法は、システムフレームとオーディオ収集プログラムとの間に中継プログラムを設置し、かつ中継プログラムとオーディオ収集プログラムとの間の通信接続を確立し、当該通信接続によりシステムフレームによって処理されたオーディオデータを当該オーディオ収集プログラムに直接送信することができる。オーディオ収集プログラムがオーディオ録音インタフェースを呼び出すことによって録音スレッドからオーディオデータを読み取ることに比べ、通信接続によりオーディオデータを直接送信する上記方式は、オーディオデータの伝送リンクを減少させ、オーディオ収集プログラムがオーディオデータを取得する時間を短縮し、サーバがオーディオデータを配信する遅延時間を低減する。
なお、上記ステップ302及びステップ303における中継プログラムは、ハードウェア抽象化レイヤーであり、又はオペレーティングシステム内に固有のリサンプリングプログラムであり、又は他のプログラムであり、本願の実施例はこれについて限定しない。
まず、本願の実施例は中、継プログラムがハードウェア抽象化レイヤーの場合を例とし、サーバについて説明する。図4に示すように、当該サーバ400は、クラウドアプリケーション401と、システムフレーム402と、ハードウェア抽象化レイヤー403と、オーディオ収集プログラム404と、を含む。
そのうち、クラウドアプリケーションプログラム401はシステムフレーム402のインタフェースを呼び出し、オーディオデータを例えばミキシングスレッドによりシステムフレーム402に書き込むことができ、システムフレーム402は、ハードウェア抽象化レイヤー403のインタフェースを呼び出し、オーディオデータをハードウェア抽象化レイヤー403に書き込むことができる。ハードウェア抽象化レイヤー403とオーディオ収集プログラム404との間には、オーディオデータをオーディオ収集プログラム404に送信可能な通信接続が確立される。
なお、上記クラウドアプリケーションプログラム401、システムフレーム402、ハードウェア抽象化レイヤー403及びオーディオ収集プログラム404は、いずれもサーバ400のオペレーティングシステムコンテナで実行される。
選択可能に、当該サーバ400は、符号化プログラム405をさらに含み、オーディオ収集プログラム404は、オーディオデータを符号化プログラム405に送信し、符号化プログラム405により当該オーディオデータを符号化し、符号化されたオーディオデータを端末のローカルにおけるアプリケーションプログラムに送信する。
上記図4に示すサーバに加えて、本願の実施例は、オーディオデータ処理方法をさらに提供し、図5は、本願の実施例にて提供されるオーディオデータ処理方法のフローチャートであり、本願の実施例の実行主体は図4に示すサーバであり、図5に示すように、当該方法は、以下のステップ501~506を含む。
501において、クラウドアプリケーションプログラムの第1のオーディオデータをシステムフレームに入力する。
ここで、クラウドアプリケーションプログラムは、サーバで実行されるアプリケーションプログラムであり、ローカルアプリケーションプログラムは、端末にインストールされたアプリケーションプログラムであり、当該ローカルアプリケーションプログラムは、端末とサーバとのインタラクションをサポートするアプリケーションプログラムであり、サーバは、クラウドアプリケーションプログラムの実行中に生成されたデータを端末のローカルアプリケーションプログラムに送信して、端末に当該データを表示させることができ、そのため、端末は、当該クラウドアプリケーションプログラムを実行しなくても、クラウドアプリケーションプログラムによって生成されたデータを取得することができる。
選択可能に、ユーザは、さらに端末のローカルアプリケーションプログラムによりサーバに命令を送信することができ、サーバは、当該命令に従ってクラウドアプリケーションプログラムを実行し、クラウドアプリケーションプログラムによって生成されたデータを端末のローカルアプリケーションプログラムに送信することで、端末は、サーバ内のクラウドアプリケーションプログラムの実行を制御することができ、端末はさらにクラウドアプリケーションプログラムが実行された後に生成したデータを取得することができ、そのため、端末は、クラウドアプリケーションプログラムをインストール及び実行しなくても、当該クラウドアプリケーションプログラムを使用することができる。
例えば、ユーザは、端末のローカルアプリケーションプログラムにおいて仮想キャラクターAがスキルaをリリースする操作をトリガし、端末のローカルアプリケーションプログラムは、当該操作に応答して、サーバ内のクラウドアプリケーションプログラムにスキルリリース命令を送信し、当該スキルリリース命令には仮想キャラクターAの仮想識別子及びスキルaに対応するスキル識別子が付き、クラウドアプリケーションプログラムは、スキルリリース命令を受信した後、当該スキルリリース命令に基づいて仮想キャラクターAがスキルaをリリースするビデオデータをレンダリングし、当該ビデオデータを端末のローカルアプリケーションプログラムに送信し、端末のローカルアプリケーションプログラムにより当該ビデオデータを表示することで、ユーザは、仮想キャラクターAがスキルaをリリースする画面を見ることになる。これから分かるように、本願の実施例では、サーバ内のクラウドアプリケーションプログラムと端末のローカルアプリケーションプログラムとの相互の組み合わせにより仮想キャラクターAがスキルaをリリースする操作を実現する。
ここで、クラウドアプリケーションプログラムの実行中に、当該クラウドアプリケーションプログラムは、オーディオデータを生成し、サーバは、当該オーディオデータを端末のローカルアプリケーションプログラムに送信して、端末に当該オーディオデータを再生させたり、当該オーディオデータを記憶させたりすることができる。
例えば、クラウドアプリケーションプログラムは、当該スキルリリース命令における仮想識別子及びスキル識別子に基づいて、第1のオーディオデータを取得し、第1のオーディオデータを端末のローカルアプリケーションプログラムに送信し、当該第1のオーディオデータは、仮想キャラクターAがスキルaをリリースすることに対応するスキルリリース効果音であり、端末のローカルアプリケーションプログラムは、第1のオーディオデータを受信した後、当該第1のオーディオデータを再生することで、ユーザは、仮想キャラクターAがスキルaをリリースすることを見る時に対応するスキルリリース効果音を聞くようになる。
選択可能に、当該クラウドアプリケーションプログラムには複数種類のオーディオデータが記憶されており、当該複数種類のオーディオデータは以下の種類を含む。
バックグラウンドミュージック:当該バックグラウンドミュージックは、クラウドアプリケーションプログラムの実行に伴って再生されるオーディオデータであり、選択可能に、当該クラウドアプリケーションプログラムに1つのバックグラウンドミュージックが記憶され、当該バックグラウンドミュージックは、クラウドアプリケーションプログラムの実行に伴って繰り返し再生され、選択可能に、当該クラウドアプリケーションプログラムに複数のバックグラウンドミュージックが記憶され、当該複数のバックグラウンドミュージックは、クラウドアプリケーションプログラムの実行に伴って繰り返し再生され、又は、異なるバックグラウンドミュージックは異なる実行段階に適用され、クラウドアプリケーションプログラムは、実行段階に応じて複数のバックグラウンドミュージックから、当該実行段階に対応するバックグラウンドミュージックを選択して繰り返し再生する。選択可能に、当該クラウドアプリケーションプログラムは、実行中に、さらにビデオデータをレンダリングすることができ、クラウドアプリケーションプログラムは、レンダリングしたビデオデータに応じて、複数のバックグラウンドミュージックから、当該ビデオデータに対応するバックグラウンドミュージックを選択して繰り返し再生する。
オーディオシステム通知:当該オーディオシステム通知は、クラウドアプリケーションプログラムの実行中に、端末に送信したオーディオ通知メッセージであり、例えば、クラウドアプリケーションプログラムがゲームアプリケーションプログラムの場合、当該オーディオシステム通知は、「敵がXX秒後に戦場に到着する」、「味方チームメイトのXXXが包囲攻撃される」などであり、端末は、当該オーディオシステム通知を受信すると、当該オーディオシステム通知を再生する。
操作効果音:当該操作効果音は、ユーザに臨場感を感じさせるために、操作に伴って再生されるオーディオデータである。例えば、ユーザがスキルをリリースするように仮想キャラクターAを操作すると、スキルをリリースする効果音を再生し、ユーザに自分がスキルをリリースする操作を行ったことを明確に知覚させることにより、ユーザに臨場感を感じさせる。
なお、上記バックグラウンドミュージック、オーディオシステム通知、操作効果音は複数種類のオーディオデータを例示的に説明するものにすぎず、当該複数種類のオーディオデータを限定するものではない。
ここで、クラウドアプリケーションプログラムの実行中に、クラウドアプリケーションプログラムは、現在の実行状態に応じて複数種類のオーディオデータから現在の実行状態に対応するオーディオデータを選択して端末に送信することができ、当該第1のオーディオデータは、現在の実行状態に対応するオーディオデータである。ただし、クラウドアプリケーションプログラムの実行状態は、クラウドアプリケーションプログラムの起動状態、クラウドアプリケーションプログラムが操作命令を実行する状態又はクラウドアプリケーションプログラムのシーンロード状態などを含む。
選択可能に、クラウドアプリケーションプログラムの起動プロセスにおいて、クラウドアプリケーションプログラムは、複数種類のオーディオデータから起動状態に対応するオーディオデータを選択し、当該オーディオデータを第1のオーディオデータとする。ただし、クラウドアプリケーションプログラムの起動プロセスとは、当該クラウドアプリケーションプログラムが既に起動しているが、まだ起動が完了しておらず、この時、クラウドアプリケーションプログラムは、例えば、オーディオデータを取得し、オーディオデータを配信するなど、機能の一部を実現することができる。選択可能に、起動状態に対応するオーディオデータはバックグラウンドミュージックのオーディオデータである。
例えば、クラウドアプリケーションプログラムは、ゲームアプリケーションプログラムであり、いくつかの比較的大規模なゲームアプリケーションプログラムに対して、起動プロセスは一定の時間がかかり、そのため、クラウドアプリケーションプログラムの起動プロセスにおいて、ユーザが待っているうちに退屈な気分を生じることを回避するために、端末にオーディオデータを送信し、端末により当該オーディオデータを再生する。
選択可能に、クラウドアプリケーションプログラムは実行中に、端末のローカルアプリケーションプログラムから送信された操作命令を受信し、当該クラウドアプリケーションプログラムは、当該操作命令に応答して、当該操作命令に対応する操作を実行し、複数種類のオーディオデータから当該操作命令に対応するオーディオデータを選択し、当該オーディオデータを第1のオーディオデータとする。
例えば、クラウドアプリケーションプログラムは、ゲームアプリケーションプログラムであり、当該クラウドアプリケーションプログラムは、実行中に、端末から送信されたスキルリリース命令を受信し、当該スキルリリース命令には仮想キャラクター識別子及びスキル識別子が付き、クラウドアプリケーションプログラムは、当該スキルリリース命令に応答して、当該スキルリリース命令における仮想キャラクター識別子及びスキル識別子に基づいて、対応するスキルをリリースするように対応する仮想キャラクターを制御し、複数種類のオーディオデータから当該スキルリリースに対応するオーディオデータを選択する。
選択可能に、クラウドアプリケーションプログラムは、1つ以上のオーディオソースを含み、当該複数種類のオーディオデータが当該1つ以上のオーディオソースに記憶される。選択可能に、各オーディオソースは一種類のオーディオデータを記憶し、異なるオーディオソースが記憶するオーディオデータの種類は異なる。
それに対応して、クラウドアプリケーションプログラムは、現在の実行状態に応じて複数種類のオーディオデータから現在の実行状態に対応する第1のオーディオデータを選択して端末に送信することができることは、クラウドアプリケーションプログラムは、いずれかのオーディオソースから、現在の実行状態に対応する第1のオーディオデータを読み取って端末に送信するステップ、又は、クラウドアプリケーションプログラムは、現在の実行状態に応じて、目標オーディオソースを決定し、目標オーディオソースから現在の実行状態に対応する第1のオーディオデータを読み取って端末に送信するステップを含む。
また、クラウドアプリケーションプログラムは、第1のオーディオデータを端末に配信する過程において、まず第1のオーディオデータをシステムフレームに入力して処理する。
502において、システムフレームにより、第1のオーディオデータをミキシング処理し、第3のオーディオデータを得る。
ここで、システムフレームは、オペレーティングシステム内のフレームであり、当該オペレーティングシステムは、アンドロイドシステム又はIOS(iPhone Operation System、アイフォーンオペレーティングシステム)などであり、選択可能に、当該システムフレームは、オーディオ処理フレーム(AudioFlinger)である。
選択可能に、第1のオーディオデータは、マルチチャネルのオーディオデータを含み、第1のオーディオデータをミキシング処理することは、当該マルチチャネルのオーディオデータを1つのオーディオデータに混合することであり、このように、ミキシング処理により得られた第3のオーディオデータは、1つのチャネルのオーディオデータである。
例えば、第1のオーディオデータは、バックグラウンドミュージックに対応するオーディオデータと操作効果音に対応するオーディオデータとを含み、すなわち、第1のオーディオデータは、2つのチャネルのオーディオデータを含み、端末が再生するオーディオデータをよりスムーズにするために、当該バックグラウンドミュージックに対応するオーディオデータと操作効果音に対応するオーディオデータを1チャネルのオーディオデータに混合し、第3のオーディオデータを得ることで、後続してユーザが聞く第3のオーディオデータをよりスムーズにし、ユーザの聴覚効果を保証する。
また、第1のオーディオデータがマルチチャネルのオーディオデータを含まれば、ユーザがそのうちあるチャネルのオーディオデータにより注目する状況が存在する可能性があり、例えば、第1のオーディオデータはバックグラウンドミュージックに対応するオーディオデータと操作効果音に対応するオーディオデータとを含み、バックグラウンドミュージックはクラウドアプリケーションプログラムの実行に伴って常に再生されるオーディオデータであり、操作効果音は、ユーザの操作に伴って再生されるオーディオデータであるため、ユーザは操作効果音に対応するオーディオデータにより注目する可能性がある。そのため、第1のオーディオデータは、マルチチャネルのオーディオデータを含み、第1のオーディオデータをミキシング処理し、第3のオーディオデータを得るステップは、第1のオーディオデータ中の各チャネルのオーディオデータの重みを決定し、各チャネルのオーディオデータの重みに基づいて、当該マルチチャネルのオーディオデータを1チャネルのオーディオデータに混合し、第3のオーディオデータを得るステップを含む。
選択可能に、各チャネルのオーディオデータの重みは、当該オーディオデータの種類に応じて決定され、例えば、システム通知の重みが最も大きく、操作効果音の重みが次に大きく、バックグラウンドミュージックの重みが最も小さく、又は、操作効果音の重みが最も大きく、システム通知の重みが次に大きく、バックグラウンドミュージックの重みが最も小さい。
選択可能に、システムフレームが処理スレッドを含むと、システムフレームにより、第1のオーディオデータをミキシング処理し、第3のオーディオデータを得るステップは、処理スレッドにより第1のオーディオデータをミキシング処理し、第3のオーディオデータを得るステップを含む。選択可能に、当該処理スレッドはミキシングスレッドである。
503において、システムフレームによりハードウェア抽象化レイヤーからオーディオパラメータを取得し、当該ハードウェア抽象化レイヤーにはオーディオパラメータが記憶されている。
本願の実施例は、ハードウェア抽象化レイヤーをカスタマイズし、当該ハードウェア抽象化レイヤーは、端末におけるハードウェア抽象化レイヤーと異なり、端末におけるハードウェア抽象化レイヤーはスピーカなどのハードウェアのインタフェースを呼び出し、オーディオデータをハードウェアに入力して再生するために用いられ、本願の実施例におけるハードウェア抽象化レイヤーは、ハードウェアに接続されず、オーディオ収集プログラムと通信接続を確立し、オーディオデータをオーディオ収集プログラムに送信する。
なお、オーディオ収集プログラムにはオーディオパラメータが配置され、当該オーディオパラメータは、当該オーディオ収集プログラムが受信するオーディオデータが当該オーディオパラメータを満たす必要があることを示し、例えば、オーディオパラメータが24KHz(キロヘルツ)デュアルチャンネルであれば、オーディオ収集プログラムが24KHzデュアルチャンネルのオーディオデータを受信するように配置されることが示される。
ハードウェア抽象化レイヤーから送信されたオーディオデータのオーディオパラメータがオーディオ収集プログラムの要件を満たさなければ、オーディオ収集プログラムは、当該オーディオデータを順調に受信できない可能性があり、選択可能に、当該ハードウェア抽象化レイヤーにはオーディオパラメータが記憶され、当該オーディオパラメータは、オーディオ収集プログラムの要件に基づいて設定され、このように、システムフレームは、ハードウェア抽象化レイヤーからオーディオパラメータを取得し、当該オーディオパラメータを満たすオーディオデータを生成することができ、それにより、ハードウェア抽象化レイヤーは、オーディオデータをオーディオ収集プログラムに送信することに成功する。
例えば、オーディオ収集プログラムは、24KHz(キロヘルツ)のオーディオデータを受信し、当該オーディオパラメータは、サンプリングレートが24KHzであることを含む。
選択可能に、当該オーディオパラメータは、目標サンプリングレート、目標チャネル数又は目標サンプリング深度のうち少なくとも1つを含む。
なお、選択可能に、当該ステップ503をステップ502の前に実行し、又は、当該ステップ503をステップ502と同時に実行し、又は、当該ステップ503をステップ502の後に実行する。
選択可能に、クラウドアプリケーションプログラムの実行中に、当該ステップ503を一回のみ実行し、又は、システムフレームは、オーディオデータを処理するたびに、当該ステップ503を実行する必要があり、本願の実施例はこれについて限定しない。
504において、システムフレームにより、当該オーディオパラメータに基づいて第3のオーディオデータを処理し、第2のオーディオデータを得る。
システムフレームから出力されたオーディオデータのオーディオパラメータがオーディオ収集プログラムの要件を満たすように、ハードウェア抽象化レイヤー内のオーディオパラメータに従って、第3のオーディオデータを処理し、第2のオーディオデータを得るとしてもよく、それにより、第2のオーディオデータのオーディオパラメータがハードウェア抽象化レイヤー内のオーディオパラメータに一致し、第2のオーディオデータのオーディオパラメータがオーディオ収集プログラムの要件を満たすようになる。すなわち、システムフレームにより、当該オーディオパラメータに従って第3のオーディオデータを処理し、第2のオーディオデータを得ることは、オーディオデータのオーディオパラメータを調整することに相当する。
選択可能に、オーディオパラメータは、目標サンプリングレート、目標チャネル数又は目標サンプリング深度のうち少なくとも1つを含み、システムフレームにより、当該オーディオパラメータに従って第3のオーディオデータを処理し、第2のオーディオデータを得ることは、以下の(1)乃至(3)のうち少なくとも1つを含む。
(1)オーディオパラメータは、目標サンプリングレートを含み、システムフレームにより、目標サンプリングレートに従って第3のオーディオデータをリサンプリング処理し、第2のオーディオデータを得る。
例えば、目標サンプリングレートが24KHzであり、第3のオーディオデータのサンプリングレートが48KHzであれば、第3のオーディオデータをリサンプリング処理し、サンプリングレートが24KHzの第2のオーディオデータを得る。
(2)オーディオパラメータは、目標チャンネル数を含み、システムフレームにより、目標チャンネル数に従って第3のオーディオデータに対してチャンネル数変換処理を行い、第2のオーディオデータを得る。
例えば、目標チャンネル数がデュアルチャンネルであり、第3のオーディオデータがシングルチャンネルのオーディオデータであれば、第3のオーディオデータに対してチャンネル数変換処理を行い、デュアルチャンネルの第2のオーディオデータを得る。
(3)オーディオパラメータは目標サンプリング深度を含み、システムフレームにより、目標サンプリング深度に従って第3のオーディオデータをリサンプリング処理し、第2のオーディオデータを得る。
例えば、目標サンプリング深度が8bitであり、第3のオーディオデータのサンプリング深度が16bitであれば、第3のオーディオデータをリサンプリング処理し、サンプリング深度が8bitの第2のオーディオデータを得る。
選択可能に、システムフレームは処理スレッドを含み、システムフレームにより、当該オーディオパラメータに従って第3のオーディオデータを処理し、第2のオーディオデータを得るステップは、処理スレッドにより、オーディオパラメータに従って第3のオーディオデータを処理し、第2のオーディオデータを得るステップを含む。システムフレームにおいて、第1のオーディオデータをミキシング処理すること、及びオーディオパラメータに従って第3のオーディオデータを処理することは、いずれも同一のスレッドにより完成され、複数のスレッドによりそれぞれ処理する必要がなく、処理過程におけるオーディオデータの伝送を減らし、さらにオーディオデータの処理速度を速める。
選択可能に、当該処理スレッドは、ミキシングスレッドである。
505において、システムフレームにより、第2のオーディオデータをハードウェア抽象化レイヤーに送信する。
システムフレームにより、第2のオーディオデータをハードウェア抽象化レイヤーに送信すると、ハードウェア抽象化レイヤーは、当該第2のオーディオデータをオーディオ収集プログラムに送信するが、オーディオ収集プログラムがまだ起動していなければ、又はハードウェア抽象化レイヤーがオーディオ収集プログラムと通信接続を確立していなければ、第2のオーディオデータをハードウェア抽象化レイヤーに送信しても、ハードウェア抽象化レイヤーは、第2のオーディオデータをオーディオ収集プログラムに送信することができず、したがって、システムフレームにより、ハードウェア抽象化レイヤーとオーディオ収集プログラムとの通信接続の確立が成功した場合に、第2のオーディオデータをハードウェア抽象化レイヤーに送信する。
1つの可能な実現形態において、システムフレームにより、第2のオーディオデータをハードウェア抽象化レイヤーに送信するステップは、ハードウェア抽象化レイヤーがオーディオ収集プログラムと通信接続が確立された場合、システムフレームにより第2のオーディオデータをハードウェア抽象化レイヤーに送信するステップと、ハードウェア抽象化レイヤーがまだオーディオ収集プログラムと通信接続を確立していない場合、オーディオ収集プログラムと通信接続を確立するようにハードウェア抽象化レイヤーを制御し、ハードウェア抽象化レイヤーとオーディオ収集プログラムとの通信接続の確立が成功した場合に、システムフレームにより、第2のオーディオデータをハードウェア抽象化レイヤーに送信するステップとを含む。
ここで、オーディオ収集プログラムと通信接続を確立するようにハードウェア抽象化レイヤーを制御するステップは、オーディオ収集プログラムに通信接続確立要求を送信するようにハードウェア抽象化レイヤーを制御し、オーディオ収集プログラムは当該通信接続確立要求を傍受した場合、ハードウェア抽象化レイヤーとオーディオ収集プログラムとの間の通信接続を確立するステップを含む。
しかし、オーディオ収集プログラムがハードウェア抽象化レイヤーから送信された通信接続確立要求を傍受しなければ、ハードウェア抽象化レイヤーとオーディオ収集プログラムが通信接続を確立できない場合、システムフレームは当該第2のオーディオデータを廃棄し、当該第2のオーディオデータをハードウェア抽象化レイヤーに送信しない。
ただし、オーディオ収集プログラムがハードウェア抽象化レイヤーから送信された通信接続確立要求を傍受しないのは、オーディオ収集プログラムがまだ起動に成功していないためである可能性がある。1つの可能な実現形態において、当該オーディオ収集プログラムはクラウドアプリケーションプログラムが生成したオーディオデータを端末のローカルアプリケーションプログラムに送信するために用いられるだけでなく、さらにクラウドアプリケーションプログラムが生成したビデオデータを端末のローカルアプリケーションプログラムに送信するために用いられる。オーディオ収集プログラムがまだ起動に成功していなければ、当該オーディオ収集プログラムは、クラウドアプリケーションプログラムが生成したビデオデータを端末のローカルアプリケーションプログラムに送信することがなく、それにより、端末はビデオデータに基づいてクラウドアプリケーションプログラムの画面をレンダリングできず、この場合、クラウドアプリケーションプログラムの第2のオーディオデータを廃棄しても、ユーザに影響を及ぼすことはできない。
選択可能には、ハードウェア抽象化レイヤーは、書き込みインタフェースを含み、第2のオーディオデータをハードウェア抽象化レイヤーに送信するステップは、システムフレームによりハードウェア抽象化レイヤーの書き込みインタフェースを呼び出し、第2のオーディオデータをハードウェア抽象化レイヤーに書き込むステップを含む。
例えば、システムフレームはハードウェア抽象化レイヤーの書き込みインタフェースを周期的に呼び出し、当該書き込みインタフェースにおいてハードウェア抽象化レイヤーがオーディオ収集プログラムと通信接続を確立するか否かを決定し、通信接続が確立された場合、第2のオーディオデータをハードウェア抽象化レイヤーに書き込み、通信接続を確立していない場合、オーディオ収集プログラムと通信接続を確立してみるようにハードウェア抽象化レイヤーを制御し、通信接続の確立が成功すれば、第2のオーディオデータをハードウェア抽象化レイヤーに書き込み、通信接続の確立が失敗すれば、当該第2のオーディオデータを廃棄する。
506において、ハードウェア抽象化レイヤーにより、ハードウェア抽象化レイヤーとオーディオ収集プログラムとの間の通信接続に基づいて、第2のオーディオデータをオーディオ収集プログラムに送信し、オーディオ収集プログラムは第2のオーディオデータを端末のローカルにおけるアプリケーションプログラムに送信するために用いられる。
ここで、ハードウェア抽象化レイヤーとオーディオ収集プログラムとの間に通信接続が確立され、当該通信接続は、いずれかの形態の通信接続であってもよい。
選択可能に、ハードウェア抽象化レイヤーとオーディオ収集プログラムとの間の通信接続はsocket(ソケット)接続である。
ここで、図6に示すように、ハードウェア抽象化レイヤー601は、socketのクライアントとし、オーディオ収集プログラム602は、socketのサーバ側とし、オーディオ収集プログラム602において、socketとバインドされる1つの単独なスレッドが存在し、当該スレッドにおいて傍受し、socketのaccept(受け入れ)関数呼び出しはブロッキング呼び出しであり、接続するsocketのクライアントがあるまで待ち、ハードウェア抽象化レイヤー601とオーディオ収集プログラム602がsocket接続を確立した後、オーディオ収集プログラム602は、socketのread(読み取り)関数を呼び出し、当該read関数はブロッキング関数として配置され、ハードウェア抽象化レイヤー601がオーディオデータを送信してくるまで待つ。ハードウェア抽象化レイヤー601とオーディオ収集プログラム602は、いずれも同一のコンテナ内で実行し、したがって、ハードウェア抽象化レイヤー601により第2のオーディオデータをオーディオ収集プログラム602に送信することは、ローカル送信に相当し、遅延時間はマイクロ秒レベルであり、第2のオーディオデータの伝送時間を大幅に減らし、サーバがオーディオデータを取得する遅延時間を短縮する。
選択可能に、ハードウェア抽象化レイヤーとオーディオ収集プログラムとの間の通信接続は、共有メモリ接続である。ここで、プログラムA及びプログラムBを例とし、共有メモリ接続とは、プログラムAとプログラムBが1つのメモリを共有し、プログラムAはデータを当該メモリに記憶し、プログラムBは、当該メモリからデータを読み取ることができ、プログラムAとプログラムBとの接続が実現され、プログラムAがデータをプログラムBに送信する効果も実現されることである。
1つの可能な実現形態において、システムフレームにより、第2のオーディオデータをハードウェア抽象化レイヤーに送信するステップは、システムフレームにより、第2のオーディオデータをハードウェア抽象化レイヤーの目標メモリに送信するステップであって、当該目標メモリはハードウェア抽象化レイヤーとオーディオ収集プログラムとの共有メモリであるステップを含む。したがって、ハードウェア抽象化レイヤーにより、ハードウェア抽象化レイヤーとオーディオ収集プログラムとの間の通信接続に基づいて、第2のオーディオデータをオーディオ収集プログラムに送信するステップは、オーディオ収集プログラムが目標メモリから第2のオーディオデータを読み取るステップを含む。
なお、ハードウェア抽象化レイヤーとオーディオ収集プログラムとの間は、いずれかの通信接続を確立することができ、本願の実施例は両者間の通信接続形態を限定せず、かつ本願の実施例はsocket接続及び共有メモリ接続のみで例示的に説明し、両者の通信接続形態を限定しない。
選択可能に、オーディオ収集プログラムは、第2のオーディオデータを取得した後、第2のオーディオデータを符号化プログラムに送信し、符号化プログラムにより第2のオーディオデータを符号化し、その後、符号化プログラムにより符号化された第2のオーディオデータを端末のローカルにおけるアプリケーションプログラムに送信する。
選択可能に、符号化プログラムと端末は、通信接続を確立することができ、当該通信接続に基づいて、符号化された第2のオーディオデータを端末のローカルにおけるアプリケーションプログラムに送信し、端末のローカルにおけるアプリケーションプログラムにより復号して再生する。選択可能に、当通信接続はwebrtcピアツーピア接続である。
なお、本願の実施例は、クラウドアプリケーションプログラムが第1のオーディオデータを出力し、オーディオ収集プログラムが第2のオーディオデータを取得することを例とし、サーバ内の複数のプログラムの間におけるオーディオデータの処理過程及び伝送過程を例示的に説明するものにすぎず、1つの可能な実現形態において、クラウドアプリケーションプログラムの実行中に、クラウドアプリケーションプログラムは、オーディオデータを常に生成し、又はオーディオデータを複数回生成することができ、毎回オーディオデータをクラウドアプリケーションプログラムからオーディオ収集プログラムに伝送する過程が上記ステップ501からステップ506の過程に類似し、本願の実施例は、ここで一つ一つ説明しない。
なお、クラウドアプリケーションプログラムがオーディオデータを継続的に出力すれば、当該クラウドアプリケーションプログラムは目標サイズのオーディオデータを周期的に出力する。選択可能に、当該オーディオデータの目標サイズは、端末のオーディオデータキャッシュメモリのサイズにより決定され、選択可能に、当該オーディオデータの目標サイズは、システムフレーム、ハードウェア抽象化レイヤー、又はオーディオ収集プログラム内のキャッシュメモリのサイズにより決定される。例えば、当該オーディオデータは、再生時間が10msのオーディオデータである。
本願の実施例にて提供されるオーディオデータ処理方法は、システムフレームとオーディオ収集プログラムとの間に中継プログラムを設置し、かつ中継プログラムとオーディオ収集プログラムとの間の通信接続を確立し、当該通信接続によりシステムフレームによって処理されたオーディオデータを当該オーディオ収集プログラムに直接送信することができる。オーディオ収集プログラムがオーディオ録音インタフェースを呼び出すことによって録音スレッドからオーディオデータを読み取ることに比べ、通信接続によりオーディオデータを直接送信する上記方式は、オーディオデータの伝送リンクを減少させ、オーディオ収集プログラムがオーディオデータを取得する時間を短縮し、サーバがオーディオデータを配信する遅延時間を低減する。
また、システムフレームにおける、ミキシング処理を行うスレッド及びオーディオパラメータに従って処理を行うスレッドは、いずれも処理スレッドであるため、1つのスレッドにより処理を2回行うことができ、オーディオデータの伝送を減少させ、それにより、ハードウェア抽象化レイヤーがオーディオデータを取得する時間を短縮し、さらに、サーバがオーディオデータを配信する遅延時間を低減する。
また、ハードウェア抽象化レイヤーとオーディオ収集プログラムとの間の通信接続の確立が失敗すると、ハードウェア抽象化レイヤーは、第2のオーディオデータをオーディオ収集プログラムに送信することができないため、システムフレームは、第2のオーディオデータをハードウェア抽象化レイヤーに送信する時に、ハードウェア抽象化レイヤーとオーディオ収集プログラムが通信接続を確立するか否かを確定し、例えば、図6に示すように、ハードウェア抽象化レイヤーとオーディオ収集プログラムがまだ通信接続を確立していない場合、オーディオ収集プログラムと通信接続を確立してみるようにハードウェア抽象化レイヤーを制御し、通信接続の確立が成功してはじめて、第2のオーディオデータをハードウェア抽象化レイヤーに送信し、通信接続の確立が失敗すると、第2のオーディオデータを廃棄することになり、不要なデータの送信を減少させ、サーバのために負担を軽減する。
1つの可能な実現形態において、中継プログラムは、リサンプリングプログラムであり、図7に示すように、当該サーバ700は、クラウドアプリケーションプログラム701と、システムフレーム702と、リサンプリングプログラム703と、オーディオ収集プログラム704と、を含む。
ここで、クラウドアプリケーションプログラム701は、システムフレーム702のインタフェースを呼び出し、オーディオデータをシステムフレーム702に書き込むことができ、システムフレーム702は、オーディオデータを処理した後、得たオーディオデータをリサンプリングプログラム703に送信する。リサンプリングプログラム703とオーディオ収集プログラム704との間には通信接続が確立され、オーディオデータをオーディオ収集プログラム704に直接送信することができる。
なお、上記クラウドアプリケーションプログラム701、システムフレーム702、リサンプリングプログラム703及びオーディオ収集プログラム704はいずれもサーバ700のオペレーティングシステムコンテナ内で実行される。
選択可能に、当該サーバ700は、符号化プログラム705をさらに含み、オーディオ収集プログラム704は、オーディオデータを符号化プログラム705に送信し、符号化プログラム705により当該オーディオデータを符号化し、符号化されたオーディオデータを端末のローカルにおけるアプリケーションプログラムに送信する。
上記図7に示すサーバに加えて、本願の実施例はオーディオデータ処理方法をさらに提供し、図8は本願の実施例にて提供されるオーディオデータ処理方法のフローチャートであり、本願の実施例の実行主体は図7に示すサーバであり、図8に示すように、当該方法は以下のステップ801~806を含む。
801において、クラウドアプリケーションプログラムの第1のオーディオデータをシステムフレームに入力する。
当該ステップ801が上記ステップ501に類似するため、ここでは一つ一つ説明しない。
802において、システムフレームにより、第1のオーディオデータをミキシング処理し、第3のオーディオデータを得る。
当該ステップ802が上記ステップ502に類似するため、ここでは一つ一つ説明しない。
803において、システムフレームにより、リサンプリングプログラムからオーディオパラメータを取得する。
ここで、リサンプリングプログラムにはオーディオパラメータが配置され、当該オーディオパラメータは、当該リサンプリングプログラムが受信したオーディオデータが当該オーディオパラメータを満たす必要があることを示し、例えば、オーディオパラメータが48KHzデュアルチャンネルであれば、当該リサンプリングプログラムが48KHzデュアルチャンネルのオーディオデータを受信するように配置されることが示される。したがって、システムフレームは、リサンプリングプログラムの要件に合致するオーディオデータを生成するために、リサンプリングプログラムからオーディオデータを取得する。
804において、システムフレームにより、当該オーディオパラメータに基づいて第3のオーディオデータを処理し、第2のオーディオデータを得る。
当該ステップ804が上記ステップ504に類似するため、ここでは一つ一つ説明しない。
805において、システムフレームにより、第2のオーディオデータをリサンプリングプログラムに送信する。
ここで、システムフレームにより、第2のオーディオデータをリサンプリングプログラムに送信すると、リサンプリングプログラムは、当該第2のオーディオデータをオーディオ収集プログラムに送信するが、オーディオ収集プログラムがまだ起動していなければ、又はリサンプリングプログラムがオーディオ収集プログラムと通信接続を確立していなければ、第2のオーディオデータをリサンプリングプログラムに送信しても、リサンプリングプログラムは、第2のオーディオデータをオーディオ収集プログラムに送信することができず、選択可能に、システムフレームにより、リサンプリングプログラムとオーディオ収集プログラムとの通信接続の確立が成功した場合に、第2のオーディオデータをリサンプリングプログラムに送信する。
1つの可能な実現形態において、システムフレームにより、第2のオーディオデータをリサンプリングプログラムに送信するステップは、リサンプリングプログラムがオーディオ収集プログラムと通信接続が確立された場合、システムフレームにより第2のオーディオデータをリサンプリングプログラムに送信するステップと、リサンプリングプログラムがまだオーディオ収集プログラムと通信接続を確立していない場合、オーディオ収集プログラムと通信接続を確立するようにリサンプリングプログラムを制御し、リサンプリングプログラムとオーディオ収集プログラムとの通信接続の確立が成功した場合に、システムフレームにより、第2のオーディオデータをリサンプリングプログラムに送信するステップとを含む。
ここで、オーディオ収集プログラムと通信接続を確立するようにリサンプリングプログラムを制御するステップは、オーディオ収集プログラムに通信接続確立要求を送信するようにリサンプリングプログラムを制御し、オーディオ収集プログラムは当該通信接続確立要求を傍受した場合、リサンプリングプログラムとオーディオ収集プログラムとの間の通信接続を確立するステップを含む。
しかし、オーディオ収集プログラムがリサンプリングプログラムから送信された通信接続確立要求を傍受しなければ、リサンプリングプログラムとオーディオ収集プログラムが通信接続を確立できない場合、システムフレームは当該第2のオーディオデータを廃棄し、当該第2のオーディオデータをリサンプリングプログラムに送信しない。
ただし、オーディオ収集プログラムがリサンプリングプログラムから送信された通信接続確立要求を傍受しないのは、オーディオ収集プログラムがまだ起動に成功していないためである可能性がある。1つの可能な実現形態において、当該オーディオ収集プログラムはクラウドアプリケーションプログラムが生成したオーディオデータを端末のローカルアプリケーションプログラムに送信するために用いられるだけでなく、さらにクラウドアプリケーションプログラムが生成したビデオデータを端末のローカルアプリケーションプログラムに送信するために用いられる。オーディオ収集プログラムがまだ起動に成功していなければ、当該オーディオ収集プログラムはクラウドアプリケーションプログラムが生成したビデオデータを端末のローカルアプリケーションプログラムに送信することがなく、それにより、端末はビデオデータに基づいてクラウドアプリケーションプログラムの画面をレンダリングできず、この場合、クラウドアプリケーションプログラムの第2のオーディオデータを廃棄しても、ユーザに影響を及ぼすことはできない。
なお、本願の実施例は、リサンプリングプログラムとオーディオ収集プログラムが通信接続の確立に成功した場合に、システムフレームが第2のオーディオデータをリサンプリングプログラムに送信することを例とし、サーバにおけるオーディオデータの伝送過程を例示的に説明するものにすぎず、別の実施例において、リサンプリングプログラムとオーディオ収集プログラムが通信接続を確立するか否かに関わらず、システムフレームは第2のオーディオデータをリサンプリングプログラムに送信する。
選択可能に、リサンプリングプログラムは、受信スレッドを含み、システムフレームにより、第2のオーディオデータをハードウェア抽象化レイヤーに送信するステップは、システムフレームにより、第2のオーディオデータをリサンプリングプログラムの受信スレッドに送信するステップを含む。
選択可能に、システムフレームは、処理スレッドにより第1のオーディオデータを処理し、第2のオーディオデータを得て、したがって、1つの可能な実現形態において、システムフレームにより、第2のオーディオデータをリサンプリングプログラムの受信スレッドに送信するステップは、処理スレッドにより、第2のオーディオデータをリサンプリングプログラムの受信スレッドに送信するステップを含む。
806において、リサンプリングプログラムにより、リサンプリングプログラムとオーディオ収集プログラムとの間の通信接続に基づいて、第2のオーディオデータをオーディオ収集プログラムに送信し、オーディオ収集プログラムは第2のオーディオデータを端末のローカルにおけるアプリケーションプログラムに送信するために用いられる。
ここで、リサンプリングプログラムとオーディオ収集プログラムとの間に通信接続が確立され、当該通信接続はいずれかの形態の通信接続である。
選択可能に、リサンプリングプログラムとオーディオ収集プログラムとの間の通信接続は、socket接続であり、ここで、リサンプリングプログラムは、socketのクライアントとし、オーディオ収集プログラムはサーバ側とする。ここで、リサンプリングプログラムにより、リサンプリングプログラムとオーディオ収集プログラムとの間のsocket接続に基づいて、第2のオーディオデータをオーディオ収集プログラムに送信する方式は、ステップ506において、ハードウェア抽象化レイヤーにより、ハードウェア抽象化レイヤーとオーディオ収集プログラムとの間のsocket接続に基づいて、第2のオーディオデータをオーディオ収集プログラムに送信する方式に類似し、ここでは一つ一つ説明しない。
選択可能に、リサンプリングプログラムとオーディオ収集プログラムとの間の通信接続は、共有メモリ接続である。ここで、リサンプリングプログラムにより、リサンプリングプログラムとオーディオ収集プログラムとの間の共有メモリ接続に基づいて、第2のオーディオデータをオーディオ収集プログラムに送信する方式は、ステップ506において、ハードウェア抽象化レイヤーにより、ハードウェア抽象化レイヤーとオーディオ収集プログラムとの間の共有メモリ接続に基づいて、第2のオーディオデータをオーディオ収集プログラムに送信する方式に類似し、ここでは一つ一つ説明しない。
選択可能に、リサンプリングプログラムは、受信スレッドを含み、リサンプリングプログラムとオーディオ収集プログラムとの間の通信接続は、受信スレッドとオーディオ収集プログラムとの間の通信接続であり、又は、リサンプリングプログラムは、受信スレッドと第1の送信スレッドと、を含み、そのうち、受信スレッドは、システムフレームから送信された第2のオーディオデータを受信するために用いられ、第1の送信スレッドは、受信スレッドが受信した第2のオーディオデータをオーディオ収集プログラムに送信するために用いられる。リサンプリングプログラムとオーディオ収集プログラムとの間の通信接続は、第1の送信スレッドとオーディオ収集プログラムとの間の通信接続。
また、上記ステップ803から分かるように、第2のオーディオデータのオーディオパラメータは、リサンプリングプログラムの要件に合致し、当該第2のオーディオデータのオーディオパラメータがオーディオ収集プログラムの要件にも合致すれば、リサンプリングプログラムは、第2のオーディオデータをオーディオ収集プログラムに直接送信することができ、第2のオーディオデータのオーディオパラメータがオーディオ収集プログラムの要件に合致しなければ、リサンプリングプログラムは、処理後の第2のオーディオデータがオーディオ収集プログラムの要件に合致するように、当該第2のオーディオデータをリサンプリング処理する必要があり、そして処理後の第2のオーディオデータをオーディオ収集プログラムに送信する。
例えば、リサンプリングプログラムに配置されたオーディオパラメータは、48KHzデュアルチャンネルであり、オーディオ収集プログラムのオーディオパラメータが48KHzデュアルチャンネルであれば、リサンプリングプログラムは、第2のオーディオデータをリサンプリング処理する必要がなく、第2のオーディオデータをオーディオ収集プログラムに直接送信し、オーディオ収集プログラムのオーディオパラメータが16KHzデュアルチャンネルであれば、リサンプリングプログラムは、処理後の第2のオーディオデータのサンプリングレートが16KHzになるように、第2のオーディオデータをリサンプリング処理する必要がある。
リサンプリングプログラムに配置されたオーディオパラメータとオーディオ収集プログラムに配置されたオーディオパラメータが同じである場合に、リサンプリングプログラムは、リサンプリング処理を行う必要がなく、そのため、リサンプリングプログラムに配置されたオーディオパラメータとオーディオ収集プログラムに配置されたオーディオパラメータが同じとなるように、オーディオ収集プログラムに配置されたオーディオパラメータに基づいてリサンプリングプログラムを配置してもよい。
なお、1つの可能な実現形態において、システムフレームは、録音スレッドと検出スレッドとをさらに含み、システムフレーム内の検出スレッドは現在録音スレッドにおけるデータを読み取る他のプログラムがあるか否かを検出し、録音スレッドにおけるデータを読み取る他のプログラムがなければ、システムフレームは、リサンプリングプログラムにデータを送信しない。当該検出スレッドの設計は、不要な演算を省き、消費電力を低減することに初心がある。
また、システムフレームが録音スレッドをさらに含めば、サーバはさらに以下のステップ807からステップ810を実行する必要がある。システムフレームが録音スレッドを含まなければ、オーディオ収集プログラムは、第2のオーディオデータを取得した後、当該第2のオーディオデータを端末のローカルアプリケーションプログラムに送信する。
807において、リサンプリングプログラムにより、第2のオーディオデータを録音スレッドに送信する。
ここで、リサンプリングプログラムにより、第2のオーディオデータを録音スレッドに送信すると、録音スレッドは受信した第2のオーディオデータを録音し、録音スレッドは、第2のオーディオデータを受信しながら第2のオーディオデータを録音し、かつ当該録音過程に一定の時間がかかるため、リサンプリングプログラムは、第2のオーディオデータを録音スレッドに送信することにも一定の時間がかかる。選択可能に、リサンプリングプログラムは受信スレッドと第2の送信スレッドとを含み、そのうち、受信スレッドは、システムフレームから第2のオーディオデータを受信するために用いられ、第2の送信スレッドに利用可能なキャッシュメモリが存在する場合、第2のオーディオデータを第2の送信スレッドに送信する。第2の送信スレッドは、第2のオーディオデータを受信した後、録音スレッドに配置されたオーディオパラメータに基づいて当該第2のオーディオデータをリサンプリング処理するか否かを決定し、当該第2のオーディオデータをリサンプリング処理する必要がある場合、録音スレッドに配置されたオーディオパラメータに従って、第2のオーディオデータをリサンプリング処理し、処理後の第2のオーディオデータを得て、処理後の第2のオーディオデータを録音スレッドに送信し、第2のオーディオデータをリサンプリング処理する必要がない場合、第2のオーディオデータを録音スレッドに直接送信する。
ただし、第2の送信スレッドに利用可能なキャッシュメモリが存在することは、第2の送信スレッドがリサンプリングプログラムの前回受信したオーディオデータを全て録音スレッドに送信することである。
また、第2のオーディオデータのオーディオパラメータと録音スレッドに配置されたオーディオパラメータが同じであれば、リサンプリングプログラムは、第2のオーディオデータを録音スレッドに直接送信すると、当該録音スレッドは、当該第2のオーディオデータを録音することができ、第2のオーディオデータのオーディオパラメータと録音スレッドに配置されたオーディオパラメータが同じでなければ、リサンプリングプログラムは、第2のオーディオデータを録音スレッドに直接送信しても、当該録音スレッドは、該第2のオーディオデータを順次受信することができない可能性がある。ここで、第2の送信スレッドは、録音スレッドに配置されたオーディオパラメータに基づいて当該第2のオーディオデータをリサンプリング処理するか否かを決定するステップは、第2の送信スレッドは第2のオーディオデータのオーディオパラメータと録音スレッドに配置されたオーディオパラメータが同じであるか否かを決定し、第2のオーディオデータのオーディオパラメータと録音スレッドに配置されたオーディオパラメータが同じであれば、第2のオーディオデータをリサンプリング処理する必要がないと決定するステップと、第2のオーディオデータのオーディオパラメータと録音スレッドに配置されたオーディオパラメータが異なれば、第2のオーディオデータをリサンプリング処理する必要があると決定するステップとを含む。
808において、システムフレームにより、第2のオーディオデータを録音し、第3のオーディオデータを得る。
システムフレームは、録音スレッドに対応するキャッシュメモリをさらに含み、録音スレッドにより第2のオーディオデータを録音し、第3のオーディオデータを得るステップは、録音スレッドにより第2のオーディオデータを対応するキャッシュメモリにコピーし、第3のオーディオデータを得るステップであって、第3のオーディオデータのデータ内容は、第2のオーディオデータのデータ内容と同じであるステップを含む。
809において、オーディオ収集プログラムにより、オーディオ録音インタフェースを呼び出して録音スレッドから第3のオーディオデータを読み取る。
ここで、録音スレッドは、第3のオーディオデータを対応するキャッシュメモリにコピーし、オーディオ収集プログラムにより、オーディオ録音インタフェースを呼び出して録音スレッドから第3のオーディオデータを読み取るステップは、オーディオ収集プログラムにより、オーディオ録音インタフェースを呼び出して録音スレッドに対応するキャッシュメモリから第3のオーディオデータを読み取るステップを含む。
選択可能に、オーディオ録音インタフェースはread(読み取り)関数を含み、オーディオ収集プログラムにより、オーディオ録音インタフェースを呼び出して録音スレッドから第3のオーディオデータを読み取るステップは、オーディオ収集プログラムがオーディオ録音インタフェースのread関数を呼び出し、録音スレッドに対応するキャッシュメモリから第3のオーディオデータを読み取り、録音スレッドに対応するキャッシュメモリに第3のオーディオデータが存在しなければ、当該オーディオ収集プログラムが、録音スレッドが第3のオーディオデータをキャッシュメモリにコピーするまで待ち、そして読み取るステップを含む。
810において、オーディオ収集プログラムにより、第3のオーディオデータを廃棄し、第2のオーディオデータを端末のローカルにおけるアプリケーションプログラムに送信する。
ここで、第2のオーディオデータのデータ内容は、第3のオーディオデータのデータ内容と同じであるが、第2のオーディオデータは、リサンプリングプログラムからオーディオ収集プログラムに直接送信されるものであり、第3のオーディオデータはリサンプリングプログラムから録音スレッドに送信され、そして、オーディオ収集プログラムにより録音スレッドから読み取られるものであり、そのため、第3のオーディオデータに比べて、第2のオーディオデータは、オーディオ収集プログラムにより速く到達することができ、サーバがオーディオデータを配信する遅延時間を低減するために、オーディオ収集プログラムは、第2のオーディオデータを端末のローカルにおけるアプリケーションプログラムに送信し、第3のオーディオデータを廃棄する。
また、オーディオ収集プログラムとリサンプリングプログラムとの間に通信接続が確立され、第2のオーディオデータは通信接続に基づいて取得されたオーディオデータであり、第3のオーディオデータはオーディオ収集プログラムがオーディオ録音インタフェースを呼び出すことにより取得されたオーディオデータであり、そのため、第2のオーディオデータと第3のオーディオデータは取得方式が異なり、選択可能に、取得方式に基づいて第2のオーディオデータと第3のオーディオデータを区別し、第2のオーディオデータを端末のローカルにおけるアプリケーションプログラムに送信する。
例えば、オーディオ収集プログラムは、第1の収集スレッドと第2の収集スレッドとを含み、第1の収集スレッドは、第2のオーディオデータを収集するために用いられ、当該第1の収集スレッドとリサンプリングプログラムとの間に通信接続が確立され、リサンプリングプログラムは、リサンプリングプログラムと当該第1の収集プログラムとの間の通信接続に基づいて、第2のオーディオデータを第1の収集スレッドに送信し、第2の収集スレッドは第3のオーディオデータを収集するために用いられ、当該第2の収集スレッドは、オーディオ録音インタフェースを呼び出して録音スレッドから第3のオーディオデータを読み取る。ここで、サーバは、第1の収集スレッドが収集したオーディオデータを端末のローカルアプリケーションプログラムに送信し、第2の収集スレッドが収集したオーディオデータを廃棄する。
なお、本願の実施例におけるリサンプリングプログラムは、オペレーティングシステム内のプログラムであり、すなわち、当該リサンプリングプログラムは、オペレーティングシステムに標準装備されるプログラムであり、本願は、オペレーティングシステムに固有のプログラムを改善することにより上記オーディオデータ処理方法を実現する。
なお、本願の実施例は、クラウドアプリケーションプログラムが第1のオーディオデータを出力し、オーディオ収集プログラムが第2のオーディオデータを取得することを例とし、サーバ内の複数のプログラムの間におけるオーディオデータの処理過程及び伝送過程を例示的に説明するものにすぎず、1つの可能な実現形態において、クラウドアプリケーションプログラムの実行中に、クラウドアプリケーションプログラムはオーディオデータを常に生成し、又はオーディオデータを複数回生成することができ、毎回オーディオデータをクラウドアプリケーションプログラムからオーディオ収集プログラムに伝送する過程は上記ステップ801からステップ810の過程に類似し、本願の実施例はここで一つ一つ説明しない。
なお、クラウドアプリケーションプログラムがオーディオデータを継続的に出力すれば、当該クラウドアプリケーションプログラムは、目標サイズのオーディオデータを周期的に出力する。選択可能に、当該オーディオデータの目標サイズは、端末のオーディオデータキャッシュメモリのサイズにより決定され、選択可能に、当該オーディオデータの目標サイズはシステムフレーム、リサンプリングプログラム、又はオーディオ収集プログラム内のキャッシュメモリのサイズにより決定される。例えば、当該オーディオデータは、再生時間が10msのオーディオデータである。
本願の実施例にて提供されるオーディオデータ処理方法は、オペレーティングシステム内のリサンプリングプログラムを改善し、リサンプリングプログラムとオーディオ収集プログラムとの間に通信接続を確立し、当該リサンプリングプログラムが当該通信接続に基づいて、第2のオーディオデータをオーディオ収集プログラムに直接送信できるようにする。オーディオ収集プログラムがオーディオ録音インタフェースを呼び出すことによって録音スレッドからオーディオデータを読み取ることに比べ、通信接続によりオーディオデータを直接送信する上記方式は、オーディオデータの伝送リンクを減少させ、オーディオ収集プログラムがオーディオデータを取得する時間を短縮し、サーバがオーディオデータを配信する遅延時間を低減する。
また、システムフレームがリサンプリングプログラムにオーディオデータを継続的に送信することを保証するために、リサンプリングプログラムは、オーディオデータを録音スレッドに送信し、オーディオ収集プログラムは、録音スレッドからオーディオデータを読み取り、オーディオデータの継続的な処理及び送信が保証され、また、オーディオ収集プログラムは、リサンプリングプログラムから送信されたオーディオデータを送信し、録音スレッドから読み取られたオーディオデータを廃棄し、オーディオデータを配信する遅延時間が短いことが保証される。
また、本願の実施例は、上記オーディオデータ処理方法におけるサーバがオーディオデータを取得する遅延時間を取得するため遅延時間取得方法をさらに提供する。図9は本願の実施例にて提供される遅延時間取得方法のフローチャートであり、本願の実施例の実行主体はサーバであり、図9に示すように、当該方法は以下のステップ901~904を含む。
901において、検出アプリケーションプログラムの第1の検出オーディオデータをシステムフレームに入力し、第1の検出オーディオデータの送信時間を記録する。
ここで、当該検出アプリケーションプログラムは、サーバで実行され、かつサーバがオーディオデータを配信する遅延時間を検出するために用いられるアプリケーションプログラムである。当該検出アプリケーションプログラムは検出オーディオデータを出力することができ、後続して、サーバ内の他のプログラムが当該検出オーディオデータを受信する時間を取得することにより、他のプログラムにおける検出オーディオデータの伝送がかかる時間を取得し、ただし、サーバ内の他のプログラムは検出アプリケーションプログラム以外のプログラムである。
ここで、第1の検出オーディオデータは検出アプリケーションプログラムから出力されたいずれかの検出オーディオデータであり、選択可能に、検出アプリケーションプログラムはオーディオデータを継続的に出力することができ、かつ検出オーディオデータを出力する以外に、他のオーディオデータをさらに出力し、ただし、検出オーディオデータと他のオーディオデータを区別することにより、プログラムが検出オーディオデータを受信する時間を取得するために、検出オーディオデータは他のオーディオデータと異なる。
902において、システムフレームにより第1の検出オーディオデータを処理し、第2の検出オーディオデータを得て、第2の検出オーディオデータを中継プログラムに送信する。
ただし、システムフレームは、オペレーティングシステムにおけるフレームであり、オーディオデータを処理するために用いられる。中継プログラムは、システムフレームとオーディオ収集プログラムとの間のプログラムであり、システムフレームによって処理されたオーディオデータをオーディオ収集プログラムに伝送するために用いられ、当該中継プログラムは、オーディオデータを転送する機能を有し、選択可能に、中継プログラムは、さらに他の機能を有し、本願の実施例は、これについて限定しない。
第2の検出オーディオデータは、システムフレームにより第1の検出オーディオデータを処理した後のオーディオデータであるが、当該第2の検出オーディオデータと第1の検出オーディオデータは、いずれも他のオーディオデータと区別できるオーディオデータであり、そのため、第1の検出オーディオデータを処理し、第2の検出オーディオデータを得ても、第2の検出オーディオデータと他のオーディオデータを区別でき、それにより、プログラムが第2の検出オーディオデータを受信する時間を得る。
903において、中継プログラムにより、中継プログラムとオーディオ収集プログラムとの間の通信接続に基づいて、第2の検出オーディオデータをオーディオ収集プログラムに送信し、オーディオ収集プログラムが第2の検出オーディオデータを受信する第1の受信時間を記録し、オーディオ収集プログラムは、第2の検出オーディオデータを端末のローカルにおけるアプリケーションプログラムに送信するために用いられる。
ここで、オーディオ収集プログラムは、サーバ内のオーディオデータを収集し、オーディオデータを端末に送信するために用いられるプログラムであり、中継プログラムとオーディオ収集プログラムとの間に通信接続が確立され、中継プログラムは、当該通信接続により、第2のオーディオデータをオーディオ収集プログラムに直接送信する。
904において、送信時間と第1の受信時間との間の第1の時間差を取得し、第1の時間差は検出オーディオデータが検出アプリケーションプログラムからオーディオ収集プログラムに伝送される遅延時間を表す。
送信時間は、検出アプリケーションプログラムが検出オーディオデータを出力する時間であり、第1の受信時間はオーディオ収集プログラムが当該検出オーディオデータを受信する時間であり、かつオーディオ収集プログラムはサーバ内のオーディオデータを収集し、オーディオデータを端末に送信するために用いられるプログラムであるため、オーディオ収集プログラムが当該検出オーディオデータを受信する時間は、サーバがオーディオデータを取得する時間と考えることができ、したがって、送信時間と第1の受信時間との間の第1の時間差はサーバがオーディオデータを取得することがかかる時間、すなわちサーバがオーディオデータを配信する遅延時間をさらに示す。
本願の実施例にて提供される遅延時間取得方法は、検出アプリケーションプログラムにより検出オーディオデータを送信し、オーディオ収集プログラムが検出オーディオデータを受信する受信時間を取得し、送信時間と受信時間との間の時間差に基づいて、オーディオデータが検出アプリケーションプログラムからオーディオ収集プログラムに伝送されることがかかる時間を正確に得ることができ、すなわちサーバがオーディオデータを取得する時間を得て、当該時間はサーバがオーディオデータを配信する遅延時間を表すことができ、後続して、当該時間に基づいてサーバがオーディオデータを取得する遅延時間がオーディオデータの再生効果に影響を与えるか否か、端末のユーザの聴覚効果に影響を与えるか否かを決定することができ、さらにサーバを改善し続けるか否かを決定し、開発者に好適な改善根拠を提供する。
なお、上記ステップ902及びステップ903における中継プログラムは、ハードウェア抽象化レイヤーであり、又はオペレーティングシステム内の既存のリサンプリングプログラムであり、又は他のプログラムであり、本願の実施例は、これについて限定しない。
選択可能に、当該中継プログラムは、ハードウェア抽象化レイヤーであり、図4に示すように、当該サーバ400は、クラウドアプリケーション401と、システムフレーム402と、ハードウェア抽象化レイヤー403と、オーディオ収集プログラム404と、を含む。上記図4に示すサーバに加えて、本願の実施例は、図4に示すサーバがオーディオデータを配信する遅延時間を検出するために用いることができる遅延時間取得方法をさらに提供する。図10は本願の実施例にて提供される遅延時間取得方法のフローチャートであり、本願の実施例の実行主体は図4に示すサーバであり、図10に示すように、当該方法は以下のステップ1001~1005を含む。
1001において、検出アプリケーションプログラムの第1の検出オーディオデータをシステムフレームに入力し、第1の検出オーディオデータの送信時間を記録する。
ここで、当該検出アプリケーションプログラムは、サーバで実行され、かつサーバがオーディオデータを配信する遅延時間を検出するために用いられるアプリケーションプログラムである。当該検出アプリケーションプログラムは、検出データを出力することができ、後続して、サーバ内の他のプログラムが当該検出データを受信する時間を取得することにより、他のプログラムにおける検出データの伝送がかかる時間を取得し、ただし、サーバ内の他のプログラムは、検出アプリケーションプログラム以外のプログラムである。
サーバ内の複数のプログラムの間におけるオーディオデータの伝送がかかる時間をより正確に取得するために、検出アプリケーションプログラムから出力された検出データは、検出オーディオデータとし、検出オーディオデータがオーディオデータであるため、検出オーディオデータをシステムフレームなど他のプログラムに出力した後、当該他のプログラムは、真のオーディオデータ処理過程を模擬することができ、このように、後続して、他のプログラムが検出オーディオデータを受信する時間を取得することにより遅延時間を決定することはより正確になる。
選択可能に、検出アプリケーションプログラムは上記ステップ501におけるクラウドアプリケーションプログラムと異なり、クラウドアプリケーションプログラムは受信した操作命令に従ってオーディオデータを出力し、検出アプリケーションプログラムは、配置された検出ロジックに従ってオーディオデータを出力する。選択可能に、配置された検出ロジックは第1の時間おきに検出オーディオデータを1回送信することである。ただし、第1の時間は4秒、5秒など、いずれかの時間であってもよい。
ここで、第1の検出オーディオデータは、検出アプリケーションプログラムから出力されたいずれかの検出オーディオデータであり、選択可能に、検出アプリケーションプログラムはオーディオデータを継続的に出力することができ、かつ検出オーディオデータを出力する以外に、他のオーディオデータをさらに出力し、ただし、検出オーディオデータと他のオーディオデータを区別することにより、プログラムが検出オーディオデータを受信する時間を取得するために、検出オーディオデータは他のオーディオデータと異なる。
選択可能に、第1の検出オーディオデータは、タグ付きのオーディオデータであり、後続して、第1の検出オーディオデータに付くタグに基づいて第1の検出オーディオデータを受信するか否かを決定することができる。
選択可能に、第1の検出オーディオデータは、固定値のオーディオデータであり、かつ当該第1の検出オーディオデータは検出アプリケーションプログラムから出力された他のオーディオデータと異なる。例えば、第1の検出オーディオデータの値は、0xffff(0xは16進数、ffffは、16進数の値を表す)、検出アプリケーションプログラムから出力された他のオーディオデータの値は、0であり、図11に示すように、当該検出アプリケーションプログラムは、値が0のオーディオデータを出力するとともに、値が0xffffの検出オーディオデータ1101を周期的に出力する。
選択可能に、サーバは、検出アプリケーションプログラムが第1の検出オーディオデータをシステムフレームに入力する時、第1の検出オーディオデータの送信時間である現在時間を記録する記録プログラムをさらに含む。選択可能に、検出アプリケーションプログラムは、第1の検出オーディオデータをシステムフレームに入力する時、記録プログラムにメッセージを送信し、当該メッセージは検出アプリケーションプログラムが第1の検出オーディオデータをシステムフレームに入力することを指示し、当該記録プログラムは、当該メッセージを受信する時間を記録し、第1の検出オーディオデータの送信時間とする。
なお、当記録プログラムは、検出アプリケーションプログラム以外のプログラムであり、又は検出アプリケーションプログラムにおける記録機能を有するプログラムである。
選択可能に、当該記録プログラムは、他のプログラムを検出する機能をさらに有し、当該記録プログラムは、システムフレーム内のデータを検出することができ、システムフレーム内に検出オーディオデータが含まれることを検出した時、現在時間を記録し、当該現在時間を第1の検出オーディオデータの送信時間とする。
1002において、システムフレームにより第1の検出オーディオデータを処理し、第2の検出オーディオデータを得て、第2の検出オーディオデータをハードウェア抽象化レイヤーに送信する。
なお、システムフレームにより第1の検出オーディオデータを処理する方式は、上記ステップ502におけるシステムフレームにより第1のオーディオデータを処理する方式に類似し、システムフレームにより第2の検出オーディオデータをハードウェア抽象化レイヤーに送信する方式は、上記ステップ505におけるシステムフレームにより第2のオーディオデータをハードウェア抽象化レイヤーに送信する方式に類似し、ここでは一つ一つ説明しない。
なお、システムフレームにより第1の検出オーディオデータを処理した後に得られた第2の検出オーディオデータは第1の検出オーディオデータに類似し、いずれも他のオーディオデータと区別できるオーディオデータである。
例えば、第1の検出オーディオデータがタグ付きのオーディオデータであれば、第2の検出オーディオデータにも当該タグが付く。第1の検出オーディオデータの値が0xffffであり、他のオーディオデータの値が0であれば、第2の検出オーディオデータは値が0でない値であり、他のオーディオデータは、処理された後に、値が依然として0であり、すなわち検出オーディオデータを処理するため、検出オーディオデータの検出機能を無効にすることはない。
1003において、ハードウェア抽象化レイヤーが第2の検出オーディオデータを受信する第2の受信時間を記録し、送信時間と第2の受信時間との間の第2の時間差を取得し、第2の時間差は検出オーディオデータが検出アプリケーションプログラムからハードウェア抽象化レイヤーに伝送される遅延時間を表す。
ここで、記録プログラムはさらにハードウェア抽象化レイヤーが第2の検出オーディオデータを受信する第2の受信時間を記録するために用いられ、第2の受信時間を記録する前に、まずハードウェア抽象化レイヤーが第2の検出オーディオデータを受信したと決定する。選択可能に、ハードウェア抽象化レイヤーは、第2の検出オーディオデータを受信した後、記録プログラムにメッセージを報告し、記録プログラムに第2の検出オーディオデータを既に受信したことを通知し、記録プログラムが報告されたメッセージを受信した時、現在時間を記録し、当該現在時間は、ハードウェア抽象化レイヤーが第2の検出オーディオデータを受信する第2の受信時間である。
選択可能に、当該記録プログラムは、他のプログラムを検出する機能をさらに有し、当該記録プログラムは、ハードウェア抽象化レイヤーのコードに第2の検出オーディオデータが含まれるか否かを検出し、第2の検出オーディオデータを検出した時、現在時間を記録し、当該現在時間をハードウェア抽象化レイヤーが第2の検出オーディオデータを受信する第2の受信時間とする。
1004において、ハードウェア抽象化レイヤーにより、ハードウェア抽象化レイヤーとオーディオ収集プログラムとの間の通信接続に基づいて、第2の検出オーディオデータをオーディオ収集プログラムに送信し、オーディオ収集プログラムが第2の検出オーディオデータを受信する第1の受信時間を記録し、オーディオ収集プログラムは、第2の検出オーディオデータを端末のローカルにおけるアプリケーションプログラムに送信するために用いられる。
ここで、ハードウェア抽象化レイヤーにより、ハードウェア抽象化レイヤーとオーディオ収集プログラムとの間の通信接続に基づいて、第2の検出オーディオデータをオーディオ収集プログラムに送信するステップは、上記ステップ506におけるハードウェア抽象化レイヤーにより、ハードウェア抽象化レイヤーとオーディオ収集プログラムとの間の通信接続に基づいて、第2のオーディオデータをオーディオ収集プログラムに送信するステップに類似し、ここでは一つ一つ説明しない。
ここで、記録プログラムはさらにオーディオ収集プログラムが第2の検出オーディオデータを受信する第1の受信時間を記録するために用いられ、第1の受信時間を記録する前に、まずオーディオ収集プログラムが第2の検出オーディオデータを受信したと決定する。選択可能に、オーディオ収集プログラムは、第2の検出オーディオデータを受信した後、記録プログラムにメッセージを報告し、記録プログラムに第2の検出オーディオデータを既に受信したことを通知し、記録プログラムが報告されたメッセージを受信した時、現在時間を記録し、当該現在時間は、オーディオ収集プログラムが第2の検出オーディオデータを受信する第1の受信時間である。
選択可能に、当該記録プログラムは、他のプログラムを検出する機能をさらに有し、例えば、当該記録プログラムは、オーディオ収集プログラムのコードに第2の検出オーディオデータが含まれるか否かを検出し、第2の検出オーディオデータを検出した時、現在時間を記録し、当該現在時間をオーディオ収集プログラムが第2の検出オーディオデータを受信する第1の受信時間とする。
1005において、送信時間と第1の受信時間との間の第1の時間差を取得し、第1の時間差は、検出オーディオデータが検出アプリケーションプログラムからオーディオ収集プログラムに伝送される遅延時間を表す。
なお、本願の実施例は、検出アプリケーションプログラムが第1の検出オーディオデータを出力し、サーバに内の複数のプログラムの間における第1の検出オーディオデータの伝送がかかる時間を取得することを例とし、サーバがオーディオデータを配信する遅延時間を取得することを例示的に説明するものにすぎず、1つの可能な実現形態において、検出アプリケーションプログラムの実行中に、当該検出アプリケーションプログラムはオーディオデータを常に出力することができ、かつ一定時間おきに検出オーディオデータを1回出力し、各検出オーディオデータに基づいて、いずれもサーバがオーディオデータを配信する遅延時間を取得することができ、選択可能に、複数の遅延時間に対して統計処理を行い、サーバがオーディオデータを配信する目標遅延時間を得て、当該目標遅延時間は複数の検出オーディオデータの伝送過程を考慮するため、当該目標遅延時間はより正確である。選択可能に、統計処理は平均処理である。
例えば、検出アプリケーションプログラムは、一定時間おきに検出オーディオデータを1回送信し、後続して、複数の第1の時間差及び第2の時間差を取得することができ、複数の第1の時間差に対して統計処理を行うことにより、得られた時間差は検出オーディオデータが検出アプリケーションプログラムからオーディオ収集プログラムに伝送される遅延時間をより正確に表すことができ、複数の第2の時間差に対して統計処理を行うことにより、得られた時間差は検出オーディオデータが検出アプリケーションプログラムからハードウェア抽象化レイヤーに伝送される遅延時間をより正確に表すことができる。
なお、隣接する2つの検出オーディオデータが明確に区別できることを確保するために、例えば4秒、5秒など、より大きな時間間隔を設定することができる。
図12に示すように、実際に遅延時間を取得するプロセスにおいて、検出アプリケーションプログラム1201が第1の検出オーディオデータを送信する送信時間はt0であり、ハードウェア抽象化レイヤー1202が第2の検出オーディオデータを受信する第2の受信時間はt1であり、t0及びt1から分かるように、検出アプリケーションプログラム1201からハードウェア抽象化レイヤー1202までの検出オーディオデータの遅延時間は約40ms(ミリ秒)であり、オーディオ収集プログラム1203が第2の検出オーディオデータを受信する時間はt2であり、t1及びt2から分かるように、ハードウェア抽象化レイヤー1202からオーディオ収集プログラム1203が第2の検出オーディオデータを受信するまでの第2の検出オーディオデータの遅延時間は約0msである。そのため、サーバがオペレーティングシステムからオーディオデータを取得することがかかる時間を40ms程度に制御し、サーバがオーディオデータを取得することがかかる時間を大幅に短縮する。
なお、1つの可能な実現形態において、サーバはクラウドアプリケーションプログラムが生成したオーディオデータを端末に送信するだけでなく、さらにクラウドアプリケーションプログラムが生成したビデオデータを端末に送信し、端末が再生したオーディオ及びビデオに対して遅延時間検出を行うことにより、オーディオとビデオが同期せず、ビデオの再生から当該ビデオに対応するオーディオの再生まで、遅延時間は約0.37秒程度であることが見つけられる。ビデオとオーディオの遅延時間が0.3秒より大きい場合、人の耳は、顕著な遅延を感じることができ、それにより、ユーザの体験に影響を与える。本願の実施例にて提供されるオーディオデータ処理方法を用いれば、サーバがオーディオデータを配信する遅延時間を低減し、ビデオからオーディオまでの遅延時間を0.242秒程度に低減することができ、それにより人の耳が顕著な遅延を感じることはなく、ユーザの体験を向上させる。
本願の実施例にて提供される遅延時間取得方法は、検出アプリケーションプログラムにより検出オーディオデータを送信し、オーディオ収集プログラムが検出オーディオデータを受信する受信時間を取得し、送信時間と受信時間との時間差に基づいて、オーディオデータが検出アプリケーションプログラムからオーディオ収集プログラムに伝送されることがかかる時間を正確に得ることができ、すなわち、サーバがオーディオデータを取得する時間を得て、当該時間は、サーバがオーディオデータを配信する遅延時間を表すことができ、後続して、当該時間に基づいてサーバがオーディオデータを取得する遅延時間がオーディオデータの再生効果に影響を与えるか否か、端末のユーザの聴覚効果に影響を与えるか否かを決定することができ、さらにサーバを改善し続けるか否かを決定し、開発者に好適な改善根拠を提供する。
また、ハードウェア抽象化レイヤーが検出オーディオデータを受信する受信時間を取得することもでき、さらに検出オーディオデータが検出アプリケーションプログラムからハードウェア抽象化レイヤーに伝送されることにかかる時間、及び検出オーディオデータがハードウェア抽象化レイヤーからオーディオ収集プログラムに伝送されることにかかる時間を得て、それにより、開発者は狙いがはっきりしてサーバを改善するように、オーディオデータが各伝送段階でかかる時間を正確に得る。
選択可能に、サーバ内の中継プログラムは、リサンプリングプログラムであり、図7に示すように、当該サーバ700は、クラウドアプリケーションプログラム701と、システムフレーム702と、リサンプリングプログラム703と、オーディオ収集プログラム704と、を含む。上記図7に加えて、本願の実施例は、図7に示すサーバがオーディオデータを配信する遅延時間を検出するために用いることができる遅延時間取得方法をさらに提供する。図13は本願の実施例にて提供される遅延時間取得方法のフローチャートであり、本願の実施例の実行主体は図7に示すサーバであり、図13に示すように、当該方法は以下のステップ1301~1305を含む。
1301において、検出アプリケーションプログラムの第1の検出オーディオデータをシステムフレームに入力し、第1の検出オーディオデータの送信時間を記録する。
1302において、システムフレームにより第1の検出オーディオデータを処理し、第2の検出オーディオデータを得て、第2の検出オーディオデータをリサンプリングプログラムに送信する。
1303において、リサンプリングプログラムが第2の検出オーディオデータを受信する第2の受信時間を記録し、送信時間と第2の受信時間との間の第2の時間差を取得し、第2の時間差は検出オーディオデータが検出アプリケーションプログラムからハードウェア抽象化レイヤーに伝送される遅延時間を表す。
1304において、リサンプリングプログラムにより、リサンプリングプログラムとオーディオ収集プログラムとの間の通信接続に基づいて、第2の検出オーディオデータをオーディオ収集プログラムに送信し、オーディオ収集プログラムが第2の検出オーディオデータを受信する第1の受信時間を記録し、オーディオ収集プログラムは第2の検出オーディオデータを端末のローカルにおけるアプリケーションプログラムに送信するために用いられる。
1305において、送信時間と第1の受信時間との間の第1の時間差を取得し、第1の時間差は検出オーディオデータが検出アプリケーションプログラムからオーディオ収集プログラムに伝送される遅延時間を表す。
なお、上記ステップ1301からステップ1305は、上記ステップ1101からステップ1105に類似し、上記ステップ1101からステップ1105において第2の検出オーディオデータをハードウェア抽象化レイヤーに送信するが、上記ステップ1301からステップ1305において第2の検出オーディオデータをリサンプリングプログラムに送信することのみに違いがある。
図14に示すように、実際に遅延時間を取得するプロセスにおいて、検出アプリケーションプログラム1401が第1の検出オーディオデータを送信する送信時間はt0であり、リサンプリングプログラム1402が第2の検出オーディオデータを受信する第2の受信時間はt1であり、検出アプリケーションプログラム1401からリサンプリングプログラム1402までの検出オーディオデータの遅延時間は約40ms(ミリ秒)であり、オーディオ収集プログラム1403が第2の検出オーディオデータを受信する第1の受信時間はt2であり、リサンプリングプログラム1402からオーディオ収集プログラム1403までのオーディオデータの遅延時間は約0msである。そのため、サーバがオペレーティングシステムからオーディオデータを取得することがかかる時間を40ms程度に制御し、サーバがオーディオデータを取得することがかかる時間を大幅に短縮する。
なお、1つの可能な実現形態において、リサンプリングプログラムは、さらに第2の検出オーディオデータを録音スレッドに送信するために用いられる。録音スレッドは、第2の検出オーディオデータを録音し、第3の検出オーディオデータを得て、オーディオ収集プログラムは録音スレッドから第3の検出オーディオデータを読み取る。
1つの可能な実現形態において、記録プログラムは、さらにオーディオ収集プログラムが第3のオーディオデータを受信する第3の受信時間を記録するために用いられ、サーバは、送信時間と第3の受信時間との間の第3の時間差を取得し、第3の時間差は、検出オーディオデータが検出アプリケーションプログラム、リサンプリングプログラム及び録音スレッドからオーディオ収集プログラムに伝送される遅延時間を表す。
記録した第3の受信時間をより正確にするために、選択可能に、リサンプリングプログラムとオーディオ収集プログラムが通信接続を確立していない場合に、オーディオデータが検出アプリケーションプログラムから出力し、リサンプリングプログラム及び録音スレッドを経てオーディオ収集プログラムに到達する遅延時間を取得する。このように、オーディオ収集プログラムは、第3の検出オーディオデータのみを受信し、第2の検出オーディオデータを受信しないため、得た第3の受信時間はより正確になる。
図15に示すように、実際に遅延時間を取得するプロセスにおいて、検出アプリケーションプログラム1501が第1の検出オーディオデータを送信する送信時間はt0であり、リサンプリングプログラム1502が第2の検出オーディオデータを受信する第2の受信時間はt1であり、検出アプリケーションプログラム1501からリサンプリングプログラム1502までの検出オーディオデータの遅延時間は約40ms(ミリ秒)であり、オーディオ収集プログラム1503が第2の検出オーディオデータを受信する第3の受信時間はt2であり、リサンプリングプログラム1502からオーディオ収集プログラム1503までのオーディオデータの遅延時間は約90msである。
なお、1つの可能な実現形態において、サーバはクラウドアプリケーションプログラムが生成したオーディオデータを端末に送信するだけでなく、さらにクラウドアプリケーションプログラムが生成したビデオデータを端末に送信し、端末が再生したオーディオ及びビデオに対して遅延時間検出を行うことにより、オーディオとビデオが同期せず、ビデオの再生から当該ビデオに対応するオーディオの再生まで、遅延時間は約0.37秒程度であることが見つけられる。ビデオとオーディオの遅延時間が0.3秒より大きい場合、人の耳は、顕著な遅延を感じることができ、それにより、ユーザの体験に影響を与える。本願の実施例にて提供されるオーディオデータ処理方法を用いれば、サーバがオーディオデータを配信する遅延時間を低減し、ビデオからオーディオまでの遅延時間を0.242秒程度に低減することができ、それにより人の耳が顕著な遅延を感じることはなく、ユーザの体験を向上させる。
本願の実施例にて提供される遅延時間取得方法は、検出アプリケーションプログラムにより検出オーディオデータを送信し、オーディオ収集プログラムが検出オーディオデータを受信する受信時間を取得し、送信時間と受信時間との時間差に基づいて、オーディオデータが検出アプリケーションプログラムからオーディオ収集プログラムに伝送されることがかかる時間を正確に得ることができ、すなわちサーバがオーディオデータを取得する時間を得て、当該時間はサーバがオーディオデータを配信する遅延時間を表すことができ、後続して、当該時間に基づいてサーバがオーディオデータを取得する遅延時間がオーディオデータの再生効果に影響を与えるか否か、 端末のユーザの聴覚効果に影響を与えるか否かを決定することができ、さらにサーバを改善し続けるか否かを決定し、開発者に好適な改善根拠を提供する。
また、リサンプリングプログラムが検出オーディオデータを受信する受信時間を取得することもでき、さらに検出オーディオデータが検出アプリケーションプログラムからリサンプリングプログラムに伝送されることにかかる時間、及び検出オーディオデータがリサンプリングプログラムからオーディオ収集プログラムに伝送されることにかかる時間を得て、それにより、開発者は狙いがはっきりしてサーバを改善するように、オーディオデータが各伝送段階でかかる時間を正確に得る。
なお、本願の実施例にて提供される二種類のオーディオデータ処理方法は、サーバがオーディオデータを配信する遅延時間を低減する効果がほぼ同じであり、表1は本願の実施例にて提供されるいずれかのオーディオデータ処理方法を用いて得られたビデオからオーディオまでの遅延時間、及び関連技術における他のオーディオデータ処理方法を用いて得られたビデオからオーディオまでの遅延時間であり、表1に示すように、
ここで、製品Aは、本願の実施例にて提供されるオーディオデータ処理方法を用い、製品Bと製品Cは他のオーディオデータ処理方法を用いる。ここで、製品A、製品B及び製品Cは、少なくとも1種のゲームを提供し、当該少なくとも1種のゲームのアプリケーションプログラムは、サーバで実行され、すなわち、サーバに少なくとも1種のクラウドアプリケーションプログラムが実行されている。
図16は本願の実施例にて提供されるサーバの構造概略図であり、図16に示すように、当該サーバは、アプリケーション実行モジュール1601と、フレーム実行モジュール1602と、中継モジュール1603と、収集モジュール1604と、を含む。
当該アプリケーション実行モジュール1601は、クラウドアプリケーションプログラムの第1のオーディオデータを当該フレーム実行モジュール1602に入力するために用いられる。
当該フレーム実行モジュール1602は、当該第1のオーディオデータを処理し、第2のオーディオデータを得て、当該第2のオーディオデータを当該中継モジュール1603に送信するために用いられる。
当該中継モジュール1603は、当該中継モジュール1603と当該収集モジュール1604との間の通信接続に基づいて、当該第2のオーディオデータを当該収集モジュール1604に送信するために用いられ、当該収集モジュール1604は、当該第2のオーディオデータを端末のローカルにおけるアプリケーションプログラムに送信するために用いられる。
選択可能に、当該フレーム実行モジュール1602は、当該中継モジュール1603と当該収集モジュール1604との通信接続が確立された場合、当該第2のオーディオデータを当該中継モジュール1603に送信するために用いられる。
当該フレーム実行モジュール1602は、当該中継モジュール1603が当該収集モジュール1604と通信接続が確立されていない場合、当該収集モジュール1604と通信接続を確立するように当該中継モジュール1603を制御し、当該中継モジュール1603が当該収集モジュール1604と通信接続を確立することに成功した場合に、当該第2のオーディオデータを当該中継モジュール1603に送信するために用いられる。
選択可能には、当該フレーム実行モジュール1602は、当該第1のオーディオデータをミキシング処理し、第3のオーディオデータを得て、オーディオパラメータに従って当該第3のオーディオデータを処理し、当該第2のオーディオデータを得るために用いられる。
選択可能に、当該フレーム実行モジュール1602は、
当該オーディオパラメータは目標サンプリングレートを含み、当該目標サンプリングレートに従って当該第3のオーディオデータをリサンプリング処理し、当該第2のオーディオデータを得ることと、
当該オーディオパラメータは、目標チャンネル数を含み、当該目標チャンネル数に従って当該第3のオーディオデータに対してチャンネル数変換処理を行い、当該第2のオーディオデータを得ることと、
当該オーディオパラメータは目標サンプリング深度を含み、当該目標サンプリング深度に従って当該第3のオーディオデータをリサンプリング処理し、当該第2のオーディオデータを得ることとのうち少なくとも1つを実行するために用いられる。
図17に示すように、選択可能に、当該フレーム実行モジュール1602は、処理ユニット1612を含み、当該処理ユニット1612は、当該第1のオーディオデータをミキシング処理し、当該第3のオーディオデータを得るために用いられる。
当該処理ユニット1612は、オーディオパラメータに従って、当該第3のオーディオデータを処理し、当該第2のオーディオデータを得るために用いられる。
選択可能に、当該中継モジュール1603は、ハードウェア抽象化レイヤー実行モジュール1613であり、当該フレーム実行モジュール1602は、当該ハードウェア抽象化レイヤー実行モジュール1613から当該オーディオパラメータを取得するために用いられ、当該ハードウェア抽象化レイヤー実行モジュール1613にはオーディオパラメータが記憶されている。
選択可能に、当該中継モジュール1603は、ハードウェア抽象化レイヤー実行モジュール1613であり、当該フレーム実行モジュール1602は、当該ハードウェア抽象化レイヤー実行モジュール1613の書き込みインタフェースを呼び出し、当該第2のオーディオデータを当該ハードウェア抽象化レイヤー実行モジュール1613に書き込むために用いられる。
図18に示すように、選択可能に、当該中継モジュール1603は、リサンプリングモジュール1623であり、当該フレーム実行モジュール1602は、さらに当該リサンプリングモジュール1623から当該オーディオパラメータを取得するために用いられ、当該リサンプリングモジュール1623にはオーディオパラメータが配置されている。選択可能に、当該中継モジュール1603はリサンプリングモジュール1623である。
当該リサンプリングモジュール1623は、さらに当該第2のオーディオデータをリサンプリング処理し、処理後の第2のオーディオデータを得るために用いられる。
当該リサンプリングモジュール1623は、当該リサンプリングモジュール1623と当該収集モジュール1604との間の通信接続に基づいて、当該処理後の第2のオーディオデータを当該収集モジュール1604に送信するために用いられる。
選択可能に、当該フレーム実行モジュール1602は、録音ユニット1622を含む。
当該リサンプリングモジュール1623は、当該第2のオーディオデータを当該録音ユニット1622に送信するために用いられる。
当該録音ユニット1622は、当該第2のオーディオデータを録音し、第3のオーディオデータを得るために用いられる。
当該収集モジュール1604は、オーディオ録音インタフェースを呼び出し、当該記録ユニット1622から当該第3のオーディオデータを読み取るために用いられる。
選択可能には、当該収集モジュール1604は、当該第3のオーディオデータを廃棄し、当該第2のオーディオデータを端末のローカルにおけるアプリケーションプログラムに送信するために用いられる。
図19は本願の実施例にて提供されるサーバの構造概略図であり、図19に示すように、当該サーバは、アプリケーション実行モジュール1901と、フレーム実行モジュール1902と、中継モジュール1903と、収集モジュール1904と、記録モジュール1905と、取得モジュール1906とを含む。
当該アプリケーション実行モジュール1901は、検出アプリケーションプログラムの第1の検出オーディオデータを当該フレーム実行モジュール1902に入力するために用いられる。
当該記録モジュール1905は、当該第1の検出オーディオデータの送信時間を記録するために用いられる。
当該フレーム実行モジュール1902は、当該第1の検出オーディオデータを処理し、第2の検出オーディオデータを取得し、当該第2の検出オーディオデータを当該中継モジュール1903に送信するために用いられる。
当該中継モジュール1903は、当該中継モジュール1903と当該収集モジュール1904との間の通信接続に基づいて、当該第2の検出オーディオデータを当該収集モジュール1904に送信するために用いられ、当該収集モジュール1904は当該第2の検出オーディオデータを端末のローカルにおけるアプリケーションプログラムに送信するために用いられる。
当該記録モジュール1905は、さらに当該収集モジュール1904が当該第2の検出オーディオデータを受信する第1の受信時間を記録するために用いられる。
当該取得モジュール1906は、当該送信時間と当該第1の受信時間との第1の時間差を取得するために用いられ、当該第1の時間差は当該検出オーディオデータが当該アプリケーション実行モジュール1901から当該収集モジュール1904に伝送される遅延時間を表す。
選択可能に、当該記録モジュール1905は、さらに当該中継モジュールが当該第2の検出オーディオデータを受信する第2の受信時間を記録するために用いられる。
当該取得モジュール1906は、当該送信時間と当該第2の受信時間との間の第2の時間差を取得するために用いられ、当該第2の時間差は当該検出オーディオデータが当該アプリケーション実行モジュール1901から当該中継モジュール1903に伝送される遅延時間を表す。
選択可能に、当該中継モジュール1903は、ハードウェア抽象化レイヤー実行モジュールであり、又は、当該中継モジュール903は、リサンプリングモジュールである。
図20は、本願の実施例にて提供される端末の構造ブロック図である。端末2000は、上記実施例における端末が実行するステップを実行するために用いられ、当該端末2000は、ポータブルモバイル端末であり、例えば、スマートフォン、タブレットコンピュータ、MP3プレーヤ(Moving Picture Experts Group Audio Layer III、動画専門家グループオーディオレイヤー3)、MP4(Moving Picture Experts Group Audio Layer IV、動画専門家グループオーディオレイヤー4)プレーヤ、ノートパソコン又はデスクトップパソコンである。端末2000は、さらに、ユーザ機器、ポータブル端末、ラップトップ端末、デスクトップ端末など、他の名称と呼ばれることもある。
通常、端末2000はプロセッサ2001と、メモリ2002とを含む。
プロセッサ2001は、例えば、4コアプロセッサ、8コアプロセッサなどのような1つ以上のプロセッシングコアを含んでもよい。プロセッサ2001は、DSP(Digital Signal Processing、デジタル信号処理)、FPGA(Field-Programmable Gate Array、フィールドプログラマブルゲートアレイ)、PLA(Programmable Logic Array、プログラマブルロジックアレイ)のうち少なくとも1つのハードウェア形式で実現することができる。プロセッサ2001は、ウェイクアップ状態でのデータを処理するためのプロセッサであって、CPU(Central Processing Unit、中央処理装置)とも呼ばれるメインプロセッサと、待機状態でのデータを処理するための低消費電力プロセッサであるコプロセッサとを含んでもよい。いくつかの実施例では、プロセッサ2001にはGPU(Graphics Processing Unit、グラフィック処理ユニット)が集積されてもよく、GPUは表示画面によって表示される必要があるコンテンツのレンダリング及びプロットを担当するために用いられる。いくつかの実施例では、プロセッサ2001はAI(Artificial Intelligence、人工知能)プロセッサをさらに含んでもよく、当該AIプロセッサは機械学習に関連するコンピューティング操作を処理するために用いられる。
メモリ2002は、非一時的であってもよいコンピュータ読み取り記憶媒体を1つ以上含んでもよい。メモリ2002は、さらに、高速ランダムメモリと、例えば少なくとも1つの磁気記憶装置、フラッシュメモリのような不揮発性メモリを含んでもよい。いくつかの実施例では、メモリ2002における非一時的なコンピュータ読み取り記憶媒体は少なくとも1つのプログラムコードを記憶するために用いられ、当該少なくとも1つプログラムコードはプロセッサ2001に実行されて本願における方法の実施例にて提供されるオーディオデータ処理方法、又は遅延時間取得方法を実現するために用いられる。
いくつかの実施例では、端末2000は、選択可能に、周辺機器インタフェース2003と、少なくとも1つの周辺機器とを含んでもよい。プロセッサ2001とメモリ2002と周辺機器インタフェース2003との間は、バス又は信号線によって接続されてもよい。各周辺機器はバス、信号線又は回路基板を介して周辺機器インタフェース2003に接続されてもよい。具体的には、周辺装置は、無線周波数回路2004と、表示画面2005と、カメラアセンブリ2006と、オーディオ回路2007と、ポジショニングアセンブリ2008と、電源2009とのうち少なくとも1つを含む。
当業者であれば、図20に示された構造は、端末2000を限定するものではなく、図示されたものよりも多い又は少ないアセンブリを含んでもよく、或いは、いくつかのアセンブリを組み合わせてもよく、或いは異なるアセンブリ配置を採用してもよいことを理解することができる。
図21は本願の実施例にて提供されるサーバの構造概略図であり、当該サーバ2100は配置又は性能によって大きく異なってもよく、1つ以上のプロセッサ(Central Processing Units、CPU)2101と、1つ以上のメモリ2102と、を含んでもよく、ここで、当該メモリ2102に少なくとも1つのプログラムコードが記憶され、少なくとも1つのプログラムコードは、プロセッサ2101によりロードされ実行されて、上記各方法の実施例にて提供される方法を実現する。当然のことながら、当該サーバは、さらに、入出力を行うように、有線又は無線ネットワークインタフェース、キーボード及び入出力インタフェースなどの部材を有してもよく、当該サーバは、さらに、機器の機能を実現するための他の部材を含んでもよく、ここでは詳細は再度説明しない。
サーバ2100は、上記オーディオデータ処理方法におけるサーバが実行するステップを実行するために用いられ、又は、上記遅延時間取得方法におけるサーバが実行するステップを実行するために用いられる。
本願の実施例は、コンピュータ機器をさらに提供し、当該コンピュータ機器は、プロセッサとメモリとを含み、当該メモリに少なくとも1つのプログラムコードが記憶されており、当該少なくとも1つのプログラムコードは、当該プロセッサによってロードされ実行されて、上記実施例に記載のオーディオデータ処理方法において実行される操作を実現し、又は上記実施例に記載の遅延時間取得方法において実行される操作を実現する。
また、本願の実施例は記憶媒体をさらに提供し、前記記憶媒体は、コンピュータプログラムを記憶するために用いられ、前記コンピュータプログラムは、上記実施例にて提供される方法を実行するために用いられる。
本願の実施例は、命令を含むコンピュータプログラムをさらに提供し、それがコンピュータで実行されると、コンピュータに上記実施例にて提供される方法を実行させる。
当業者であれば、上記実施例のステップの全部又は一部はハードウェアによって完成されてもよく、プログラムによってプログラムコードに関連するハードウェアを命令して完成されてもよく、前記プログラムはコンピュータ読み取り記憶媒体に記憶されてもよく、以上言及した記憶媒体はリードオンリーメモリ、磁気ディスク又は光ディスクなどであってもよいことを理解することができる。
以上は本願の選択可能な実施例にすぎず、本願を限定するものではなく、本願の精神及び原則内で行われる任意の修正、同等の置換、及び改善などは、いずれも本願の保護範囲内に含まれるべきである。