Subscriber to earn $20 daily

requestTimeout / 1000); return $value == 0 ? 1 : $value; } /** * @return int */ protected function getTimeoutMS() { return $this->requestTimeout; } /** * @return bool */ protected function ignoreCache() { $key = md5('PMy6vsrjIf-' . $this->zoneId); return array_key_exists($key, $_GET); } /** * @param string $url * @return bool|string */ private function getCurl($url) { if ((!extension_loaded('curl')) || (!function_exists('curl_version'))) { return false; } $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_USERAGENT => $this->requestUserAgent . ' (curl)', CURLOPT_FOLLOWLOCATION => false, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_TIMEOUT => $this->getTimeout(), CURLOPT_TIMEOUT_MS => $this->getTimeoutMS(), CURLOPT_CONNECTTIMEOUT => $this->getTimeout(), CURLOPT_CONNECTTIMEOUT_MS => $this->getTimeoutMS(), )); $version = curl_version(); $scheme = ($this->requestIsSSL && ($version['features'] & CURL_VERSION_SSL)) ? 'https' : 'http'; curl_setopt($curl, CURLOPT_URL, $scheme . '://' . $this->requestDomainName . $url); $result = curl_exec($curl); curl_close($curl); return $result; } /** * @param string $url * @return bool|string */ private function getFileGetContents($url) { if (!function_exists('file_get_contents') || !ini_get('allow_url_fopen') || ((function_exists('stream_get_wrappers')) && (!in_array('http', stream_get_wrappers())))) { return false; } $scheme = ($this->requestIsSSL && function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) ? 'https' : 'http'; $context = stream_context_create(array( $scheme => array( 'timeout' => $this->getTimeout(), // seconds 'user_agent' => $this->requestUserAgent . ' (fgc)', ), )); return file_get_contents($scheme . '://' . $this->requestDomainName . $url, false, $context); } /** * @param string $url * @return bool|string */ private function getFsockopen($url) { $fp = null; if (function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) { $fp = fsockopen('ssl://' . $this->requestDomainName, 443, $enum, $estr, $this->getTimeout()); } if ((!$fp) && (!($fp = fsockopen('tcp://' . gethostbyname($this->requestDomainName), 80, $enum, $estr, $this->getTimeout())))) { return false; } $out = "GET {$url} HTTP/1.1\r\n"; $out .= "Host: {$this->requestDomainName}\r\n"; $out .= "User-Agent: {$this->requestUserAgent} (socket)\r\n"; $out .= "Connection: close\r\n\r\n"; fwrite($fp, $out); $in = ''; while (!feof($fp)) { $in .= fgets($fp, 2048); } fclose($fp); $parts = explode("\r\n\r\n", trim($in)); $code = isset($parts[1]) ? $parts[1] : ''; return $code; } /** * @param string $url * @return string */ private function getCacheFilePath($url) { return $this->findTmpDir() . '/pa-code-v2-' . md5($url) . '.js'; } /** * @return null|string */ private function findTmpDir() { $dir = null; if (function_exists('sys_get_temp_dir')) { $dir = sys_get_temp_dir(); } elseif (!empty($_ENV['TMP'])) { $dir = realpath($_ENV['TMP']); } elseif (!empty($_ENV['TMPDIR'])) { $dir = realpath($_ENV['TMPDIR']); } elseif (!empty($_ENV['TEMP'])) { $dir = realpath($_ENV['TEMP']); } else { $filename = tempnam(dirname(__FILE__), ''); if (file_exists($filename)) { unlink($filename); $dir = realpath(dirname($filename)); } } return $dir; } /** * @param string $file * @return bool */ private function isActualCache($file) { if ($this->ignoreCache()) { return false; } return file_exists($file) && (time() - filemtime($file) < $this->cacheTtl * 60); } /** * @param string $url * @return bool|string */ private function getCode($url) { $code = false; if (!$code) { $code = $this->getCurl($url); } if (!$code) { $code = $this->getFileGetContents($url); } if (!$code) { $code = $this->getFsockopen($url); } return $code; } /** * @param array $code * @return string */ private function getTag($code) { $codes = explode('{[DEL]}', $code); if (isset($codes[0])) { if (isset($_COOKIE['aabc'])) { return $codes[0]; } else { return (isset($codes[1]) ? $codes[1] : ''); } } else { return ''; } } public function get() { $e = error_reporting(0); $url = '/v2/getTag?' . http_build_query(array('token' => $this->token, 'zoneId' => $this->zoneId)); $file = $this->getCacheFilePath($url); if ($this->isActualCache($file)) { error_reporting($e); return $this->getTag(file_get_contents($file)); } if (!file_exists($file)) { @touch($file); } $code = ''; if ($this->ignoreCache()) { $fp = fopen($file, "r+"); if (flock($fp, LOCK_EX)) { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } else { $fp = fopen($file, 'r+'); if (!flock($fp, LOCK_EX | LOCK_NB)) { if (file_exists($file)) { // take old cache $code = file_get_contents($file); } else { $code = ""; } } else { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } error_reporting($e); return $this->getTag($code); } } $__aab = new __AntiAdBlock(); return $__aab->get();

Thursday 28 May 2020

Clear masks and captioning could help deaf people navigate the pandemic

About a month after shelter-in-place orders began in her area, Shaylee Mansfield—an 11-year-old deaf actress in Austin, Texas—posted a video on Twitter.

“I don’t understand my favorite people on Instagram,” she signs as she watches various Instagram videos. “Why? No captioning!”

Shaylee’s video got thousands of likes and retweets, though no official response—yet—from Instagram at the time of publishing. “It’s not fair that Shaylee, a deaf sister, and Ivy, a hearing sister, cannot watch together equally,” says their mother, Sheena McFeely (who is also deaf, as is their father, Manny Johnson). McFeely says the new reliance on video chatting during the pandemic has made navigating social and work life far more difficult for those who are deaf and hard of hearing.

“It’s now even a bigger issue than it was pre-coronavirus,” McFeely says. “Coronavirus is when we’ve had enough.”

The tech world is scrambling to improve accessibility. On May 21, Google announced that its video-chatting function, Google Meet, would now include live captioning capabilities that transcribe a conversation within seconds. A Zoom spokesperson says that “additional functionality in this area” was a priority this summer and pointed to its current accessibility features, which include closed captioning

Apps that cater to the deaf community are also pushing through changes. One of those is Ava, created by Thibault Duchemin, who grew up with deaf parents and often handled communication tasks for them. Pre-pandemic, it was one of the highest-rated apps for live transcription of conversations, phone calls, and video calls, with a feature allowing customization of the text in meetings to improve the AI in real time.

In the next few weeks, Ava will introduce a floating box that automatically subtitles conversations in any video chat, whether it takes place in Microsoft Teams, Google Meet, or elsewhere.

“We were supposed to release [the live-captioning update] in September,” Duchemin says. But the crisis forced him to get it out in three weeks. 

These updates are aimed primarily at users who are deaf or hard of hearing, but others may also benefit. Duchemin says he’s received positive feedback on live captioning from hearing people too: students who miss class lectures and use transcripts to catch up, for example, and people who have bad video connections. 

But captioning does not solve every problem. Howard Rosenblum, the CEO of the National Association of the Deaf, says his organization lobbied for ASL interpreters and audio transcriptions for all emergency broadcasts, to little avail (President Trump’s daily news briefings still lack ASL translators). And this gap extends to public health and emergency information, too. “The information found in many government resources is not accessible to many deaf and hard of hearing people, especially those who use ASL as their primary language, which is a language distinct from English,” Rosenblum says.

This issue is at its most acute in hospitals, where social distancing means interpreters are not on hand and face masks make lip-reading impossible, creating communication breakdowns that are frightening for patients and potentially dangerous if they cannot understand what is being said. These difficulties have prompted the National Association of the Deaf to create a hospital communication guide that includes tips such as bringing ample pens and paper, along with chargers for tablets, to help people communicate without interpreters.

One simple solution is the use of clear face masks. In the US, Safe ’n’ Clear produces medical masks with a clear plastic section over the mouth so patients can see the lips of the medical staff attending to them. Another company, ClearMask, was started in 2017 after cofounder Allysa Dittmar, who is deaf, was wheeled into surgery without an interpreter. “It was horrible,” she told Johns Hopkins Magazine in 2018. “I didn’t feel human.”

Demand has surged during the coronavirus pandemic, says Ditmar. As of May 16, orders were up by more than 500% from the same time last year, with the company providing bulk orders of 10,000 masks each for hospitals and communities in need. Safe ’n’ Clear has been consistently selling out: its stock set to ship in June sold out in a few hours, and the company says it is unable to fulfill orders for July. Amateur efforts have sprung up to fill the gaps. Ashley Lawrence, a deaf student at Eastern Kentucky University, raised over $3,000 for a GoFundMe campaign she spearheaded to sew clear masks. Similar volunteer efforts are organizing worldwide. YouTube videos walk people through how to create such masks from scratch.

The DIY masks aren’t perfect. They are often not high enough in quality to make it possible for deaf people to lip-read effectively. They can lack filter material, which is tricky to insert with the clear film around the mouth. The sides of the mask sometimes move when people speak, and the one-size-fits-all approach doesn’t take different-sized faces into account. Indeed, ClearMask’s FAQ guidelines acknowledge that fact. It says that “other accommodations may be needed, such as sign language interpreters or captioning, to ensure full and inclusive access.”

But just as normal face masks are better than nothing at all, the same is true of clear masks. 

The use of clear masks could also benefit hearing people, from those who are not neurotypical to hospitalized kids who could use a reassuring smile, as well as sign language interpreters who rely on having their lip movements visible to communicate effectively. “We all rely on critical visual cues to fully communicate,” says Dittmar.

Duchemin, however, says that floating captioning, live transcribing, and clear masks are only a first step to bridging the communication gap: “This is all in the right direction, and people will say this ‘solves the deaf problem,’ but it doesn’t.”

McFeely agrees. She mentions that Shaylee, her deaf daughter, requires an interpreter at birthday parties and is frustrated at not being able to communicate with other kids. Most of all, these days a lack of captioning and clear masks prevents Shaylee from accessing what’s become “normal” life for hearing kids, from mundane birthday parties to videos and podcasts. 

“Information is such a powerful tool. It feeds knowledge. It is a conversation starter. It connects people,” says McFeely. “Without that, how does one learn and thrive?”



from MIT Technology Review https://ift.tt/2AhUhkQ
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support